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 bison-locations yylineno 38%option nomain nounput noyy_top_state noyywrap nodefault warn 39%option prefix="test" header="scanner.h" yylineno 40 41 42%% 43 44^[[:digit:]]+ { 45 yylval->lineno = yylineno; 46 yylloc->first_line = (int)strtol(yytext,NULL,10); 47 return LINENO; 48 } 49":" { return COLON; } 50" " { return SPACE; } 51"=" { return EQUAL; } 52[[:alnum:]_]+ { yylval->str = STRDUP(yytext); return IDENT;} 53 54\r|\n { } 55. { yyterminate();} 56%% 57 58 59static char* STRDUP(char* s1) 60{ 61 char* s2 = (char*)malloc(strlen(s1)+1); 62 sprintf(s2,"%s",s1); 63 return s2; 64} 65