我正在编写一个小型解释器,用于简单的BASIC语言,使用avr-gcc工具链在C语言的AVR微控制器上练习.但是,我想知道是否有任何开源工具可以帮助我编写词法分析器和解析器.
如果我写这个在我的Linux机器上运行,我可以使用flex/bison.现在我把自己限制在一个8位平台上,我必须手动完成所有操作,不是吗?
我一直在阅读有关解释器/编译器如何工作的一些内容,而我感到困惑的一个领域是AST和CST之间的区别.我的理解是解析器生成一个CST,将它交给语义分析器,将其转换为AST.但是,我的理解是语义分析器只是确保遵循规则.我真的不明白为什么它会实际做出任何改变,使其变得抽象而不是具体.
有没有关于语义分析器的东西,或者AST和CST之间的差异有点人为?
parsing terminology abstract-syntax-tree semantic-analysis concrete-syntax-tree
我有一个AST(抽象语法树),现在我想测试我的编译器,给它2个或更多的数字,并期望输出与数学运算的结果(如计算器).
我的问题是,构建解释器的最佳方法是什么?访问AST节点是递归的,所以我不知道有多少封装计算存在,直到我到达树的末尾.但由于这是通过迭代迭代完成的,我怎样才能最终完成所有操作?
谢谢