我需要手动编写解析器。无法选择LL(*)和LR(可能试试Earley?)。我是否应该使用自下而上的解析方式,因为LL的语法会比较困难?书写手动解析器
Q
书写手动解析器
0
A
回答
0
这取决于您尝试使用的语法。 LL在语法上存在一些不确定性的麻烦(你不得不使所有的东西都是左递归)。
如果您不能决定,请使用LR(1)或LALR。甚至可能是GLR。
0
尝试XText。这是给你的。快速简单地创建语言,解析器和编辑器
0
手动编写的最简单的解析器类型是递归下降解析器,该解析器位于LL解析器系列中。大多数其他类型的解析器都很难手工编写(LALR解析器,它使用大型状态转换表),或者用于解析复杂语言(例如用于解析自然语言的Earley解析器)。
wikipedia有关于递归下降解析的一些很好的信息。
2
我会用递归下降解析器或者可能是尾递归下降解析器(即LL)或自顶向下运算符优先解析器。
解析器的LR族,无论是LR,LALR(k),LALR(1),GLR还是别的都太过“怪异”了。如果你试图编写其中的一个,你通常最终会实现一个解析器生成器,无论如何,只是为了保持理智。
相关问题
- 1. 手动书写.xml
- 2. 如何着手编写解析器?
- 3. 手写自顶向下解析器
- 4. C++解析代码(手写)
- 5. 解析JSON手动
- 6. 证书解析器在android
- 7. 书写解析器,需要一个语法并生成解析树
- 8. 手动解析MTOM消息
- 9. 手动解析字符串
- 10. “手动”解析SOAP响应
- 11. 解析嵌套JsonArray手动
- 12. 当解析的文件被程序写入时,使用解析器生成器或手写代码?
- 13. 解析X509证书
- 14. 解析X509证书
- 15. CSV解析的书
- 16. 写入BibTex解析器
- 17. 编写序言解析器
- 18. 写作解析器规则
- 19. 用Wisent编写解析器
- 20. 试图编写解析器
- 21. 用手编写命题逻辑解析器
- 22. 扑克手范围解析器...我如何编写语法?
- 23. 解析服务器证书问题
- 24. 手动重置密码解析服务器,服务器端
- 25. 如何手动重写Antlr4分析树?
- 26. 在Haskell中使用解析器组合器库编写的分析解析器
- 27. 在解析到对象之前手动解析JSON
- 28. 为GUI调试器编写解析器
- 29. 手动解析AJAX返回承诺
- 30. Dojo手动解析没有发生
它很大程度上取决于您尝试分析哪种语言。没有关于你的申请的更多信息,就不可能提供任何合理的建议。您可能还想看看“相关”问题(向下滚动并查看右侧)。这里有很多关于解析的问题,还有很多很好的讨论。 – 2010-11-23 21:02:52
你为什么需要*手动编写解析器?这通常没有太多的价值。 – 2010-11-23 21:43:00
我不能使用yacc或其他解析器,我的解析器将在其中工作 – mystdeim 2010-11-24 10:47:08