nitcc: add an example of a monkey-patching of a Lexer to add behavior.
[nit.git] / contrib / nitcc / src / Makefile
1 NITC=../../../bin/nitc
2
3 all: nitcc calc minilang blob
4
5 nitcc_parser_gen: nitcc_parser_gen.nit
6 @echo "*** Compile the nitcc bootstrap parser generator -- level 0"
7 ${NITC} nitcc_parser_gen.nit -v
8
9 nitcc0: nitcc.nit nitcc_parser_gen
10 @echo "*** Compile the primitive nitcc --- bootstrap level 0"
11 ./nitcc_parser_gen
12 ${NITC} nitcc.nit -v -o nitcc0
13
14 nitcc1: nitcc0 nitcc.nit nitcc.sablecc
15 @echo "*** Compile the intermediate nitcc --- bootstrap level 1"
16 ./nitcc0 nitcc.sablecc
17 ${NITC} nitcc.nit -v -o nitcc1
18
19 nitcc: nitcc1 nitcc.nit nitcc.sablecc
20 @echo "*** Compile the final nitcc --- bootstrap level 2"
21 ./nitcc1 nitcc.sablecc
22 ${NITC} nitcc.nit -v
23
24 calc: nitcc ../examples/calc.sablecc ../examples/calc.nit
25 @echo "*** Example program, calc"
26 cd ../examples && ../src/nitcc calc.sablecc
27 ${NITC} ../examples/calc.nit -v
28 ./calc -e "1+2*3-40/5+9------1"
29
30 minilang: nitcc ../examples/minilang.sablecc ../examples/minilang.nit
31 @echo "*** Example program, minilang"
32 cd ../examples && ../src/nitcc minilang.sablecc
33 ${NITC} ../examples/minilang.nit -v
34 printf "10\n42\n" | ./minilang ../examples/minilang.minilang
35
36 blob: nitcc ../examples/blob.sablecc ../examples/blob.nit
37 @echo "*** Example program, blob"
38 cd ../examples && ../src/nitcc blob.sablecc
39 ${NITC} ../examples/blob.nit -v
40 ./blob -e "abc {{{ 1 }}} de {{{ 2 }}} { 3 }"
41
42 check: tests
43 tests:
44 cd ../tests && ./run
45
46 clean:
47 rm -r \
48 *.dot *.out \
49 nitcc_lexer.nit nitcc_parser.nit nitcc_test_parser.nit nitcc_parser_gen \
50 nitcc0 nitcc1 \
51 calc minilang blob \
52 ../examples/*.dot ../examples/*.out ../examples/*_lexer.nit ../examples/*_parser.nit ../examples/*_test_parser.nit \
53 2>/dev/null || true
54
55 .PHONY: tests