3
#include "adsmcoutputparse.h"
8
typedef char *CHAR_PTR;
9
#define YYSTYPE CHAR_PTR
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?*/
25
int sourceindex, targetindex;
33
/* BISON Declarations */
34
%token IQ QUOTE COMMENT COUNTER HASH ISZERO ISONE STATE NL ARROW
35
%token <str_ptr> STRING ENABLED IN
42
line: start middle end ;
47
arrowstringseq: STRING arrowstringseq {}
48
| ISONE arrowstringseq
49
| ISZERO arrowstringseq
50
| ARROW arrowstringseq
54
stringseq: STRING stringseq {}
60
stringlines: stringseq NL stringlines |
64
start: stringlines COMMENT arrowstringseq NL
67
middle: middle1 middle2 {mcfeedback=1;}
71
middle1: COMMENT stringseq NL /* "as demonstrated by */
74
middle2: feedback middle4 | feedback
78
middle4: COMMENT loop COMMENT NL feedback
79
| middle4 COMMENT loop COMMENT NL feedback
85
feedback: enabledfeedback {}
90
enabledfeedback: stateseq enabledfeedback2 enabledfeedback {
93
/*| enabledfeedback stateseq enabledfeedback2
97
stateseq: ARROW state STRING STRING NL {} /* "-> State 1.1 <-" */
104
enabledfeedback2 : enabledfeedbackatom enabledfeedback2
108
enabledfeedbackatom: STRING ENABLED NL
110
int i=3; /* STRING starts with "HE_" */
117
enabledhyperedge[enabledindex] = atoi(temp);
118
enabledstatenumber[enabledindex]= statecounter ;
122
| STRING ISZERO /*NL potential source node */
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;
135
| STRING ISONE /* NL potential target node */
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;
148
| STRING STRING ISZERO {}
149
| STRING STRING ISONE {}
150
/* | STRING STRING STRING STRING NL {}*/
156
mctrace[mctraceindex] =atoi($2);
162
hashseq: HASH | hashseq HASH;
164
loop: stringseq /* STRING= "loop starts here" */
171
end1: hashseq NL stringseq commentseq NL stringseq
174
end2: hashseq stringseq commentseq NL stringseq
178
stringseqnl: stringseqnl NL | NL | stringseq NL | stringseqnl stringseq NL;
181
commentseq: COMMENT commentseq