如何在语法中编写类似Python的缩进语言?

ole*_*ner 5 parsing

我正在编写一个带有类似Python的内置语言的工具.我想在语法中使缩进有意义(因此行开头的制表符和空格将表示命令的嵌套).

做这个的最好方式是什么?

我以前写过递归下降和有限自动机解析器.

uli*_*tko 5

当前的CPython解析器似乎是使用一种称为ASDL的东西生成的.

至于你问的,压痕,它的完成使用特殊令牌词法分析器叫INDENTDEDENT.要复制它,只需在你的词法分析器中实现这些标记(如果使用堆栈来存储先前缩进行的起始列,这很容易),然后像往常一样将它们插入到你的语法中(就像任何其他关键字或运算符标记一样) .