1 /* 2 * This file is part of flex. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * Neither the name of the University nor the names of its contributors 15 * may be used to endorse or promote products derived from this software 16 * without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 19 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 * PURPOSE. 22 */ 23 24 %{ 25 /* The goal of this test is to verify that we are getting the counter-intuitive 26 * posix behavior of the repeat operator `{}'. 27 * 28 * ab{3} - In traditional flex, this matches "abbb". 29 * In posix, this matches "ababab". 30 */ 31 #include <stdio.h> 32 #include <stdlib.h> 33 #include "config.h" 34 35 #define NUM_TESTS 1 36 char * tests[NUM_TESTS] = { "ababab"}; 37 int main(void); 38 39 int tests_ok[NUM_TESTS] = { 0 }; 40 41 %} 42 43 %option 8bit prefix="test" 44 %option nounput nomain noyywrap noinput 45 %option warn posix-compat 46 47 48 %% 49 50 ab{3} tests_ok[0] = 1; return 0; 51 .|\n return 0; 52 53 %% 54 55 56 int main () 57 { 58 YY_BUFFER_STATE state; 59 int i; 60 61 yyin = stdin; 62 yyout = stdout; 63 64 /* Run the tests */ 65 for (i=0; i < NUM_TESTS; i++){ 66 printf("Testing: yy_scan_string(%s): ", tests[i]); 67 state = yy_scan_string(tests[i]); 68 yylex(); 69 yy_delete_buffer(state); 70 printf("... %s\n", tests_ok[i] ? "OK" : "FAILED"); 71 } 72 73 for (i=0; i < NUM_TESTS; i++) 74 if (!tests_ok[i]) 75 exit(1); 76 77 printf("TEST RETURNING OK.\n"); 78 return 0; 79 } 80