如何从头开始编写词法分析器?

2024-05-15 01:07:02 发布

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

我想从头开始为python编写一个词法分析器。但我不知道从哪里开始,怎么开始。对于初学者,我想假设我们将有一个python程序作为一组字符串传递给分析器。分析器应该找出新行的位置以及要查看的适当空白。如何在python源代码中找出新行?我已经阅读了python的词法规范,我们可以使用基于堆栈的方法来解析空格缩进,但不知道如何查找在。是它只是用'\n'进行正则表达式检查,还是有任何算法方法来确定这一点?在

我故意不想使用像lex、yacc或flex这样的东西。在


Tags: 方法字符串程序规范算法分析器源代码堆栈
1条回答
网友
1楼 · 发布于 2024-05-15 01:07:02

我最近开发了一个用于查找SQL语句的解析器。我知道规则不同,但方法可能相似。我用来开发python解析器。第一步是一个正则表达式,它可以找到代币的开头。然后,我将该列表传递给一个有限状态机,该状态机确定令牌所代表的内容。在

这些规则需要考虑换行符、分号、字符串和可以跨行的注释。在python中,您将更加关注换行和缩进。在

一旦能够解析出单个语句,那么应该将这些语句传递给能够解析语句的函数,它可能会采用类似的方法。在

您可以在https://github.com/PeterWooster/SQL-Tools/blob/master/SQLStatements.py找到SQL解析器,这说明了查找标记并使用FSM处理它们的方法。是的,它处理跨越换行符的字符串。在

相关问题 更多 >

    热门问题