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 36char * tests[NUM_TESTS] = { "ababab"}; 37int main(void); 38 39int tests_ok[NUM_TESTS] = { 0 }; 40 41%} 42 43%option 8bit prefix="test" 44%option nounput nomain noyywrap noinput 45%option warn 46 47 48%% 49 50ab{3} tests_ok[0] = 1; return 0; 51.|\n return 0; 52 53%% 54 55 56int main (void) 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: test_scan_string(%s): ", tests[i]); 67 state = test_scan_string(tests[i]); 68 testlex(); 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