1 /* $NetBSD: scanner.l,v 1.1.1.1 2009/10/26 00:29:12 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 /* TEST scanner. 27 Basic non-reentrant scanner. 28 Compile with: flex scanner.l 29 30 Sample Input: 31 # this is a comment 32 foo = true 33 bar = "string value" 34 integer = 43 35 */ 36 %{ 37 #include "config.h" 38 %} 39 40 %option prefix="test" outfile="scanner.c" 41 %option nounput noyywrap noyylineno warn nodefault 42 43 IDENT [[:alnum:]_-] 44 WS [[: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 56 int main(void); 57 58 int main () 59 { 60 yyin = stdin; 61 yyout = stdout; 62 while( yylex() ) 63 { 64 } 65 printf("TEST RETURNING OK.\n"); 66 return 0; 67 } 68 69