Antlr解析器测试Python

2024-05-31 10:29:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Antlr创建了一个数据日志解析器。我不知道该怎么办。我要生成AST

Antlr生成了以下文件:

Lexer.py
Listener.py
Lexer.tokens
Parser.py
Program.tokens

我已经读完了教程。我不明白。如何在Python中测试输入:

^{pr2}$

我想生成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?

Tags: frompyimporttreeparserstreamastlexer
1条回答
网友
1楼 · 发布于 2024-05-31 10:29:01

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

所有解析器函数都返回一个解析树,然后可以用来查找符号或输入结构等

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

相关问题 更多 >