Antlr 解析器测试 Python
Antlr Parser Testing Python
我已经使用 Antlr 创建了一个 Datalog 解析器。我不确定如何进行。我想生成 AST
Antlr 生成了以下文件:
Lexer.py
Listener.py
Lexer.tokens
Parser.py
Program.tokens
我已经完成了教程。我听不懂。如何在 Python:
中测试我的输入
a(X): b(X)
我想生成 AST 以便我可以将其用于我的查询处理引擎。
所以我想通了,我正在编写代码来生成 AST。
import sys
import antlr4
from antlr4 import *
from NLexer import *
from NParser import *
from NListener import *
char_stream = InputStream('a(1)\n')
lexer = NLexer(char_stream )
stream = CommonTokenStream(lexer)
parser = NParser(stream)
tree = parser.XXX() . // This is where I am confused. How do I generate
tree. What function should be called here
instead of XXX?
您必须调用的函数取决于您要解析的内容。你可以在你的解析器中使用任何生成的函数来解析你语言的一个子部分,但是对于整个语言你通常 select 顶级解析器规则(你应该知道哪个是顶级规则,如果你写语法)。
所有解析器函数 return 一个解析树,然后您可以使用它来查找例如符号或输入结构等
顺便说一句。您正在使用 ANTLR4,它生成解析树,而不是抽象语法树。
我已经使用 Antlr 创建了一个 Datalog 解析器。我不确定如何进行。我想生成 AST
Antlr 生成了以下文件:
Lexer.py
Listener.py
Lexer.tokens
Parser.py
Program.tokens
我已经完成了教程。我听不懂。如何在 Python:
中测试我的输入 a(X): b(X)
我想生成 AST 以便我可以将其用于我的查询处理引擎。
所以我想通了,我正在编写代码来生成 AST。
import sys
import antlr4
from antlr4 import *
from NLexer import *
from NParser import *
from NListener import *
char_stream = InputStream('a(1)\n')
lexer = NLexer(char_stream )
stream = CommonTokenStream(lexer)
parser = NParser(stream)
tree = parser.XXX() . // This is where I am confused. How do I generate
tree. What function should be called here
instead of XXX?
您必须调用的函数取决于您要解析的内容。你可以在你的解析器中使用任何生成的函数来解析你语言的一个子部分,但是对于整个语言你通常 select 顶级解析器规则(你应该知道哪个是顶级规则,如果你写语法)。
所有解析器函数 return 一个解析树,然后您可以使用它来查找例如符号或输入结构等
顺便说一句。您正在使用 ANTLR4,它生成解析树,而不是抽象语法树。