summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorjohn43 <john43>2006-02-15 18:11:40 +0000
committerjohn43 <john43>2006-02-15 18:11:40 +0000
commit9ca3dbc7929a4a047ba0a10eaa63226a81bf2248 (patch)
treeeef0a7f9aa08dc84b2aa7a032298814826af346e /tests
parente6ff1830f2a2a7ffdb02556dd320ea8043857468 (diff)
downloadflex-9ca3dbc7929a4a047ba0a10eaa63226a81bf2248.tar.gz
Recommit of last commit -- broken pipe.
Diffstat (limited to 'tests')
-rw-r--r--tests/test-rescan-nr/.cvsignore9
-rw-r--r--tests/test-rescan-nr/Makefile.am47
-rw-r--r--tests/test-rescan-nr/scanner.l70
-rw-r--r--tests/test-rescan-nr/test.input2
-rw-r--r--tests/test-rescan-r/.cvsignore9
-rw-r--r--tests/test-rescan-r/Makefile.am47
-rw-r--r--tests/test-rescan-r/scanner.l95
-rw-r--r--tests/test-rescan-r/test.input2
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