diff options
author | john43 <john43> | 2006-02-15 18:11:40 +0000 |
---|---|---|
committer | john43 <john43> | 2006-02-15 18:11:40 +0000 |
commit | 9ca3dbc7929a4a047ba0a10eaa63226a81bf2248 (patch) | |
tree | eef0a7f9aa08dc84b2aa7a032298814826af346e /tests | |
parent | e6ff1830f2a2a7ffdb02556dd320ea8043857468 (diff) | |
download | flex-9ca3dbc7929a4a047ba0a10eaa63226a81bf2248.tar.gz |
Recommit of last commit -- broken pipe.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test-rescan-nr/.cvsignore | 9 | ||||
-rw-r--r-- | tests/test-rescan-nr/Makefile.am | 47 | ||||
-rw-r--r-- | tests/test-rescan-nr/scanner.l | 70 | ||||
-rw-r--r-- | tests/test-rescan-nr/test.input | 2 | ||||
-rw-r--r-- | tests/test-rescan-r/.cvsignore | 9 | ||||
-rw-r--r-- | tests/test-rescan-r/Makefile.am | 47 | ||||
-rw-r--r-- | tests/test-rescan-r/scanner.l | 95 | ||||
-rw-r--r-- | tests/test-rescan-r/test.input | 2 |
8 files changed, 281 insertions, 0 deletions
diff --git a/tests/test-rescan-nr/.cvsignore b/tests/test-rescan-nr/.cvsignore new file mode 100644 index 0000000..eb11008 --- /dev/null +++ b/tests/test-rescan-nr/.cvsignore @@ -0,0 +1,9 @@ +Makefile +Makefile.in +parser.c +parser.h +scanner.c +TEMPLATE +OUTPUT +.deps +test-rescan-nr diff --git a/tests/test-rescan-nr/Makefile.am b/tests/test-rescan-nr/Makefile.am new file mode 100644 index 0000000..326c582 --- /dev/null +++ b/tests/test-rescan-nr/Makefile.am @@ -0,0 +1,47 @@ +# 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. + +FLEX = $(top_builddir)/flex + +builddir = @builddir@ + +EXTRA_DIST = scanner.l test.input +CLEANFILES = scanner.c scanner.h test-rescan-nr OUTPUT $(OBJS) +OBJS = scanner.o + +AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) +#LDFLAGS = $(top_srcdir)/libfl.a +#LFLAGS = --header="scanner.h" +#YFLAGS = --defines --output=parser.c + +testname = test-rescan-nr + +scanner.c: $(srcdir)/scanner.l + $(FLEX) $(LFLAGS) $< + +$(testname)$(EXEEXT): $(OBJS) + $(CC) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) + +test: $(testname)$(EXEEXT) + ./$(testname)$(EXEEXT) $(srcdir)/test.input + +.c.o: + $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< diff --git a/tests/test-rescan-nr/scanner.l b/tests/test-rescan-nr/scanner.l new file mode 100644 index 0000000..a4ac521 --- /dev/null +++ b/tests/test-rescan-nr/scanner.l @@ -0,0 +1,70 @@ +/* + * 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. + */ + +%{ +/* A template scanner file to build "scanner.c". */ +#include <stdio.h> +#include <stdlib.h> +%} + +%option 8bit outfile="scanner.c" prefix="test" +%option nounput nomain noyywrap +%option warn stack never-interactive +%x STATE_1 + +%% + +<INITIAL>{ +0 yy_push_state (STATE_1); +.|\n return 1; +} +<STATE_1>{ +1 yy_pop_state(); +.|\n return yy_top_state() + 1; +} + +%% + +int +main (int argc, char* const argv[]) +{ + FILE* fp; + int i; + + if ((fp = fopen(argv[1],"r")) == NULL){ + perror("Failed to open input file."); + return 1; + } + + yyset_out ( stdout); + + for (i=0; i < 4; ++i){ + rewind(fp); + yyset_in ( fp); + while( yylex() ) + ; + yylex_destroy(); + } + printf("TEST RETURNING OK.\n"); + return 0; +} diff --git a/tests/test-rescan-nr/test.input b/tests/test-rescan-nr/test.input new file mode 100644 index 0000000..7288a40 --- /dev/null +++ b/tests/test-rescan-nr/test.input @@ -0,0 +1,2 @@ +0000 foo 1111 foo 0000 bar +0000 foo 1111 foo 0000 bar diff --git a/tests/test-rescan-r/.cvsignore b/tests/test-rescan-r/.cvsignore new file mode 100644 index 0000000..bf052c2 --- /dev/null +++ b/tests/test-rescan-r/.cvsignore @@ -0,0 +1,9 @@ +Makefile +Makefile.in +parser.c +parser.h +scanner.c +TEMPLATE +OUTPUT +.deps +test-rescan-r diff --git a/tests/test-rescan-r/Makefile.am b/tests/test-rescan-r/Makefile.am new file mode 100644 index 0000000..9ff7735 --- /dev/null +++ b/tests/test-rescan-r/Makefile.am @@ -0,0 +1,47 @@ +# 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. + +FLEX = $(top_builddir)/flex + +builddir = @builddir@ + +EXTRA_DIST = scanner.l test.input +CLEANFILES = scanner.c scanner.h test-rescan-r OUTPUT $(OBJS) +OBJS = scanner.o # parser.o + +AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) +#LDFLAGS = $(top_srcdir)/libfl.a +#LFLAGS = --header="scanner.h" +#YFLAGS = --defines --output=parser.c + +testname = test-rescan-r + +scanner.c: $(srcdir)/scanner.l + $(FLEX) $(LFLAGS) $< + +$(testname)$(EXEEXT): $(OBJS) + $(CC) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) + +test: $(testname)$(EXEEXT) + ./$(testname)$(EXEEXT) $(srcdir)/test.input + +.c.o: + $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< diff --git a/tests/test-rescan-r/scanner.l b/tests/test-rescan-r/scanner.l new file mode 100644 index 0000000..3357ce8 --- /dev/null +++ b/tests/test-rescan-r/scanner.l @@ -0,0 +1,95 @@ +/* + * 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. + */ + +%{ +/* A template scanner file to build "scanner.c". */ +#include <stdio.h> +#include <stdlib.h> +%} + +%option 8bit outfile="scanner.c" prefix="test" +%option nounput nomain noyywrap reentrant +%option warn stack never-interactive +%x STATE_1 + +%% + +<INITIAL>{ +0 yy_push_state (STATE_1, yyscanner); +.|\n return 1; +} +<STATE_1>{ +1 yy_pop_state(yyscanner); +.|\n return yy_top_state(yyscanner) + 1; +} + +%% + +int +main (int argc, char* const argv[]) +{ + FILE* fp; + int i; + yyscan_t yyscanner; + + if ((fp = fopen(argv[1],"r")) == NULL){ + perror("Failed to open input file."); + return 1; + } + + printf("Test 1: Reusing same scanner.\n"); + yylex_init( &yyscanner ); + yyset_out ( stdout, yyscanner); + + for (i=0; i < 4; ++i){ + + rewind(fp); + yyset_in ( fp, yyscanner); + + while( yylex(yyscanner) ) + ; + } + yylex_destroy( yyscanner ); + printf("Test 1 OK\n\n"); + + printf("Test 2: Rescanning with new scanner each time.\n"); + + memset(&yyscanner,0,sizeof(yyscanner)); // Just to be clean about it. + + for (i=0; i < 4; ++i){ + yyscan_t s; + yylex_init( &s ); + yyset_out ( stdout, s); + rewind(fp); + yyset_in ( fp, s); + + while( yylex(s) ) + ; + yylex_destroy( s ); + } + printf("Test 2 OK\n\n"); + + + printf("TEST RETURNING OK.\n"); + return 0; +} diff --git a/tests/test-rescan-r/test.input b/tests/test-rescan-r/test.input new file mode 100644 index 0000000..7288a40 --- /dev/null +++ b/tests/test-rescan-r/test.input @@ -0,0 +1,2 @@ +0000 foo 1111 foo 0000 bar +0000 foo 1111 foo 0000 bar |