actually commit TP2

This commit is contained in:
Rémi Di Guardia
2022-09-19 11:57:16 +02:00
parent 7f66aeacb8
commit 4a02f248df
23 changed files with 548 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
//define a tiny grammar for arith expressions with identifiers
grammar Example2;
full_expr: expr ';' EOF ;
expr: expr OP expr
| ID {print('oh an id : '+$ID.text)}
| INT
;
OP : '+'| '*' | '-' | '/' ;
INT : '0'..'9'+ ;
ID : ('a'..'z'|'A'..'Z')+ ;
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
+17
View File
@@ -0,0 +1,17 @@
MAINFILE = main
PACKAGE = Example2
ifndef ANTLR4
$(error variable ANTLR4 is not set)
endif
default: $(PACKAGE)Parser.py
$(PACKAGE)Parser.py: $(PACKAGE).g4
$(ANTLR4) $^ -Dlanguage=Python3
run: $(MAINFILE).py $(PACKAGE)Parser.py
python3 $<
clean:
rm -rf *~ $(PACKAGE)*.py $(PACKAGE)*.pyc *.interp *.tokens __pycache*
+22
View File
@@ -0,0 +1,22 @@
from antlr4 import InputStream
from antlr4 import CommonTokenStream
# include to use the generated lexer and parser
from Example2Lexer import Example2Lexer
from Example2Parser import Example2Parser
import sys
def main():
input_stream = InputStream(sys.stdin.read())
lexer = Example2Lexer(input_stream)
stream = CommonTokenStream(lexer)
parser = Example2Parser(stream)
parser.full_expr() # We want to recognize full_expr in the grammar Example2
print("Finished")
# warns pb if py file is included in others
if __name__ == '__main__':
main()