Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / tas / stm / stm.l
1 %{
2 #include <string.h>
3 #include MUT_H
4
5 #define API_HIDE_TOKENS
6
7 #include API_H
8 #include "stm.tab.h"
9 extern int STM_LINE;
10 static int parlevel;
11
12 #define ECHO /*fprintf(stdout,"\ntoken %s\n",yytext)*/
13 #define YY_NO_UNPUT
14
15 %}
16 %x DONTCARE
17 %x COMMENT
18
19 upper_alpha [A-Z]
20 lower_alpha [a-z]
21 num [0-9]
22 alpha ({upper_alpha}|{lower_alpha})
23 alphanum ({alpha}|{num})
24 number -?{num}+(\.({num}*))?
25 enumber -?{num}+(\.({num}*))?(e|E)[+|-]?{num}+
26 identifier {alpha}(([\[|\\./:$_\-|!+@{}\#\]<>]?)+{alphanum}((\[|\\\[|$){num}+(\]|\\\]|$))?)*
27 comment \/\/
28 qstring \".*\"
29
30 %%
31 \n { ECHO; STM_LINE++; }
32 {comment}.*$ { ECHO; }
33 [ \t] { ECHO; }
34 <DONTCARE>\( { ECHO; parlevel++; }
35 <DONTCARE>[^\(\)\n]* { ECHO; }
36 <DONTCARE>\n { ECHO; STM_LINE++; }
37 <DONTCARE>\) { ECHO; parlevel--; if (!parlevel) BEGIN INITIAL; }
38 \/\* { ECHO; BEGIN COMMENT; }
39 <COMMENT>[^\*\n]* { ECHO; }
40 <COMMENT>\*+ { ECHO; }
41 <COMMENT>\n { ECHO; STM_LINE++;}
42 <COMMENT>\*+\/ { ECHO; BEGIN INITIAL; }
43 \( { ECHO; return '('; }
44 \) { ECHO; return ')'; }
45 unknown { ECHO; return (_UNKNOWN); }
46 cell { ECHO; return (_CELL); }
47 celltype { ECHO; return (_CELLTYPE); }
48 ignore { ECHO; return (_IGNORE); }
49 model { ECHO; return (_MODEL); }
50 name { ECHO; return (_NAME); }
51 vdd { ECHO; return (_VDD); }
52 vth { ECHO; return (_VTH); }
53 varthmin { ECHO; return (_VARTHMIN); }
54 varthmax { ECHO; return (_VARTHMAX); }
55 vt { ECHO; return (_VT); }
56 vf { ECHO; return (_VF); }
57 tran { ECHO; return (_TRAN); }
58 spline { ECHO; return (_SPLINE); }
59 scm_dual { ECHO; return (_SCM_DUAL); }
60 scm_good { ECHO; return (_SCM_GOOD); }
61 scm_false { ECHO; return (_SCM_FALSE); }
62 scm_path { ECHO; return (_SCM_PATH); }
63 scm_cst { ECHO; return (_SCM_CST); }
64 dual { ECHO; return (_DUAL); }
65 false { ECHO; return (_FALSE); }
66 path { ECHO; return (_PATH); }
67 link_out { ECHO; return (_LINK_OUT); }
68 link_pass { ECHO; return (_LINK_PASS); }
69 link_dual { ECHO; return (_LINK_DUAL); }
70 pconf0 { ECHO; return (_PCONF0); }
71 pconf1 { ECHO; return (_PCONF1); }
72 capai { ECHO; return (_CAPAI); }
73 capai0 { ECHO; return (_CAPAI0); }
74 capai1 { ECHO; return (_CAPAI1); }
75 capai2 { ECHO; return (_CAPAI2); }
76 capai3 { ECHO; return (_CAPAI3); }
77 vt0 { ECHO; return (_VT0); }
78 vt0c { ECHO; return (_VT0C); }
79 irap { ECHO; return (_IRAP); }
80 vddin { ECHO; return (_VDDIN); }
81 threshold { ECHO; return (_THRESHOLD); }
82 ithr { ECHO; return (_INPUT_THR); }
83 rint { ECHO; return (_RINT); }
84 vint { ECHO; return (_VINT); }
85 chalf { ECHO; return (_CHALF); }
86 qinit { ECHO; return (_QINIT); }
87 rconf { ECHO; return (_RCONF); }
88 kr { ECHO; return (_KR); }
89 imax { ECHO; return (_IMAX); }
90 an { ECHO; return (_AN); }
91 bn { ECHO; return (_BN); }
92 acti { ECHO; return (_ACTI); }
93 bcti { ECHO; return (_BCTI); }
94 ci { ECHO; return (_CI); }
95 cf { ECHO; return (_CF); }
96 k3 { ECHO; return (_K3); }
97 k4 { ECHO; return (_K4); }
98 k5 { ECHO; return (_K5); }
99 rtot { ECHO; return (_RTOT); }
100 kf { ECHO; return (_KF); }
101 vddmax { ECHO; return (_VDDMAX); }
102 vf_input { ECHO; return (_VF_INPUT); }
103 rsat { ECHO; return (_RSAT); }
104 rlin { ECHO; return (_RLIN); }
105 drc { ECHO; return (_DRC); }
106 rbr { ECHO; return (_RBR); }
107 cbr { ECHO; return (_CBR); }
108 const { ECHO; return (_CST); }
109 slew { ECHO; return (_SLEW); }
110 slope { ECHO; return (_SLEW); }
111 delay { ECHO; return (_DELAY); }
112 data { ECHO; return (_DATA); }
113 clock_slew_axis { ECHO; return (_CLOCK_SLEW_AXIS); }
114 input_slew_axis { ECHO; return (_INPUT_SLEW_AXIS); }
115 clock_slope_axis { ECHO; return (_CLOCK_SLEW_AXIS); }
116 input_slope_axis { ECHO; return (_INPUT_SLEW_AXIS); }
117 slope_axis { ECHO; return (_SLEW_AXIS); }
118 slew_axis { ECHO; return (_SLEW_AXIS); }
119 load_axis { ECHO; return (_LOAD_AXIS); }
120 orders { ECHO; return (_ORDERS); }
121 coefs { ECHO; return (_COEFS); }
122 spdm { ECHO; return (_SPDM); }
123 template { ECHO; parlevel = 0; BEGIN DONTCARE; }
124 vendor { ECHO; return (_VENDOR); }
125 environment { ECHO; return (_ENVIRONMENT); }
126 version { ECHO; return (_VERSION); }
127 header { ECHO; return (_HEADER); }
128 date { ECHO; return (_DATE); }
129 library { ECHO; return (_LIBRARY); }
130 technology { ECHO; return (_TECHNOLOGY); }
131 noise_scr { ECHO; return (_NOISE_SCR); }
132 energy_table { ECHO; return (_ENERGY_TABLE); }
133 energy_const { ECHO; return (_ENERGY_CONST); }
134 energy_model { ECHO; return (_ENERGY_MODEL); }
135 fct { ECHO; return (_FCT); }
136 file { ECHO; return (_FILE); }
137 instance { ECHO; return (_INSTANCE); }
138 localname { ECHO; return (_LOCALNAME); }
139 sim_model { ECHO; return (_SIM_MODEL); }
140 function { ECHO; return (_FUNCTION); }
141 iv { ECHO; return (_IV); }
142 nve { ECHO; return (_NVE); }
143 nvs { ECHO; return (_NVS); }
144 ve { ECHO; return (_VE); }
145 vs { ECHO; return (_VS); }
146 conf { ECHO; return (_CONFLICT); }
147 current { ECHO; return (_CURRENT); }
148 input { ECHO; return (_INPUT); }
149 initial { ECHO; return (_INITIAL); }
150 {qstring} { ECHO; stmlval.t_pchar = mbkstrdup (yytext); return (_QSTRING); }
151 {identifier} { ECHO; stmlval.t_pchar = mbkstrdup (yytext); return (_IDENTIFIER); }
152 {number} { ECHO; stmlval.t_struct3.t_float = strtod (yytext, (char**)NULL); strcpy(stmlval.t_struct3.t_float_string, yytext); return (_NUMBER); }
153 {enumber} { ECHO; stmlval.t_struct3.t_float = strtod (yytext, (char**)NULL); strcpy(stmlval.t_struct3.t_float_string, yytext); return (_ENUMBER);}
154 '.' { ECHO; stmlval.t_char=yytext[1]; return (_ECHAR); }
155 %%
156
157 int yywrap() { return 1; }