1/* $NetBSD: scanner.l,v 1.1.1.1 2009/10/26 00:29:16 christos Exp $ */ 2 3/* 4 * This file is part of flex. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * Neither the name of the University nor the names of its contributors 17 * may be used to endorse or promote products derived from this software 18 * without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 21 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 22 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE. 24 */ 25 26%{ 27/* The scanner expects to link to bison yylval . */ 28#include <stdio.h> 29#include <stdlib.h> 30#include "parser.h" 31#include "config.h" 32static char* STRDUP(char* s1); 33#define YY_EXTRA_TYPE int 34%} 35 36%option 8bit outfile="scanner.c" prefix="test" 37%option reentrant bison-bridge bison-locations yylineno 38%option nomain nounput noyy_top_state noyywrap nodefault warn 39%option prefix="test" header="scanner.h" 40 41 42%% 43 44 if ( !yyextra) 45 yyextra = 1; 46 47^[[:digit:]]+ { 48 yylval->lineno = yyextra++; 49 yylloc->first_line = (int)strtol(yytext,NULL,10); 50 return LINENO; 51 } 52":" { return COLON; } 53" " { return SPACE; } 54"=" { return EQUAL; } 55[[:alnum:]_]+ { yylval->str = STRDUP(yytext); return IDENT;} 56 57\r|\n { } 58. { yyterminate();} 59%% 60 61 62static char* STRDUP(char* s1) 63{ 64 char* s2 = (char*)malloc(strlen(s1)+1); 65 sprintf(s2,"%s",s1); 66 return s2; 67} 68