|
8 | 8 | VENVDIR ?= ./venv
|
9 | 9 | VENVPYTHON ?= $(VENVDIR)/bin/python
|
10 | 10 | CPYTHON ?= ../../Lib
|
11 |
| -MYPY ?= mypy |
| 11 | +MYPY ?= ./venv/bin/mypy |
| 12 | +BLACK ?= ./venv/bin/black |
12 | 13 |
|
13 | 14 | GRAMMAR = ../../Grammar/python.gram
|
14 | 15 | TOKENS = ../../Grammar/Tokens
|
15 |
| -TESTFILE = data/cprog.py |
16 |
| -TIMEFILE = data/xxl.py |
17 |
| -TESTDIR = . |
18 |
| -TESTFLAGS = --short |
19 |
| - |
20 |
| -data/xxl.py: |
21 |
| - $(PYTHON) -m zipfile -e data/xxl.zip data |
22 | 16 |
|
23 | 17 | build: peg_extension/parse.c
|
24 | 18 |
|
25 | 19 | 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
|
26 |
| - $(PYTHON) -m pegen -q c $(GRAMMAR) $(TOKENS) -o peg_extension/parse.c --compile-extension |
| 20 | + $(VENVPYTHON) -m pegen -q c $(GRAMMAR) $(TOKENS) -o peg_extension/parse.c --compile-extension |
27 | 21 |
|
28 | 22 | clean:
|
29 | 23 | -rm -f peg_extension/*.o peg_extension/*.so peg_extension/parse.c
|
30 |
| - -rm -f data/xxl.py |
31 | 24 | -rm -rf $(VENVDIR)
|
32 | 25 |
|
33 |
| -dump: peg_extension/parse.c |
34 |
| - cat -n $(TESTFILE) |
35 |
| - $(PYTHON) -c "from peg_extension import parse; import ast; t = parse.parse_file('$(TESTFILE)', mode=1); print(ast.dump(t))" |
36 |
| - |
37 | 26 | regen-metaparser: pegen/metagrammar.gram pegen/*.py
|
38 |
| - $(PYTHON) -m pegen -q python pegen/metagrammar.gram -o pegen/grammar_parser.py |
| 27 | + $(VENVPYTHON) -m pegen -q python pegen/metagrammar.gram -o pegen/grammar_parser.py |
39 | 28 |
|
40 | 29 | # Note: These targets really depend on the generated shared object in peg_extension/parse.*.so but
|
41 | 30 | # this has different names in different systems so we are abusing the implicit dependency on
|
42 | 31 | # parse.c by the use of --compile-extension.
|
43 | 32 |
|
44 |
| -.PHONY: test |
45 |
| - |
46 | 33 | venv:
|
47 | 34 | $(PYTHON) -m venv $(VENVDIR)
|
48 |
| - $(VENVPYTHON) -m pip install -U pip setuptools |
49 |
| - $(VENVPYTHON) -m pip install -r requirements.pip |
| 35 | + $(VENVPYTHON) -m pip install -U pip setuptools black mypy |
50 | 36 | @echo "The venv has been created in the $(VENVDIR) directory"
|
51 | 37 |
|
52 |
| -test: run |
53 |
| - |
54 |
| -run: peg_extension/parse.c |
55 |
| - $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TESTFILE)'); exec(t)" |
56 |
| - |
57 |
| -compile: peg_extension/parse.c |
58 |
| - $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TESTFILE)', mode=2)" |
59 |
| - |
60 |
| -parse: peg_extension/parse.c |
61 |
| - $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TESTFILE)', mode=1)" |
62 |
| - |
63 |
| -check: peg_extension/parse.c |
64 |
| - $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TESTFILE)', mode=0)" |
65 |
| - |
66 |
| -stats: peg_extension/parse.c data/xxl.py |
67 |
| - $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TIMEFILE)', mode=0); parse.dump_memo_stats()" >@data |
68 |
| - $(PYTHON) scripts/joinstats.py @data |
69 |
| - |
70 |
| -time: time_compile |
71 |
| - |
72 |
| -time_compile: venv data/xxl.py |
73 |
| - $(VENVPYTHON) scripts/benchmark.py --target=xxl compile |
74 |
| - |
75 |
| -time_parse: venv data/xxl.py |
76 |
| - $(VENVPYTHON) scripts/benchmark.py --target=xxl parse |
77 |
| - |
78 |
| -time_peg_dir: venv |
79 |
| - $(VENVPYTHON) scripts/test_parse_directory.py \ |
80 |
| - -d $(TESTDIR) \ |
81 |
| - $(TESTFLAGS) \ |
82 |
| - --exclude "*/failset/*" \ |
83 |
| - --exclude "*/failset/**" \ |
84 |
| - --exclude "*/failset/**/*" |
85 |
| - |
86 |
| -time_stdlib: $(CPYTHON) venv |
87 |
| - $(VENVPYTHON) scripts/test_parse_directory.py \ |
88 |
| - -d $(CPYTHON) \ |
89 |
| - $(TESTFLAGS) \ |
90 |
| - --exclude "*/bad*" |
91 |
| - |
92 | 38 | mypy: regen-metaparser
|
93 | 39 | $(MYPY) # For list of files, see mypy.ini
|
94 | 40 |
|
95 | 41 | format-python:
|
96 |
| - black pegen scripts |
97 |
| - |
98 |
| -format: format-python |
| 42 | + $(BLACK) pegen |
99 | 43 |
|
100 |
| -find_max_nesting: |
101 |
| - $(PYTHON) scripts/find_max_nesting.py |
| 44 | +format: venv format-python |
102 | 45 |
|
103 | 46 | tags: TAGS
|
104 | 47 |
|
|
0 commit comments