diff options
Diffstat (limited to 'tests/bison_nr_scanner.l')
-rw-r--r-- | tests/bison_nr_scanner.l | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/bison_nr_scanner.l b/tests/bison_nr_scanner.l new file mode 100644 index 0000000..0bd871c --- /dev/null +++ b/tests/bison_nr_scanner.l @@ -0,0 +1,62 @@ +/* + * This file is part of flex. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. + */ + +%{ +/* The scanner expects to link to bison yylval . */ +#include <stdio.h> +#include <stdlib.h> +#include "bison_nr_parser.h" +#include "config.h" +static char* STRDUP(char* s1); +#define YY_EXTRA_TYPE int +%} + +%option 8bit prefix="test" +%option bison-locations yylineno +%option prefix="test" header="bison_nr_scanner.h" yylineno +%option nomain nounput noyy_top_state noyywrap nodefault noinput warn + + +%% + +^[[:digit:]]+ { + yylval->lineno = yylineno; + yylloc->first_line = (int)strtol(yytext,NULL,10); + return LINENO; + } +":" { return COLON; } +" " { return SPACE; } +"=" { return EQUAL; } +[[:alnum:]_]+ { yylval->str = STRDUP(yytext); return IDENT;} + +\r|\n { } +. { yyterminate();} +%% + + +static char* STRDUP(char* s1) +{ + char* s2 = malloc(strlen(s1)+1); + sprintf(s2,"%s",s1); + return s2; +} |