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