I try to read a antlr grammar with python.
As in this question:
Umlauts in JSON files lead to errors in Python code created by ANTLR4
the error:
File "/usr/local/lib/python2.7/dist-packages/antlr4/Lexer.py", line 109,
in nextToken
tokenStartMarker = self._input.mark()
AttributeError: 'str' object has no attribute 'mark'
occurs.
My grammar works fine with java and has no german umlauts.
The code is generated like this:
antlr4 -Dlanguage=Python2 -visitor MyGrammar.g4
Could the error have another reason? Maybe version problems or anything else?
The reason for getting this issue is because, you have not used antlr4.InputStream The mark function is part of the InputStream class
https://github.com/antlr/antlr4/blob/master/runtime/Python2/src/antlr4/InputStream.py
The following code works
GRAMMAR FILE
grammar someGrammar; operation : NUMBER '+' NUMBER ; NUMBER : [0-9]+ ; WHITESPACE : ' ' -> skip ;
PYTHON CODE
import antlr4 from antlr4 import * from psqlListener import psqlListener from psqlLexer import psqlLexer from psqlParser import psqlParser import sys inputStream = antlr4.InputStream('4+5'); lexer = psqlLexer(inputStream) stream = CommonTokenStream(lexer) parser = psqlParser(stream)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With