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 /* TEST scanner. 25*357f1050SThomas Veerman Basic non-reentrant scanner. 26*357f1050SThomas Veerman Compile with: flex scanner.l 27*357f1050SThomas Veerman 28*357f1050SThomas Veerman Sample Input: 29*357f1050SThomas Veerman # this is a comment 30*357f1050SThomas Veerman foo = true 31*357f1050SThomas Veerman bar = "string value" 32*357f1050SThomas Veerman integer = 43 33*357f1050SThomas Veerman */ 34*357f1050SThomas Veerman %{ 35*357f1050SThomas Veerman #include "config.h" 36*357f1050SThomas Veerman %} 37*357f1050SThomas Veerman 38*357f1050SThomas Veerman %option prefix="test" outfile="scanner.c" 39*357f1050SThomas Veerman %option nounput noyywrap noyylineno warn nodefault 40*357f1050SThomas Veerman 41*357f1050SThomas Veerman IDENT [[:alnum:]_-] 42*357f1050SThomas Veerman WS [[:blank:]] 43*357f1050SThomas Veerman %% 44*357f1050SThomas Veerman 45*357f1050SThomas Veerman ^{IDENT}+{WS}*={WS}*(true|false){WS}*\r?\n { return 100;} 46*357f1050SThomas Veerman ^{IDENT}+{WS}*={WS}*\"[^\"\n\r]*\"{WS}*\r?\n { return 101;} 47*357f1050SThomas Veerman ^{IDENT}+{WS}*={WS}*[[:digit:]]+{WS}*\r?\n { return 102;} 48*357f1050SThomas Veerman ^{WS}*#.*\r?\n { } 49*357f1050SThomas Veerman ^{WS}*\r?\n { } 50*357f1050SThomas Veerman .|\n { fprintf(stderr,"Invalid line.\n"); exit(-1);} 51*357f1050SThomas Veerman 52*357f1050SThomas Veerman %% 53*357f1050SThomas Veerman 54*357f1050SThomas Veerman int main(void); 55*357f1050SThomas Veerman 56*357f1050SThomas Veerman int main () 57*357f1050SThomas Veerman { 58*357f1050SThomas Veerman yyin = stdin; 59*357f1050SThomas Veerman yyout = stdout; 60*357f1050SThomas Veerman while( yylex() ) 61*357f1050SThomas Veerman { 62*357f1050SThomas Veerman } 63*357f1050SThomas Veerman printf("TEST RETURNING OK.\n"); 64*357f1050SThomas Veerman return 0; 65*357f1050SThomas Veerman } 66*357f1050SThomas Veerman 67