最近我决定尝试实现一种非常小的语言,看看我能做些什么。在过去的几个小时里,我设法为我的语言编写了一个词法分析器,效果非常好。因此,在阅读了理论和内容后,我理解下一步是编写一个解析器。解析器的工作对我来说仍然有点不清楚(我正在编写一个很小的解释语言,所以事情将直接在代码中完成)它是通过令牌,理解意义,然后执行代码所说的/生成代码(用于编译器)?或者我读过有关抽象语法树的内容,这是我应该用解析器构建的吗?我不太清楚什么是AST甚至是真的...... 所以我想我的问题是,在勒克斯之后我的下一步是什么?解析器的工作是什么?最后但并非最不重要的是抽象语法树的工作是什么?
感谢您的帮助!
答案 0 :(得分:1)
我不确定你是怎么写lexer的,但是解决这个问题的标准方法是用flex
(以前为lex
)编写词法分析器并用{{1}编写解析器}。两者的结合使得实现各种语言变得非常容易。