2

是否需要学习 BNF 语法或文本处理算法才能学习 Flex 和 Bison 或类似类型的解析器/扫描器?

我打算学习 flex 和 Bison,但我没有任何编译器写作水平的知识,所以请告诉我是否有可能在不了解 BNF 语法且没有编译器写作水平知识的情况下学习 flex 和 Bison。

4

2 回答 2

2

假设您将学习 BNF 语法和文本处理算法,作为学习 Flex 和 Bison 的副产品。如果您碰巧在学术上学习过 BNF,那么您之前的学习会对您有所帮助,但这种之前的学习可能对您的目的不是必需的。

顺便说一句,如果您的语言恰好是 C++,那么填补 Bison 旧角色的常用现代工具是Boost Spirit。

于 2012-09-04T13:27:31.690 回答
0

如果您在开始使用这些工具之前不知道,那么您以后就会知道。语法与这些工具齐头并进,因此这使您有机会同时学习这两种工具。

如果你想要一本关于这个主题的教科书,我推荐这个。然而,它涵盖了许多其他主题,总体上是实现语言的一个很好的参考。

我选择的工具而不是 Flex/Bison 是ANTLR。它是一种非常流行、现代且易于使用的工具。它有很好的文档以及一些可供参考的书籍。这是编辑器的截图: ANTLR

于 2012-09-24T19:38:54.290 回答