我想为使用lex和yacc的c编译器进行语义阶段。现在的问题是如果我在C程序中有多个错误,它会在第一次之后停止。我能做什么?编译器的语义阶段
Q
编译器的语义阶段
4
A
回答
2
我强烈建议您将语义分析作为单独的阶段执行,而不是作为解析阶段的一部分。使用YACC只能建立一个abstract syntax tree,然后在一个单独的函数中遍历这棵树。所述函数在树中移动时具有无限的自由度,而不必“遵循解析”。至于你提到的具体问题,@ pmg的评论似乎指出了这个问题。
1
对此没有一个绝对的答案。处理它的一个典型方法是创建一个特殊的模式来读取符号,直到它到达一行的末尾(例如)一个分号为止,并给出一个合理的信号,表明之后的任何内容都是作为新的声明,定义,声明等等,然后从这一点重新开始解析(保留足够的上下文来知道,例如,你当前正在解析一个函数体,所以你在这个基础上接受/拒绝输入)。
相关问题
- 1. c编译器的语义阶段
- 2. 编译器的阶段?
- 3. 添加编译器阶段
- 4. 的Protobuf编译器阶:ScalaPB
- 5. Intellij11/Grails 2.0.1编译错误“阶段'语义分析'中的BUG!异常'”
- 6. 编译器阶段的符号表和行号编号
- 7. 编译超出预处理器阶段,但在装配前阶段
- 8. 优化发生在编译阶段
- 9. 如何绕过编译阶段
- 10. 使用CMAKE编译CUDA C++ - 指定了多个编译阶段
- 11. 如何编译这个程序?链接器阶段出错
- 12. 了解在g ++编译的前端阶段中生成的抽象语法树
- 13. 标识特殊方法的编译器/解释器阶段的名称?
- 14. C++翻译阶段混乱
- 15. 编译时编译器跳过语句?
- 16. CLR语言优化。语言编译器VS JIT编译器
- 17. 以C语言翻译的8个阶段的海报
- 18. 角的WebPack编译成功,停留在编译阶段 - 网页没有开通
- 19. 编译器的哪个阶段检测到以下错误的程序?
- 20. sizeof运算符评估在gcc编译的哪个阶段
- 21. 瓶盖 - 编译VS解读阶段的JavaScript
- 22. 未添加到阶段配置列表的自定义阶段
- 23. 编译器谓语优化
- 24. 遗传编程阶段
- 25. 使用maven-plugin-plugin使用help-mojo阶段编译Maven插件
- 26. Maven assembly插件不会在编译阶段覆盖文件
- 27. 停止斯卡拉编译特定阶段
- 28. 如何在编译阶段解决cmake错误
- 29. Config Maven 2在编译阶段打印出javac命令
- 30. Maven:构建耳朵:跳过编译阶段?
在你的yacc文件中,用'%s is defined'消息去除'printf'后的'exit(0);' – pmg 2011-04-03 20:17:42