~ubuntu-branches/ubuntu/intrepid/tcm/intrepid

« back to all changes in this revision

Viewing changes to src/sd/bv/adsmcoutput.y

  • Committer: Bazaar Package Importer
  • Author(s): Otavio Salvador
  • Date: 2003-07-03 20:08:21 UTC
  • Revision ID: james.westby@ubuntu.com-20030703200821-se4xtqx25e5miczi
Tags: upstream-2.20
ImportĀ upstreamĀ versionĀ 2.20

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
%{
 
2
 
 
3
#include "adsmcoutputparse.h"
 
4
 
 
5
 
 
6
 
 
7
  /*
 
8
typedef char *CHAR_PTR;
 
9
#define YYSTYPE CHAR_PTR
 
10
#define YYDEBUG 1
 
11
  */
 
12
 
 
13
int mctraceindex;
 
14
 int mctrace[100];
 
15
 int mcfeedback;
 
16
 
 
17
 int enabledindex;
 
18
 int enabledhyperedge[2000];
 
19
 int enabledstatenumber[2000];
 
20
 char *sourcename[2000];  /* name of source */
 
21
 char *targetname[2000];    /* name of target */
 
22
 int sourcestatenumber[2000];
 
23
 int targetstatenumber[2000]; /* what statecounter does sourcestatenumber[i] belong to?*/
 
24
 int statecounter;
 
25
 int sourceindex, targetindex;
 
26
%}
 
27
 
 
28
 
 
29
%union  {
 
30
  char *str_ptr;
 
31
}  
 
32
 
 
33
/* BISON Declarations */
 
34
%token IQ QUOTE COMMENT COUNTER  HASH ISZERO ISONE STATE NL ARROW
 
35
%token <str_ptr> STRING ENABLED IN
 
36
 
 
37
/* Grammar follows */
 
38
%%
 
39
input:  line 
 
40
;
 
41
 
 
42
line:  start middle end ;
 
43
 
 
44
 
 
45
 
 
46
 
 
47
arrowstringseq: STRING arrowstringseq {}
 
48
| ISONE arrowstringseq 
 
49
| ISZERO arrowstringseq 
 
50
| ARROW arrowstringseq
 
51
|
 
52
;
 
53
 
 
54
stringseq: STRING stringseq {}
 
55
| ISONE stringseq 
 
56
| ISZERO stringseq 
 
57
|
 
58
;
 
59
 
 
60
stringlines: stringseq NL stringlines |
 
61
;
 
62
 
 
63
 
 
64
start: stringlines COMMENT arrowstringseq NL
 
65
;
 
66
 
 
67
middle:  middle1 middle2 {mcfeedback=1;}
 
68
|{mcfeedback=0;}
 
69
;
 
70
 
 
71
middle1: COMMENT stringseq NL  /* "as demonstrated by */ 
 
72
;
 
73
 
 
74
middle2: feedback middle4 | feedback
 
75
;
 
76
 
 
77
 
 
78
middle4: COMMENT loop COMMENT NL feedback
 
79
| middle4 COMMENT loop COMMENT NL feedback
 
80
;
 
81
 
 
82
 
 
83
 
 
84
 
 
85
feedback:  enabledfeedback {}
 
86
;
 
87
 
 
88
 
 
89
 
 
90
enabledfeedback: stateseq enabledfeedback2 enabledfeedback {
 
91
statecounter++;}
 
92
|
 
93
/*| enabledfeedback  stateseq enabledfeedback2
 
94
  { statecounter++;}*/
 
95
;
 
96
 
 
97
stateseq:  ARROW state STRING STRING NL {} /* "-> State 1.1 <-" */
 
98
;
 
99
 
 
100
state : STATE 
 
101
;
 
102
 
 
103
 
 
104
enabledfeedback2 :    enabledfeedbackatom enabledfeedback2 
 
105
|
 
106
;
 
107
 
 
108
enabledfeedbackatom: STRING ENABLED NL 
 
109
{
 
110
  int i=3; /* STRING starts with "HE_" */
 
111
  char temp[5];
 
112
  while ($1[i]!='-'){
 
113
    temp[i-3]=$1[i];
 
114
    i++;
 
115
  }
 
116
  temp[i-3]='\0';
 
117
  enabledhyperedge[enabledindex]  = atoi(temp);
 
118
  enabledstatenumber[enabledindex]= statecounter ;
 
119
  enabledindex++;
 
120
 
 
121
}
 
122
|    STRING ISZERO /*NL  potential source node */
 
123
{
 
124
  char temp[100];
 
125
  int len;
 
126
  strcpy(temp,$1);
 
127
  len=strcspn(temp,"=\r\n");
 
128
  /* printf("name\t%d\t%s\n",len,temp);*/
 
129
  sourcename[sourceindex]= (char *)malloc(len+1);
 
130
  strncpy(sourcename[sourceindex],temp,len);  
 
131
  sourcename[sourceindex][len]='\0';
 
132
  sourcestatenumber[sourceindex]=statecounter;
 
133
  sourceindex++;
 
134
}
 
135
|    STRING ISONE /* NL   potential target node */
 
136
{
 
137
  char temp[100];
 
138
  int len;
 
139
  strcpy(temp,$1);
 
140
  len=strcspn(temp," =\r\n");
 
141
  /*  printf("name\t%d\t%s\n",len,temp);*/
 
142
  targetname[targetindex]= (char *)malloc(len+1);
 
143
  strncpy(targetname[targetindex],temp,len);  
 
144
  targetname[targetindex][len]='\0';
 
145
  targetstatenumber[targetindex]=statecounter;
 
146
  targetindex++;
 
147
}
 
148
|  STRING STRING ISZERO  {}
 
149
|  STRING STRING ISONE {}
 
150
/* |  STRING STRING STRING STRING NL {}*/
 
151
| ENABLED NL {}
 
152
| NL {}
 
153
| COUNTER STRING NL
 
154
       { 
 
155
         
 
156
          mctrace[mctraceindex] =atoi($2);
 
157
          mctraceindex++;
 
158
       } 
 
159
;
 
160
 
 
161
 
 
162
hashseq: HASH | hashseq HASH;
 
163
 
 
164
loop: stringseq /* STRING= "loop starts here" */
 
165
;
 
166
 
 
167
 
 
168
end: end1 end2 |
 
169
;
 
170
 
 
171
end1: hashseq NL stringseq commentseq NL stringseq   
 
172
;
 
173
 
 
174
end2: hashseq stringseq commentseq NL stringseq 
 
175
;
 
176
 
 
177
/*
 
178
stringseqnl: stringseqnl NL | NL | stringseq NL | stringseqnl stringseq NL;
 
179
*/
 
180
 
 
181
commentseq: COMMENT commentseq
 
182
| COMMENT
 
183
;
 
184
 
 
185
 
 
186
 
 
187
%%
 
188
 
 
189