diff options
Diffstat (limited to 'glcpp-lex.l')
-rw-r--r-- | glcpp-lex.l | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/glcpp-lex.l b/glcpp-lex.l index 6138a9de12..825ce3d370 100644 --- a/glcpp-lex.l +++ b/glcpp-lex.l @@ -36,6 +36,7 @@ %x ST_DEFINE_OBJ_OR_FUNC %x ST_DEFINE_PARAMETER %x ST_DEFINE_VALUE +%x ST_IF %x ST_UNDEF %x ST_UNDEF_END @@ -44,11 +45,42 @@ NONSPACE [^[:space:]] NEWLINE [\n] HSPACE [ \t] HASH ^{HSPACE}*#{HSPACE}* +INTEGER [0-9]+ IDENTIFIER [_a-zA-Z][_a-zA-Z0-9]* TOKEN [^[:space:](),]+ %% +{HASH}if{HSPACE}* { + BEGIN ST_IF; + return IF; +} + +{HASH}elif{HSPACE}* { + BEGIN ST_IF; + return ELIF; +} + +<ST_IF>{INTEGER} { + yylval.ival = atoi (yytext); + return INTEGER; +} + +<ST_IF>{HSPACE}+ + +<ST_IF>\n { + BEGIN INITIAL; + return NEWLINE; +} + +{HASH}endif{HSPACE}* { + return ENDIF; +} + +{HASH}else{HSPACE}* { + return ELSE; +} + {HASH}undef{HSPACE}* { BEGIN ST_UNDEF; return UNDEF; |