Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / tas / bck / sdf.l
1 %{
2 #include "bck.h"
3 #include "sdf.tab.h"
4 #include "bck_sdf.h"
5
6 #define ECHO
7 #define YY_NO_UNPUT
8
9 char *strip (char *name)
10 {
11 int i, l ;
12 char *buf ;
13
14 i = l = strlen (name) ;
15 if ((name[l - 1] == ']') && (name[l - 2] != '\\')) {
16 while (name[--i] != '[')
17 if (i == 0)
18 return name ;
19 name[i] = ' ' ;
20 name[l - 1] = '\0' ;
21 }
22
23 buf = (char*)mbkalloc (1024 * sizeof (char)) ;
24
25 i = l = 0 ;
26 while (name[i] != '\0') {
27 if (name[i] != '\\')
28 buf[l++] = name[i] ;
29 i++ ;
30 }
31 buf[l] = '\0' ;
32
33 return buf ;
34 }
35
36 extern int LINE ;
37 ptype_list *ptype ;
38 ht *CASEHT ;
39 char *name ;
40
41 %}
42
43 upalpha [A-Z]
44 lowalpha [a-z]
45 num [0-9]
46 alpha ({upalpha}|{lowalpha})
47 alphanum ({alpha}|{num})
48 dnumber {num}+
49 number (("."{num}+)|({num}+("."{num}+)?))(e[+|-]?{num}+)?
50 rnumber -?(("."{num}+)|({num}+("."{num}+)?))(e[+|-]?{num}+)?
51 qstring \"[^\"\t\n]*\"
52 divider "."|"/"
53 ident ({alpha}|_)({alphanum}|_|(\\.))*("["{num}+"]")?|("["{num}+:{num}+"]")?
54 identifier {ident}({divider}{ident})*
55
56 %x COMMENT
57
58 %%
59 "//".*\n { ECHO ; LINE++ ; }
60 "/*" { ECHO ; BEGIN COMMENT ; }
61 <COMMENT>[^*\n]* { ECHO ; }
62 <COMMENT>"*"+[^*/\n]* { ECHO ; }
63 <COMMENT>\n { ECHO ; LINE++ ; }
64 <COMMENT>"*"+"/" { ECHO ; BEGIN INITIAL ; }
65 \n { ECHO ; LINE++ ; }
66 [ \t] { ECHO ; }
67 DELAYFILE { ECHO ; return (_DELAYFILE) ; }
68 \([ ]*SDFVERSION { ECHO ; return (_SDFVERSION) ; }
69 \([ ]*DESIGN { ECHO ; return (_DESIGN) ; }
70 \([ ]*DATE { ECHO ; return (_DATE) ; }
71 \([ ]*VENDOR { ECHO ; return (_VENDOR) ; }
72 \([ ]*PROGRAM { ECHO ; return (_PROGRAM) ; }
73 \([ ]*VERSION { ECHO ; return (_VERSION) ; }
74 \([ ]*DIVIDER { ECHO ; return (_DIVIDER) ; }
75 \([ ]*VOLTAGE { ECHO ; return (_VOLTAGE) ; }
76 \([ ]*PROCESS { ECHO ; return (_PROCESS) ; }
77 \([ ]*TEMPERATURE { ECHO ; return (_TEMPERATURE) ; }
78 \([ ]*TIMESCALE { ECHO ; return (_TIMESCALE) ; }
79 CELL { ECHO ; return (_CELL) ; }
80 CELLTYPE { ECHO ; return (_CELLTYPE) ; }
81 INSTANCE { ECHO ; return (_INSTANCE) ; }
82 DELAY { ECHO ; return (_DELAY) ; }
83 TIMINGCHECK { ECHO ; return (_TIMINGCHECK) ; }
84 TIMINGENV { ECHO ; return (_TIMINGENV) ; }
85 PATHPULSE { ECHO ; return (_PATHPULSE) ; }
86 PATHPULSEPERCENT { ECHO ; return (_PATHPULSEPERCENT) ; }
87 ABSOLUTE { ECHO ; return (_ABSOLUTE) ; }
88 INCREMENT { ECHO ; return (_INCREMENT) ; }
89 IOPATH { ECHO ; return (_IOPATH) ; }
90 RETAIN { ECHO ; return (_RETAIN) ; }
91 COND { ECHO ; return (_COND) ; }
92 CONDELSE { ECHO ; return (_CONDELSE) ; }
93 PORT { ECHO ; return (_PORT) ; }
94 INTERCONNECT { ECHO ; return (_INTERCONNECT) ; }
95 DEVICE { ECHO ; return (_DEVICE) ; }
96 SETUP { ECHO ; return (_SETUP) ; }
97 HOLD { ECHO ; return (_HOLD) ; }
98 SETUPHOLD { ECHO ; return (_SETUPHOLD) ; }
99 RECOVERY { ECHO ; return (_RECOVERY) ; }
100 REMOVAL { ECHO ; return (_REMOVAL) ; }
101 RECREM { ECHO ; return (_RECREM) ; }
102 SKEW { ECHO ; return (_SKEW) ; }
103 WIDTH { ECHO ; return (_WIDTH) ; }
104 PERIOD { ECHO ; return (_PERIOD) ; }
105 NOCHANGE { ECHO ; return (_NOCHANGE) ; }
106 \([ ]*SCOND { ECHO ; return (_SCOND) ; }
107 \([ ]*CCOND { ECHO ; return (_CCOND) ; }
108 NAME { ECHO ; return (_NAME) ; }
109 EXCEPTION { ECHO ; return (_EXCEPTION) ; }
110 PATHCONSTRAINT { ECHO ; return (_PATHCONSTRAINT) ; }
111 PERIODCONSTRAINT { ECHO ; return (_PERIODCONSTRAINT) ; }
112 SUM { ECHO ; return (_SUM) ; }
113 DIFF { ECHO ; return (_DIFF ) ; }
114 SKEWCONSTRAINT { ECHO ; return (_SKEWCONSTRAINT) ; }
115 ARRIVAL { ECHO ; return (_ARRIVAL) ; }
116 DEPARTURE { ECHO ; return (_DEPARTURE) ; }
117 SLACK { ECHO ; return (_SLACK) ; }
118 WAVEFORM { ECHO ; return (_WAVEFORM) ; }
119 negedge { ECHO ; return (_NEGEDGE) ; }
120 posedge { ECHO ; return (_POSEDGE) ; }
121 us { ECHO ; return (_US) ; }
122 ns { ECHO ; return (_NS) ; }
123 ps { ECHO ; return (_PS) ; }
124 01 { ECHO ; return (_01) ; }
125 10 { ECHO ; return (_10) ; }
126 0z { ECHO ; return (_0Z) ; }
127 z1 { ECHO ; return (_Z1) ; }
128 1z { ECHO ; return (_1Z) ; }
129 z0 { ECHO ; return (_Z0) ; }
130 1'b0 { ECHO ; return (_B0) ; }
131 1'b1 { ECHO ; return (_B1) ; }
132 1'B0 { ECHO ; return (_B0) ; }
133 1'B1 { ECHO ; return (_B1) ; }
134 'b0 { ECHO ; return (_B0) ; }
135 'b1 { ECHO ; return (_B1) ; }
136 'B0 { ECHO ; return (_B0) ; }
137 'B1 { ECHO ; return (_B1) ; }
138 "?" { ECHO ; return ('?') ; }
139 ":" { ECHO ; return (':') ; }
140 "(" { ECHO ; return ('(') ; }
141 ")" { ECHO ; return (')') ; }
142 "+" { ECHO ; return ('+') ; }
143 "-" { ECHO ; return ('-') ; }
144 "!" { ECHO ; return ('!') ; }
145 "~" { ECHO ; return ('~') ; }
146 "&" { ECHO ; return ('&') ; }
147 "|" { ECHO ; return ('|') ; }
148 "^" { ECHO ; return ('^') ; }
149 "*" { ECHO ; return ('*') ; }
150 "/" { ECHO ; return ('/') ; }
151 "%" { ECHO ; return ('%') ; }
152 "=" { ECHO ; return ('=') ; }
153 "<" { ECHO ; return ('<') ; }
154 ">" { ECHO ; return ('>') ; }
155 "[" { ECHO ; return ('[') ; }
156 "]" { ECHO ; return (']') ; }
157 "." { ECHO ; return ('.') ; }
158 "~&" { ECHO ; return (_SYMBOLIC0) ; }
159 "~|" { ECHO ; return (_SYMBOLIC1) ; }
160 "^~" { ECHO ; return (_SYMBOLIC2) ; }
161 "~^" { ECHO ; return (_SYMBOLIC3) ; }
162 "==" { ECHO ; return (_SYMBOLIC4) ; }
163 "!=" { ECHO ; return (_SYMBOLIC5) ; }
164 "===" { ECHO ; return (_SYMBOLIC6) ; }
165 "!==" { ECHO ; return (_SYMBOLIC7) ; }
166 "&&" { ECHO ; return (_SYMBOLIC8) ; }
167 "||" { ECHO ; return (_SYMBOLIC9) ; }
168 "<=" { ECHO ; return (_SYMBOLIC10) ; }
169 ">=" { ECHO ; return (_SYMBOLIC11) ; }
170 ">>" { ECHO ; return (_SYMBOLIC12) ; }
171 "<<" { ECHO ; return (_SYMBOLIC13) ; }
172 {qstring} { ECHO ; sdflval.text = strdup (yytext) ; return (_QSTRING) ; }
173 {dnumber} { ECHO ; sdflval.real = strtod (yytext, (char**)NULL) ; return (_NUMBER) ; }
174 {number} { ECHO ; sdflval.real = strtod (yytext, (char**)NULL) ; return (_NUMBER) ; }
175 {rnumber} { ECHO ; sdflval.real = strtod (yytext, (char**)NULL) ; return (_NUMBER) ; }
176 {identifier} { ECHO ;
177 name = strip (yytext) ;
178 sdflval.text = namealloc (name) ;
179 mbkfree(name) ;
180 return (_IDENTIFIER) ;
181 }
182
183 %%
184
185 int yywrap () { return 1 ; }