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
+9
View File
@@ -0,0 +1,9 @@
//define a lexical analyser called Example1
lexer grammar Example1;
OP : '+'| '*' | '-' | '/' ;
DIGIT : [0-9] ;
LETTER : [A-Za-z] ;
ID : LETTER (LETTER | DIGIT)* ; // match idents
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
+17
View File
@@ -0,0 +1,17 @@
MAINFILE = main
PACKAGE = Example1
ifndef ANTLR4
$(error variable ANTLR4 is not set)
endif
default: $(PACKAGE).py
$(PACKAGE).py: $(PACKAGE).g4
$(ANTLR4) $^ -Dlanguage=Python3
run: $(MAINFILE).py $(PACKAGE)*.py
python3 $<
clean:
rm -rf *~ $(PACKAGE)*.py $(PACKAGE)*.pyc *.interp *.tokens __pycache*
+25
View File
@@ -0,0 +1,25 @@
from antlr4 import InputStream
from antlr4 import CommonTokenStream
from Example1 import Example1
import sys
def main():
# InputStream reads characters (from stdin in our case)
input_stream = InputStream(sys.stdin.read())
# The generated lexer groups characters into Tokens ...
lexer = Example1(input_stream)
# ... and the stream of Tokens is managed by the TokenStream.
stream = CommonTokenStream(lexer)
# Display the token stream
stream.fill() # needed to get stream.tokens (otherwise lazily filled-in)
for t in stream.tokens:
print(t)
print("Finished")
# warns pb if py file is included in others
if __name__ == '__main__':
main()