diff options
Diffstat (limited to 'gram.l')
-rw-r--r-- | gram.l | 122 |
1 files changed, 0 insertions, 122 deletions
@@ -1,122 +0,0 @@ -%{ - -/* - * - * IRBOX, an Ivy driver for infra-red remote controls - * - * Copyright 1998-1999 - * Centre d'Etudes de la Navigation Aerienne - * - * This is the lexical analyser for reading tables - * - * Authors: Stephane Chatty <chatty@cenatoulouse.dgac.fr> - * - * $Id$ - * - * Please refer to file version.h for the - * copyright notice regarding this software - */ - -#include <stdio.h> -#include <string.h> -#include <stdio.h> - -/* header produced from the parser file with '-d' option of yacc */ -#include "y.tab.h" - -extern int tee (int); -#define RETURN(x) return (tee(x)) - - - -const char* ResWords [] = { - "type", - "name", - "brand", - 0 -}; - -const int ResWordsTokens [] = { - Y_TYPE, - Y_NAME, - Y_BRAND -}; - -int LineNo = 1; - -void -LexInit () -{ - -#ifdef FLEX_SCANNER -static void yyrestart (FILE*); -// yyrestart (0); -#endif - LineNo = 1; -} - - -int -CheckResWord (const char* s) -{ - const char** pp = ResWords; - while (*pp) { - if (strcmp (*pp, s) == 0) - return pp - ResWords; - ++pp; - } - return -1; -} - - -%} - - - -Int [-]?[0-9]+ -Ident [a-zA-Z/\[\]][a-zA-Z.0-9/\[\]]* -nl [\n] -sp0 [ \t]* -sp1 [ \t]+ - -%% - -[:] RETURN (yytext[0]); - -\#.*\n { /* comments */ - ++LineNo; - } - -\".*\" { - char* n = strdup (yytext+1); - n[strlen(yytext) - 1] = '\0'; - yylval.name = n; - RETURN (Y_STRING); - } - -{sp1} {} - -{nl} { - ++LineNo; - RETURN (Y_EOL); - } - -{Int} { - yylval.integer = atoi (yytext); - RETURN (Y_INT); - } - - -{Ident} { - int index = CheckResWord (yytext); - if (index >= 0) { - RETURN (ResWordsTokens[index]); - } else { - yylval.name = strdup (yytext); - RETURN (Y_ID); - } - } - -. { - RETURN (-1); - } |