diff options
author | John Millaway <john43@users.sourceforge.net> | 2002-07-12 16:23:02 +0000 |
---|---|---|
committer | John Millaway <john43@users.sourceforge.net> | 2002-07-12 16:23:02 +0000 |
commit | 97fb870bf5a3a62ab65666768e6be0ca58efb525 (patch) | |
tree | c6ae31a9720e98f33c032f2d4acda0427e76bd70 /tests/test-posix | |
parent | 111dbf8aa2ca776f325a36d40a0133fb1b16227f (diff) |
Added test for %option posix-compat and repeat operator.
Added test for POSIXLY_CORRECT environment variable and repeat operator.
Diffstat (limited to 'tests/test-posix')
-rw-r--r-- | tests/test-posix/.cvsignore | 9 | ||||
-rw-r--r-- | tests/test-posix/Makefile.am | 45 | ||||
-rw-r--r-- | tests/test-posix/scanner.l | 77 |
3 files changed, 131 insertions, 0 deletions
diff --git a/tests/test-posix/.cvsignore b/tests/test-posix/.cvsignore new file mode 100644 index 0000000..a36ae35 --- /dev/null +++ b/tests/test-posix/.cvsignore @@ -0,0 +1,9 @@ +Makefile +Makefile.in +parser.c +parser.h +scanner.c +TEMPLATE +OUTPUT +.deps +test-posix diff --git a/tests/test-posix/Makefile.am b/tests/test-posix/Makefile.am new file mode 100644 index 0000000..d26e801 --- /dev/null +++ b/tests/test-posix/Makefile.am @@ -0,0 +1,45 @@ +# This file is part of flex. + +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: + +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. + +# Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. + +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE. + +BISON = @BISON@ +FLEX = $(top_builddir)/flex + +EXTRA_DIST = scanner.l +CLEANFILES = scanner.c scanner.h test-posix OUTPUT $(OBJS) +OBJS = scanner.o + +INCLUDES = -I $(srcdir) -I $(top_srcdir) -I $(top_builddir) -I . +#LDFLAGS = $(top_srcdir)/libfl.a +#LFLAGS = --header="scanner.h" + +testname = test-posix + +scanner.c: $(srcdir)/scanner.l + $(FLEX) $(LFLAGS) $< + +$(testname)$(EXEEXT): $(OBJS) + $(CC) -o $@ $(OBJS) $(LDFLAGS) + +test: $(testname)$(EXEEXT) + ./$(testname)$(EXEEXT) + +.c.o: + $(CC) -c -o $@ $(INCLUDES) $< diff --git a/tests/test-posix/scanner.l b/tests/test-posix/scanner.l new file mode 100644 index 0000000..6199689 --- /dev/null +++ b/tests/test-posix/scanner.l @@ -0,0 +1,77 @@ +/* + * This file is part of flex. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. + */ + +%{ +/* The goal of this test is to verify that we are getting the counter-intuitive + * posix behavior of the repeat operator `{}'. + * + * ab{3} - In traditional flex, this matches "abbb". + * In posix, this matches "ababab". + */ +#include <stdio.h> +#include <stdlib.h> +#include "config.h" + +#define NUM_TESTS 1 +char * tests[NUM_TESTS] = { "ababab"}; +int tests_ok[NUM_TESTS] = { 0 }; + +%} + +%option 8bit outfile="scanner.c" prefix="test" +%option nounput nomain noyywrap +%option warn posix-compat + + +%% + +ab{3} tests_ok[0] = 1; return 0; +.|\n return 0; + +%% + + +int main ( int argc, char** argv ) +{ + YY_BUFFER_STATE state; + int i; + + yyin = stdin; + yyout = stdout; + + /* Run the tests */ + for (i=0; i < NUM_TESTS; i++){ + printf("Testing: yy_scan_string(%s): ", tests[i]); + state = yy_scan_string(tests[i]); + yylex(); + yy_delete_buffer(state); + printf("... %s\n", tests_ok[i] ? "OK" : "FAILED"); + } + + for (i=0; i < NUM_TESTS; i++) + if (!tests_ok[i]) + exit(1); + + printf("TEST RETURNING OK.\n"); + return 0; +} |