# ANTLR generator version. MUST match antlr4-python3-runtime in requirements.txt,
# otherwise the generated parsers fail to load at runtime with a version-skew error.
ANTLR_VERSION := 4.13.0
ANTLR := antlr4 -v $(ANTLR_VERSION)

grammars: ocl-grammar dtm-grammar stm-grammar ptm-grammar

ocl-grammar: ocl-py/ocl/parser/OclExpressionParser.py

ocl-py/ocl/parser/OclExpressionParser.py: ocl-py/OclExpression.g4
	cd ocl-py && $(ANTLR) -visitor -listener -Dlanguage=Python3 OclExpression.g4 -o ocl/parser && cd ..

dtm-grammar: src/dtm/parser/DataModelParser.py

src/dtm/parser/DataModelParser.py: src/DataModel.g4
	cd src && $(ANTLR) -visitor -listener -Dlanguage=Python3 -lib ../ocl-py DataModel.g4 -o dtm/parser && cd ..	

stm-grammar: src/stm/parser/SecurityModelParser.py

src/stm/parser/SecurityModelParser.py: src/SecurityModel.g4
	cd src && $(ANTLR) -visitor -listener -Dlanguage=Python3 -lib ../ocl-py SecurityModel.g4 -o stm/parser && cd ..	

ptm-grammar: src/ptm/parser/PrivacyModelParser.py

src/ptm/parser/PrivacyModelParser.py: src/PrivacyModel.g4
	cd src && $(ANTLR) -visitor -listener -Dlanguage=Python3 -lib ../ocl-py PrivacyModel.g4 -o ptm/parser && cd ..	

clean:
	rm -f ocl-py/ocl/parser/OclExpression*
	rm -f src/dtm/parser/DataModel*
	rm -f src/stm/parser/SecurityModel*
	rm -f src/ptm/parser/PrivacyModel*
