如何将压痕驱动的代码解析为AST



这是我的代码,我需要将其解析为ast:

one
 two
  three
   four
 five
 six
  seven
如您所见,它是压痕驱动的。我真的找不到解释我的解析器(我正在使用antlr4)的方法,即领先空间是子级别的指标。

基本上,如果没有Lexer的帮助,您就无法向解析器解释。

相反,您要做的就是入侵Lexer,以跟踪在跨空间扫描时启动线路的空间数量。如果空间数量从上一行发生变化,则Lexer会发出令牌。如果计数上升,请发出缩进的令牌。如果计数下降,请发出一个detent令牌。

现在,您可以在解析器规则中添加缩进和删除令牌。他们在逻辑上像{and}一样,用c般的语言。

相关内容

  • 没有找到相关文章

最新更新