diff options
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | tests/Makefile.am | 44 | ||||
-rw-r--r-- | tests/test-noansi-nr/.cvsignore | 7 | ||||
-rw-r--r-- | tests/test-noansi-nr/Makefile.am | 48 | ||||
-rw-r--r-- | tests/test-noansi-nr/scanner.l | 67 | ||||
-rw-r--r-- | tests/test-noansi-nr/test.input | 5 | ||||
-rw-r--r-- | tests/test-noansi-r/.cvsignore | 7 | ||||
-rw-r--r-- | tests/test-noansi-r/Makefile.am | 48 | ||||
-rw-r--r-- | tests/test-noansi-r/scanner.l | 69 | ||||
-rw-r--r-- | tests/test-noansi-r/test.input | 4 |
10 files changed, 281 insertions, 20 deletions
diff --git a/configure.in b/configure.in index 2a684b2..366aeca 100644 --- a/configure.in +++ b/configure.in @@ -101,6 +101,8 @@ tests/test-include-by-buffer/Makefile tests/test-include-by-reentrant/Makefile tests/test-multiple-scanners-nr/Makefile tests/test-multiple-scanners-r/Makefile +tests/test-noansi-nr/Makefile +tests/test-noansi-r/Makefile tests/test-prefix-nr/Makefile tests/test-prefix-r/Makefile tests/test-pthread/Makefile diff --git a/tests/Makefile.am b/tests/Makefile.am index 2fd9449..daeefcb 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -26,9 +26,17 @@ dist_noinst_SCRIPTS = \ create-test DIST_SUBDIRS = \ - test-c++-multiple-scanners \ - test-reject \ + test-basic-nr \ + test-basic-r \ + test-bison-yylloc \ + test-bison-yylval \ test-bison-nr \ + test-multiple-scanners-nr \ + test-multiple-scanners-r \ + test-header-nr \ + test-header-r \ + test-reject \ + test-c++-multiple-scanners \ test-c++-basic \ test-posixly-correct \ test-posix \ @@ -41,30 +49,32 @@ DIST_SUBDIRS = \ TEMPLATE \ test-array-nr \ test-array-r \ - test-basic-nr \ - test-basic-r \ - test-bison-yylloc \ - test-bison-yylval \ test-c-cpp-nr \ test-c-cpp-r \ - test-header-nr \ - test-header-r \ test-include-by-buffer \ test-include-by-reentrant \ - test-multiple-scanners-nr \ - test-multiple-scanners-r \ test-prefix-nr \ test-prefix-r \ test-pthread \ test-string-nr \ test-string-r \ test-yyextra \ + test-noansi-nr \ + test-noansi-r \ test-table-opts SUBDIRS = \ - test-c++-multiple-scanners \ - test-reject \ + test-basic-nr \ + test-basic-r \ + test-bison-yylloc \ + test-bison-yylval \ test-bison-nr \ + test-multiple-scanners-nr \ + test-multiple-scanners-r \ + test-header-nr \ + test-header-r \ + test-reject \ + test-c++-multiple-scanners \ test-c++-basic \ test-posixly-correct \ test-posix \ @@ -76,24 +86,18 @@ SUBDIRS = \ test-lineno-nr \ test-array-nr \ test-array-r \ - test-basic-nr \ - test-basic-r \ - test-bison-yylloc \ - test-bison-yylval \ test-c-cpp-nr \ test-c-cpp-r \ - test-header-nr \ - test-header-r \ test-include-by-buffer \ test-include-by-reentrant \ - test-multiple-scanners-nr \ - test-multiple-scanners-r \ test-prefix-nr \ test-prefix-r \ test-pthread \ test-string-nr \ test-string-r \ test-yyextra \ + test-noansi-nr \ + test-noansi-r \ test-table-opts # clean up before running the test suite so we dont test old builds of test code diff --git a/tests/test-noansi-nr/.cvsignore b/tests/test-noansi-nr/.cvsignore new file mode 100644 index 0000000..1b47d0a --- /dev/null +++ b/tests/test-noansi-nr/.cvsignore @@ -0,0 +1,7 @@ +Makefile +parser.c +parser.h +scanner.c +test-noansi-nr +OUTPUT +Makefile.in diff --git a/tests/test-noansi-nr/Makefile.am b/tests/test-noansi-nr/Makefile.am new file mode 100644 index 0000000..e357503 --- /dev/null +++ b/tests/test-noansi-nr/Makefile.am @@ -0,0 +1,48 @@ +# 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 + +EXTRA_DIST = scanner.l test.input +CLEANFILES = scanner.c parser.c parser.h test-noansi-nr OUTPUT $(OBJS) +OBJS = scanner.o # parser.o + +AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) +#LDFLAGS = $(top_srcdir)/libfl.a +#YFLAGS = --defines --output=parser.c + +testname = test-noansi-nr + +scanner.c: $(srcdir)/scanner.l + $(FLEX) $< + +parser.c: $(srcdir)/parser.y + $(BISON) $(YFLAGS) $< + +$(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-noansi-nr/scanner.l b/tests/test-noansi-nr/scanner.l new file mode 100644 index 0000000..4afc8c2 --- /dev/null +++ b/tests/test-noansi-nr/scanner.l @@ -0,0 +1,67 @@ +/* + * 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. + */ + +/* TEST scanner. + Basic non-reentrant scanner, but with non-ansi function defs. + Compile with: flex scanner.l + + Sample Input: + # this is a comment + foo = true + bar = "string value" + integer = 43 +*/ +%{ +#include "config.h" +%} + +%option prefix="test" outfile="scanner.c" +%option nounput noyywrap noyylineno warn nodefault +%option noansi-prototypes noansi-definitions + +IDENT [[:alnum:]_-] +WS [[:blank:]] +%% + +^{IDENT}+{WS}*={WS}*(true|false){WS}*\r?\n { return 100;} +^{IDENT}+{WS}*={WS}*\"[^\"\n\r]*\"{WS}*\r?\n { return 101;} +^{IDENT}+{WS}*={WS}*[[:digit:]]+{WS}*\r?\n { return 102;} +^{WS}*#.*\r?\n { } +^{WS}*\r?\n { } +.|\n { fprintf(stderr,"Invalid line.\n"); exit(-1);} + +%% + +int main(void); + +int main () +{ + yyin = stdin; + yyout = stdout; + while( yylex() ) + { + } + printf("TEST RETURNING OK.\n"); + return 0; +} + diff --git a/tests/test-noansi-nr/test.input b/tests/test-noansi-nr/test.input new file mode 100644 index 0000000..642e0fb --- /dev/null +++ b/tests/test-noansi-nr/test.input @@ -0,0 +1,5 @@ +# this is a comment +foo = "bar" +num = 43 +setting = false + diff --git a/tests/test-noansi-r/.cvsignore b/tests/test-noansi-r/.cvsignore new file mode 100644 index 0000000..40ede49 --- /dev/null +++ b/tests/test-noansi-r/.cvsignore @@ -0,0 +1,7 @@ +Makefile +parser.c +parser.h +scanner.c +test-noansi-r +OUTPUT +Makefile.in diff --git a/tests/test-noansi-r/Makefile.am b/tests/test-noansi-r/Makefile.am new file mode 100644 index 0000000..c0a33df --- /dev/null +++ b/tests/test-noansi-r/Makefile.am @@ -0,0 +1,48 @@ +# 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 + +EXTRA_DIST = scanner.l test.input +CLEANFILES = scanner.c parser.c parser.h test-noansi-r OUTPUT $(OBJS) +OBJS = scanner.o # parser.o + +AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) +#LDFLAGS = $(top_srcdir)/libfl.a +#YFLAGS = --defines --output=parser.c + +testname = test-noansi-r + +scanner.c: $(srcdir)/scanner.l + $(FLEX) $< + +parser.c: $(srcdir)/parser.y + $(BISON) $(YFLAGS) $< + +$(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-noansi-r/scanner.l b/tests/test-noansi-r/scanner.l new file mode 100644 index 0000000..e0b3ffb --- /dev/null +++ b/tests/test-noansi-r/scanner.l @@ -0,0 +1,69 @@ +/* + * 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 reentrant scanner. + This file will not compile under flex version <= 2.5.4. + Sample Input: + # this is a comment + foo = true + bar = "string value" + integer = 43 +*/ +%{ +#include "config.h" +%} + +%option prefix="test" outfile="scanner.c" +%option nounput noyywrap noyylineno warn nodefault +%option reentrant +%option noansi-definitions noansi-prototypes + +IDENT [[:alnum:]_-] +WS [[:blank:]] +%% + +^{IDENT}+{WS}*={WS}*(true|false){WS}*\r?\n { return 100;} +^{IDENT}+{WS}*={WS}*\"[^\"\n\r]*\"{WS}*\r?\n { return 101;} +^{IDENT}+{WS}*={WS}*[[:digit:]]+{WS}*\r?\n { return 102;} +^{WS}*#.*\r?\n { } +^{WS}*\r?\n { } +.|\n { fprintf(stderr,"Invalid line.\n"); exit(-1);} + +%% + +int main(void); + +int main () +{ + yyscan_t lexer; + yylex_init( &lexer ); + yyset_out ( stdout,lexer); + yyset_in ( stdin, lexer); + while( yylex(lexer) ) + { + } + yylex_destroy( lexer ); + printf("TEST RETURNING OK.\n"); + return 0; +} + diff --git a/tests/test-noansi-r/test.input b/tests/test-noansi-r/test.input new file mode 100644 index 0000000..2160628 --- /dev/null +++ b/tests/test-noansi-r/test.input @@ -0,0 +1,4 @@ +# this is a comment +foo = "bar" +num = 43 +setting = false |