1/* $NetBSD$ */ 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/* A reentrant scanner. 27 This file will not compile under flex version <= 2.5.4. 28 Sample Input: 29 # this is a comment 30 foo = true 31 bar = "string value" 32 integer = 43 33*/ 34%{ 35#include "config.h" 36%} 37 38%option prefix="test" outfile="scanner.c" 39%option nounput noyywrap noyylineno warn nodefault 40%option reentrant 41%option noansi-definitions noansi-prototypes 42 43IDENT [[:alnum:]_-] 44WS [[:blank:]] 45%% 46 47^{IDENT}+{WS}*={WS}*(true|false){WS}*\r?\n { return 100;} 48^{IDENT}+{WS}*={WS}*\"[^\"\n\r]*\"{WS}*\r?\n { return 101;} 49^{IDENT}+{WS}*={WS}*[[:digit:]]+{WS}*\r?\n { return 102;} 50^{WS}*#.*\r?\n { } 51^{WS}*\r?\n { } 52.|\n { fprintf(stderr,"Invalid line.\n"); exit(-1);} 53 54%% 55 56int main(void); 57 58int main () 59{ 60 yyscan_t lexer; 61 yylex_init( &lexer ); 62 yyset_out ( stdout,lexer); 63 yyset_in ( stdin, lexer); 64 while( yylex(lexer) ) 65 { 66 } 67 yylex_destroy( lexer ); 68 printf("TEST RETURNING OK.\n"); 69 return 0; 70} 71 72