Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / mbkspef / spef_dnet.l
1 %{
2 #include <string.h>
3 #include "spef_dnet.tab.h"
4 #include MUT_H
5 #define YY_NO_UNPUT
6 #define ECHO /*printf("token= %s\n", yytext)*/
7 extern int Line ;
8
9
10 %}
11 %s IDENTIFIER
12 %x COMMENT
13
14 upper [A-Z]
15 lower [a-z]
16 digit [0-9]
17 space [ \t]
18 eol \n
19 alpha ({upper}|{lower})
20 sign ({pos_sign}|{neg_sign})
21 pos_sign \+
22 neg_sign \-
23 pos_decimal {digit}+[.]{digit}*
24 pos_integer {digit}+
25 pos_fraction [.]{digit}+
26 pos_exp {pos_radix}{exp_char}{integer}
27 pos_radix ({pos_integer}|{pos_decimal}|{pos_fraction})
28 pos_float ({pos_decimal}|{pos_fraction}|{pos_exp})
29 pos_number ({pos_integer}|{pos_float})
30 decimal {sign}?{digit}+[.]{digit}*
31 integer {sign}?{digit}+
32 fraction {sign}?[.]{digit}+
33 exp {radix}{exp_char}{integer}
34 radix ({integer}|{decimal}|{fraction})
35 exp_char [E]|[e]
36 float ({decimal}|{fraction}|{exp})
37 number ({integer}|{float})
38 v0 (\[{digit}+\])
39 v1 (\<{digit}+\>)
40 v2 (\{{digit}+\})
41 v3 (\({digit}+\))
42 v4 (\\\[{digit}+\\\])
43 vector ({v0}|{v1}|{v2}|{v3}|{v4})
44 hdiv ([[./:_|@#\$%\-!+\\'`~,;=\?\^\&\*])
45 identifier {alpha}({hdiv}|{alpha}|{digit}|{vector})*
46 identifier2 {integer}{hdiv}?({hdiv}|{alpha}|{digit}|{vector})*
47 qstring "\"".*"\""
48 hchar [./:|]
49
50 prefix_bus_delim [[{(<]
51 suffix_bus_delim []})>]
52
53 %%
54 <COMMENT>.*$ {BEGIN INITIAL ; /* end of line */ }
55 {eol} {
56 Line++;
57 }
58 ^"//" {BEGIN COMMENT ; /* comment */ }
59 {space} { /* separators */ }
60 I {ECHO; return _SPEF_I; }
61 B {ECHO; return _SPEF_B; }
62 O {ECHO; return _SPEF_O; }
63 \*C {ECHO; return _E_C; }
64 \*L {ECHO; return _E_L; }
65 \*S {ECHO; return _E_S; }
66 \*D {ECHO; return _E_D; }
67 \*V {ECHO; return _E_V; }
68 \*D_NET {ECHO; return _E_D_NET; }
69 \*CONN {ECHO; return _E_CONN; }
70 \*P {ECHO; return _E_P; }
71 \*I {ECHO; return _E_I; }
72 \*x {ECHO; return _E_X; }
73 \*CAP {ECHO; return _E_CAP; }
74 \*RES {ECHO; return _E_RES; }
75 \*END {ECHO; return _E_END; }
76 {pos_integer} {ECHO; spef_dnetlval.UL.longint = atol(yytext) ; strcpy(spef_dnetlval.UL.text,yytext) ; return _POS_INTEGER; }
77 {pos_number} {ECHO; spef_dnetlval.UR.real = atof(yytext) ; strcpy(spef_dnetlval.UR.text,yytext) ; return _POS_NUMBER; }
78 {number} {ECHO; spef_dnetlval.UR.real = atof(yytext) ; strcpy(spef_dnetlval.UR.text,yytext) ; return _NUMBER; }
79 \*{pos_integer} {ECHO; spef_dnetlval.text = mbkstrdup(yytext) ; return _INDEX; }
80 {prefix_bus_delim} {ECHO; spef_dnetlval.text = mbkstrdup(yytext) ; return _PREFIX_BUS_DELIM; }
81 {suffix_bus_delim} {ECHO; spef_dnetlval.text = mbkstrdup(yytext) ; return _SUFFIX_BUS_DELIM; }
82 {hchar} {ECHO; spef_dnetlval.text = mbkstrdup(yytext) ; return (_HCHAR) ; }
83 {qstring} {ECHO; spef_dnetlval.text = mbkstrdup(yytext) ; return (_QSTRING) ; }
84 {identifier} {ECHO; spef_dnetlval.text = mbkstrdup(yytext) ; return (_IDENTIFIER) ; }
85 {identifier2} {ECHO; spef_dnetlval.text = mbkstrdup(yytext) ; return (_IDENTIFIER) ; }
86 \*{pos_integer}{hchar}{pos_integer} {ECHO; spef_dnetlval.text = mbkstrdup(yytext) ; return (_IDENTIFIER) ; }
87 \*{pos_integer}{hchar}{identifier} {ECHO; spef_dnetlval.text = mbkstrdup(yytext) ; return (_IDENTIFIER) ; }
88
89 %%
90
91 int yywrap() { return 1; }