aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcompile_meson.py13
-rw-r--r--[-rwxr-xr-x]mparser.py21
2 files changed, 22 insertions, 12 deletions
diff --git a/compile_meson.py b/compile_meson.py
new file mode 100755
index 0000000..79b949b
--- /dev/null
+++ b/compile_meson.py
@@ -0,0 +1,13 @@
+#!/usr/bin/python3 -tt
+
+# This file generates all files needed to run
+# Meson. It does the equivalent of "make" in
+# standard build systems.
+
+import os
+import mparser
+
+fullfile = os.path.abspath(__file__)
+fulldir = os.path.dirname(fullfile)
+
+mparser.generate_parser_files(fulldir)
diff --git a/mparser.py b/mparser.py
index 7a38ccf..499381f 100755..100644
--- a/mparser.py
+++ b/mparser.py
@@ -215,20 +215,17 @@ def test_lexer():
break
print(tok)
-def test_parser():
- code = """func_call('something', 'or else')
- objectname.methodname(abc)
-
- emptycall()"""
- print(build_ast(code))
+def generate_parser_files(outputdir):
+ code = """project('empty', 'c')
+"""
+ build_ast(code, outputdir=outputdir)
-def build_ast(code):
+def build_ast(code, outputdir=None):
code = code.rstrip() + '\n'
lex.lex()
- parser = yacc.yacc()
+ if outputdir:
+ parser = yacc.yacc(outputdir=outputdir)
+ else:
+ parser = yacc.yacc()
result = parser.parse(code)
return result
-
-if __name__ == '__main__':
- #test_lexer()
- test_parser()