繁体   English   中英

Antlr Parser测试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?

您必须调用的函数取决于您要解析的内容。 您可以使用解析器中生成的任何函数来解析语言的一部分,但是对于整个语言,通常选择顶级解析器规则(如果您编写了语法,则应该知道哪个是顶级规则)。

所有解析器函数都返回一个解析树,您可以使用该树来查找例如符号或输入结构等。

顺便说一句。 您正在使用ANTLR4,它会生成解析树,而不是抽象语法树。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM