]>
Commit | Line | Data |
---|---|---|
92055a92 | 1 | %{ |
2a23ca6e | 2 | #include "command_parse.h" |
92055a92 | 3 | |
2a23ca6e | 4 | extern void set_buffer_string(const char *); |
92055a92 QY |
5 | %} |
6 | ||
5a8bbed0 | 7 | WORD [-|+]?[a-z\*][-+_a-zA-Z0-9\*]* |
92055a92 QY |
8 | IPV4 A\.B\.C\.D |
9 | IPV4_PREFIX A\.B\.C\.D\/M | |
10 | IPV6 X:X::X:X | |
11 | IPV6_PREFIX X:X::X:X\/M | |
1a8c390d | 12 | VARIABLE [A-Z][-_a-zA-Z:0-9]+ |
5a8bbed0 | 13 | NUMBER [-|+]?[0-9]{1,20} |
92055a92 QY |
14 | RANGE \({NUMBER}\-{NUMBER}\) |
15 | ||
16 | /* yytext shall be a pointer */ | |
17 | %pointer | |
18 | %option noyywrap | |
2a23ca6e QY |
19 | %option nounput |
20 | %option noinput | |
21 | %option outfile="command_lex.c" | |
92055a92 QY |
22 | |
23 | %% | |
92055a92 | 24 | [ /t] /* ignore whitespace */; |
de9d7e4f QY |
25 | {WORD} {yylval.string = XSTRDUP(MTYPE_TMP, yytext); return WORD;} |
26 | {IPV4} {yylval.string = XSTRDUP(MTYPE_TMP, yytext); return IPV4;} | |
27 | {IPV4_PREFIX} {yylval.string = XSTRDUP(MTYPE_TMP, yytext); return IPV4_PREFIX;} | |
28 | {IPV6} {yylval.string = XSTRDUP(MTYPE_TMP, yytext); return IPV6;} | |
29 | {IPV6_PREFIX} {yylval.string = XSTRDUP(MTYPE_TMP, yytext); return IPV6_PREFIX;} | |
30 | {VARIABLE} {yylval.string = XSTRDUP(MTYPE_TMP, yytext); return VARIABLE;} | |
e648e61a QY |
31 | {NUMBER} { |
32 | char *endptr; | |
5a8bbed0 | 33 | yylval.integer = strtoimax(yytext, &endptr, 10); |
e648e61a QY |
34 | return NUMBER; |
35 | } | |
de9d7e4f | 36 | {RANGE} {yylval.string = XSTRDUP(MTYPE_TMP, yytext); return RANGE;} |
92055a92 QY |
37 | . {return yytext[0];} |
38 | %% | |
2a23ca6e QY |
39 | |
40 | void | |
41 | set_buffer_string(const char *string) | |
42 | { | |
43 | yy_scan_string(string); | |
44 | } |