summaryrefslogtreecommitdiff
path: root/tools/d2c_tok.l
diff options
context:
space:
mode:
Diffstat (limited to 'tools/d2c_tok.l')
-rw-r--r--tools/d2c_tok.l36
1 files changed, 29 insertions, 7 deletions
diff --git a/tools/d2c_tok.l b/tools/d2c_tok.l
index ae4faa3..50a8d8f 100644
--- a/tools/d2c_tok.l
+++ b/tools/d2c_tok.l
@@ -19,6 +19,7 @@ void free_flex_memory(void) ;
%option noyywrap
%option nounput
%option noinput
+%option yylineno
%x comments
@@ -30,7 +31,7 @@ void free_flex_memory(void) ;
%x syntax syntax_int syntax_ext
-%x conv_begin conv_content conv_arg
+%x conv_begin conv_content conv_arg conv_arg_binval
%x rules_begin rules_content rules_cond rules_cond_binval rules_action rules_actin_see
@@ -51,7 +52,7 @@ void free_flex_memory(void) ;
"@title" { BEGIN(ins_name); return TITLE; }
<ins_name>[ ][A-Za-z-]+ { d2c_lval.string = strdup(yytext + 1); BEGIN(try_details); return INS_NAME; }
-<try_details>[ ] { BEGIN(ins_details); }
+<try_details>[ ,/] { BEGIN(ins_details); }
<try_details>[\n] { BEGIN(INITIAL); }
<ins_details>[^\n]* { d2c_lval.cstring = yytext; return INS_DETAILS; }
@@ -111,12 +112,33 @@ void free_flex_memory(void) ;
<conv_content>"}" { BEGIN(encoding_content); }
<conv_content>[ \t\n]+ { }
-<conv_content>[A-Za-z][A-Za-z0-9]* { d2c_lval.string = strdup(yytext); return NAME; }
+<conv_content>[A-Za-z][A-Za-z0-9]* {
+ if (strcmp(yytext, "NOT") == 0) return NOT;
+ else
+ {
+ d2c_lval.string = strdup(yytext);
+ return NAME;
+ }
+ }
<conv_content>"=" { return EQ; }
-
-<conv_content>"(" { BEGIN(conv_arg); }
-<conv_arg>[A-Za-z][A-Za-z0-9]* { d2c_lval.string = strdup(yytext); return ARG; }
-<conv_arg>")" { BEGIN(conv_content); }
+<conv_content>"(" { BEGIN(conv_arg); return OP; }
+<conv_arg>[A-Za-z][A-Za-z0-9]* {
+ if (strcmp(yytext, "NOT") == 0) return NOT;
+ else if (strcmp(yytext, "EOR") == 0) return EOR;
+ else
+ {
+ d2c_lval.string = strdup(yytext);
+ return NAME;
+ }
+ }
+<conv_arg>[0-9][0-9]* { d2c_lval.integer = atoi(yytext); return NUMBER; }
+<conv_arg>"'" { BEGIN(conv_arg_binval); }
+<conv_arg_binval>[01][01]* { d2c_lval.string = strdup(yytext); return BINVAL; }
+<conv_arg_binval>"'" { BEGIN(conv_arg); }
+<conv_arg>"," { return COMMA; }
+<conv_arg>":" { return COLON; }
+<conv_arg>[ ]+ { }
+<conv_arg>")" { BEGIN(conv_content); return CP; }