Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / tas / tlf / gcf.l
1 %{
2 #include <string.h>
3 #include "gcf.tab.h"
4
5 extern int GCF_LINE ;
6 static int parlevel ;
7
8 #define YY_NO_UNPUT
9
10 %}
11 %x DONTCARE
12
13 upper_alpha [A-Z]
14 lower_alpha [a-z]
15 num [0-9]
16 alpha ({upper_alpha}|{lower_alpha})
17 alphanum ({alpha}|{num})
18 number -?{num}+(\.({num}*))?
19 enumber -?{num}+(\.({num}*))?(e|E)[+|-]?{num}+
20 identifier {alpha}(([[./:_]?)+{alphanum}((\[|$){num}+(\]|$))?)*
21 qidentifier \"{identifier}\"
22 qstring \"[^\"]*\"
23 star \*
24
25 %%
26 \n { GCF_LINE++ ; }
27 [ \t] { }
28 <DONTCARE>\( { parlevel++ ; }
29 <DONTCARE>[^\(\)\n]* { }
30 <DONTCARE>\n { GCF_LINE++ ; }
31 <DONTCARE>\) { parlevel-- ; if (!parlevel) BEGIN INITIAL ; }
32 \( { return (GCF_TOKEN_LEFTPAR) ; }
33 \) { return (GCF_TOKEN_RIGHTPAR) ; }
34 GCF { return (GCF_TOKEN_GCF) ; }
35 HEADER { return (GCF_TOKEN_HEADER) ; }
36 VERSION { return (GCF_TOKEN_VERSION) ; }
37 DESIGN { return (GCF_TOKEN_DESIGN) ; }
38 DATE { return (GCF_TOKEN_DATE) ; }
39 DELIMITERS { return (GCF_TOKEN_DELIM) ; }
40 TIME_SCALE { return (GCF_TOKEN_TSCALE) ; }
41 CAP_SCALE { return (GCF_TOKEN_CSCALE) ; }
42 RES_SCALE { return (GCF_TOKEN_RSCALE) ; }
43 VOLTAGE_SCALE { return (GCF_TOKEN_VSCALE) ; }
44 SUBSET[ ]TIMING { return (GCF_TOKEN_SUBSET_TIMING) ; }
45 GLOBALS_SUBSET[ ]TIMING { return (GCF_TOKEN_GLOBAL_SUBSET_TIMING) ; }
46 GLOBALS { return (GCF_TOKEN_GLOBALS) ; }
47 WAVEFORM { return (GCF_TOKEN_WAVEFORM) ; }
48 POSEDGE { return (GCF_TOKEN_POSEDGE) ; }
49 NEGEDGE { return (GCF_TOKEN_NEGEDGE) ; }
50 CELL { return (GCF_TOKEN_CELL) ; }
51 ENVIRONMENT { return (GCF_TOKEN_ENVIRONMENT) ; }
52 DEPARTURE { return (GCF_TOKEN_DEPARTURE) ; }
53 ARRIVAL { return (GCF_TOKEN_ARRIVAL) ; }
54 CLOCK { return (GCF_TOKEN_CLOCK) ; }
55 EXCEPTIONS { return (GCF_TOKEN_EXCEPTIONS) ; }
56 DISABLE { return (GCF_TOKEN_DISABLE) ; }
57 FROM { return (GCF_TOKEN_FROM) ; }
58 TO { return (GCF_TOKEN_TO) ; }
59 \(PROGRAM { parlevel = 1 ; BEGIN DONTCARE ; }
60 \(MAX_TRANSITION_TIME { parlevel = 1 ; BEGIN DONTCARE ; }
61 \(GLOBALS_SUBSET[ ]ENVIRONMENT { parlevel = 1 ; BEGIN DONTCARE ; }
62 \(SUBSET[ ]PARASITICS { parlevel = 1 ; BEGIN DONTCARE ; }
63 \(LEVEL { parlevel = 1 ; BEGIN DONTCARE ; }
64 {star} { return (GCF_TOKEN_STAR) ; }
65 {identifier} { gcflval.text = strdup (yytext) ;
66 return (GCF_TOKEN_IDENT) ; }
67 {qidentifier} { gcflval.text = strdup (yytext) ;
68 return (GCF_TOKEN_QIDENT) ; }
69 {number} { gcflval.real = strtod (yytext, (char**)NULL) ;
70 return (GCF_TOKEN_NUMBER) ; }
71 {enumber} { gcflval.real = strtod (yytext, (char**)NULL) ;
72 return (GCF_TOKEN_ENUMBER) ; }
73 {qstring} { gcflval.text = strdup (yytext) ;
74 return (GCF_TOKEN_QSTRING) ; }
75
76 %%
77
78 int yywrap() { return 1 ; }