1*357f1050SThomas Veerman /* 2*357f1050SThomas Veerman * This file is part of flex. 3*357f1050SThomas Veerman * 4*357f1050SThomas Veerman * Redistribution and use in source and binary forms, with or without 5*357f1050SThomas Veerman * modification, are permitted provided that the following conditions 6*357f1050SThomas Veerman * are met: 7*357f1050SThomas Veerman * 8*357f1050SThomas Veerman * 1. Redistributions of source code must retain the above copyright 9*357f1050SThomas Veerman * notice, this list of conditions and the following disclaimer. 10*357f1050SThomas Veerman * 2. Redistributions in binary form must reproduce the above copyright 11*357f1050SThomas Veerman * notice, this list of conditions and the following disclaimer in the 12*357f1050SThomas Veerman * documentation and/or other materials provided with the distribution. 13*357f1050SThomas Veerman * 14*357f1050SThomas Veerman * Neither the name of the University nor the names of its contributors 15*357f1050SThomas Veerman * may be used to endorse or promote products derived from this software 16*357f1050SThomas Veerman * without specific prior written permission. 17*357f1050SThomas Veerman * 18*357f1050SThomas Veerman * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 19*357f1050SThomas Veerman * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 20*357f1050SThomas Veerman * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21*357f1050SThomas Veerman * PURPOSE. 22*357f1050SThomas Veerman */ 23*357f1050SThomas Veerman 24*357f1050SThomas Veerman /* A reentrant scanner. 25*357f1050SThomas Veerman This file will not compile under flex version <= 2.5.4. 26*357f1050SThomas Veerman Sample Input: 27*357f1050SThomas Veerman # this is a comment 28*357f1050SThomas Veerman foo = true 29*357f1050SThomas Veerman bar = "string value" 30*357f1050SThomas Veerman integer = 43 31*357f1050SThomas Veerman */ 32*357f1050SThomas Veerman %{ 33*357f1050SThomas Veerman #include "config.h" 34*357f1050SThomas Veerman %} 35*357f1050SThomas Veerman 36*357f1050SThomas Veerman %option prefix="test" outfile="scanner.c" 37*357f1050SThomas Veerman %option nounput noyywrap noyylineno warn nodefault 38*357f1050SThomas Veerman %option reentrant 39*357f1050SThomas Veerman 40*357f1050SThomas Veerman IDENT [[:alnum:]_-] 41*357f1050SThomas Veerman WS [[:blank:]] 42*357f1050SThomas Veerman %% 43*357f1050SThomas Veerman 44*357f1050SThomas Veerman ^{IDENT}+{WS}*={WS}*(true|false){WS}*\r?\n { return 100;} 45*357f1050SThomas Veerman ^{IDENT}+{WS}*={WS}*\"[^\"\n\r]*\"{WS}*\r?\n { return 101;} 46*357f1050SThomas Veerman ^{IDENT}+{WS}*={WS}*[[:digit:]]+{WS}*\r?\n { return 102;} 47*357f1050SThomas Veerman ^{WS}*#.*\r?\n { } 48*357f1050SThomas Veerman ^{WS}*\r?\n { } 49*357f1050SThomas Veerman .|\n { fprintf(stderr,"Invalid line.\n"); exit(-1);} 50*357f1050SThomas Veerman 51*357f1050SThomas Veerman %% 52*357f1050SThomas Veerman 53*357f1050SThomas Veerman int main(void); 54*357f1050SThomas Veerman 55*357f1050SThomas Veerman int main () 56*357f1050SThomas Veerman { 57*357f1050SThomas Veerman yyscan_t lexer; 58*357f1050SThomas Veerman yylex_init( &lexer ); 59*357f1050SThomas Veerman yyset_out ( stdout,lexer); 60*357f1050SThomas Veerman yyset_in ( stdin, lexer); 61*357f1050SThomas Veerman while( yylex(lexer) ) 62*357f1050SThomas Veerman { 63*357f1050SThomas Veerman } 64*357f1050SThomas Veerman yylex_destroy( lexer ); 65*357f1050SThomas Veerman printf("TEST RETURNING OK.\n"); 66*357f1050SThomas Veerman return 0; 67*357f1050SThomas Veerman } 68*357f1050SThomas Veerman 69