diff options
Diffstat (limited to 'Tools/peg_generator/Makefile')
-rw-r--r-- | Tools/peg_generator/Makefile | 71 |
1 files changed, 7 insertions, 64 deletions
diff --git a/Tools/peg_generator/Makefile b/Tools/peg_generator/Makefile index eef2d80..7f695de 100644 --- a/Tools/peg_generator/Makefile +++ b/Tools/peg_generator/Makefile @@ -8,97 +8,40 @@ endif VENVDIR ?= ./venv VENVPYTHON ?= $(VENVDIR)/bin/python CPYTHON ?= ../../Lib -MYPY ?= mypy +MYPY ?= ./venv/bin/mypy +BLACK ?= ./venv/bin/black GRAMMAR = ../../Grammar/python.gram TOKENS = ../../Grammar/Tokens -TESTFILE = data/cprog.py -TIMEFILE = data/xxl.py -TESTDIR = . -TESTFLAGS = --short - -data/xxl.py: - $(PYTHON) -m zipfile -e data/xxl.zip data build: peg_extension/parse.c peg_extension/parse.c: $(GRAMMAR) $(TOKENS) pegen/*.py peg_extension/peg_extension.c ../../Parser/pegen.c ../../Parser/pegen_errors.c ../../Parser/string_parser.c ../../Parser/action_helpers.c ../../Parser/*.h pegen/grammar_parser.py - $(PYTHON) -m pegen -q c $(GRAMMAR) $(TOKENS) -o peg_extension/parse.c --compile-extension + $(VENVPYTHON) -m pegen -q c $(GRAMMAR) $(TOKENS) -o peg_extension/parse.c --compile-extension clean: -rm -f peg_extension/*.o peg_extension/*.so peg_extension/parse.c - -rm -f data/xxl.py -rm -rf $(VENVDIR) -dump: peg_extension/parse.c - cat -n $(TESTFILE) - $(PYTHON) -c "from peg_extension import parse; import ast; t = parse.parse_file('$(TESTFILE)', mode=1); print(ast.dump(t))" - regen-metaparser: pegen/metagrammar.gram pegen/*.py - $(PYTHON) -m pegen -q python pegen/metagrammar.gram -o pegen/grammar_parser.py + $(VENVPYTHON) -m pegen -q python pegen/metagrammar.gram -o pegen/grammar_parser.py # Note: These targets really depend on the generated shared object in peg_extension/parse.*.so but # this has different names in different systems so we are abusing the implicit dependency on # parse.c by the use of --compile-extension. -.PHONY: test - venv: $(PYTHON) -m venv $(VENVDIR) - $(VENVPYTHON) -m pip install -U pip setuptools - $(VENVPYTHON) -m pip install -r requirements.pip + $(VENVPYTHON) -m pip install -U pip setuptools black mypy @echo "The venv has been created in the $(VENVDIR) directory" -test: run - -run: peg_extension/parse.c - $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TESTFILE)'); exec(t)" - -compile: peg_extension/parse.c - $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TESTFILE)', mode=2)" - -parse: peg_extension/parse.c - $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TESTFILE)', mode=1)" - -check: peg_extension/parse.c - $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TESTFILE)', mode=0)" - -stats: peg_extension/parse.c data/xxl.py - $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TIMEFILE)', mode=0); parse.dump_memo_stats()" >@data - $(PYTHON) scripts/joinstats.py @data - -time: time_compile - -time_compile: venv data/xxl.py - $(VENVPYTHON) scripts/benchmark.py --target=xxl compile - -time_parse: venv data/xxl.py - $(VENVPYTHON) scripts/benchmark.py --target=xxl parse - -time_peg_dir: venv - $(VENVPYTHON) scripts/test_parse_directory.py \ - -d $(TESTDIR) \ - $(TESTFLAGS) \ - --exclude "*/failset/*" \ - --exclude "*/failset/**" \ - --exclude "*/failset/**/*" - -time_stdlib: $(CPYTHON) venv - $(VENVPYTHON) scripts/test_parse_directory.py \ - -d $(CPYTHON) \ - $(TESTFLAGS) \ - --exclude "*/bad*" - mypy: regen-metaparser $(MYPY) # For list of files, see mypy.ini format-python: - black pegen scripts - -format: format-python + $(BLACK) pegen -find_max_nesting: - $(PYTHON) scripts/find_max_nesting.py +format: venv format-python tags: TAGS |