Support .lex and .yacc file suffixes. (Matthew Doar)
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 22 Oct 2004 22:22:44 +0000 (22:22 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 22 Oct 2004 22:22:44 +0000 (22:22 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@1137 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/CHANGES.txt
src/engine/SCons/Tool/lex.py
src/engine/SCons/Tool/yacc.py
test/LEX.py
test/YACC.py

index 9845e85fbfb1c6d7f7be1438aeb4476b3104a688..4cfc71c46bb0a943f2acce398df6e8f1d11cc26f 100644 (file)
@@ -25,6 +25,10 @@ RELEASE 0.97 - XXX
   - Add a set of canned PathOption validators:  PathExists (the default),
     PathIsFile, PathIsDir and PathIsDirCreate.
 
+  From Matthew Doar:
+
+  - Add support for .lex and .yacc file suffixes for Lex and Yacc files.
+
   From Eric Frias:
 
   - Huge performance improvement:  wrap the tuples representing an
index 18acbbd329615983efeb29216cbce0e87856f5b5..4a17faeca30cfad01c97d0135b750d6cafdbdf1e 100644 (file)
@@ -42,6 +42,7 @@ def generate(env):
     c_file, cxx_file = SCons.Tool.createCFileBuilders(env)
 
     c_file.add_action('.l', SCons.Defaults.LexAction)
+    c_file.add_action('.lex', SCons.Defaults.LexAction)
     cxx_file.add_action('.ll', SCons.Defaults.LexAction)
 
     env['LEX']      = env.Detect('flex') or 'lex'
index ff3f040f4058c18b5f975ab3c420f836d1f5aafc..2c93b7c5cbc3b8a1448b1bf898e42cf028766f7a 100644 (file)
@@ -61,8 +61,10 @@ def generate(env):
     c_file, cxx_file = SCons.Tool.createCFileBuilders(env)
     
     c_file.add_action('.y', SCons.Defaults.YaccAction)
+    c_file.add_action('.yacc', SCons.Defaults.YaccAction)
     cxx_file.add_action('.yy', SCons.Defaults.YaccAction)
     c_file.add_emitter('.y', yEmitter)
+    c_file.add_emitter('.yacc', yEmitter)
     cxx_file.add_emitter('.yy', yyEmitter)
 
     env['YACC']      = env.Detect('bison') or 'yacc'
index 90549bd937ec77905a492a5d2a51dcb36856c3ed..3f596fb1e6e62397b6cb884105d36244274fb935 100644 (file)
@@ -51,6 +51,7 @@ sys.exit(0)
 test.write('SConstruct', """
 env = Environment(LEX = r'%s mylex.py', tools=['default', 'lex'])
 env.Program(target = 'aaa', source = 'aaa.l')
+env.Program(target = 'bbb', source = 'bbb.lex')
 """ % python)
 
 test.write('aaa.l', r"""
@@ -64,9 +65,21 @@ main(int argc, char *argv[])
 }
 """)
 
-test.run(arguments = 'aaa' + _exe, stderr = None)
+test.write('bbb.lex', r"""
+int
+main(int argc, char *argv[])
+{
+       argv[argc++] = "--";
+       printf("LEX\n");
+       printf("bbb.lex\n");
+       exit (0);
+}
+""")
+
+test.run(arguments = '.', stderr = None)
 
 test.run(program = test.workpath('aaa' + _exe), stdout = "mylex.py\naaa.l\n")
+test.run(program = test.workpath('bbb' + _exe), stdout = "mylex.py\nbbb.lex\n")
 
 
 
index 13203ff1c2a769c8a2f290ae0a6ebe93ec207ee9..062e4bcb6db39d92687f58b54cd91d18abf89ca1 100644 (file)
@@ -66,6 +66,7 @@ sys.exit(0)
 test.write('SConstruct', """
 env = Environment(YACC = r'%s myyacc.py', tools=['default', 'yacc'])
 env.Program(target = 'aaa', source = 'aaa.y')
+env.Program(target = 'bbb', source = 'bbb.yacc')
 """ % python)
 
 test.write('aaa.y', r"""
@@ -79,9 +80,21 @@ main(int argc, char *argv[])
 }
 """)
 
-test.run(arguments = 'aaa' + _exe, stderr = None)
+test.write('bbb.yacc', r"""
+int
+main(int argc, char *argv[])
+{
+       argv[argc++] = "--";
+       printf("YACC\n");
+       printf("bbb.yacc\n");
+       exit (0);
+}
+""")
+
+test.run(arguments = '.', stderr = None)
 
 test.run(program = test.workpath('aaa' + _exe), stdout = "myyacc.py\naaa.y\n")
+test.run(program = test.workpath('bbb' + _exe), stdout = "myyacc.py\nbbb.yacc\n")