我正在用 yacc 编写我的第一个解析器。我想解析一个有 3 种“模式”的文件:
语句模式
表格标题模式
表格行模式
我希望我的解析器以语句模式开始,然后当它看到由减号组成的行时,切换到表标题模式。当它看到另一行减号时,切换到表格行模式,最后当它看到第三组减号时切换到语句模式:
statement...
statement...
statement...
----
table heading
----
table row
table row
table row
----
statement
statement
statement
我想到的一件事是,我可以有 3 个单独的语法,我可以在换行循环中切换它们。但是,我不知道如何在一个.y文件中创建多个语法。
另一件看起来可能的事情是使用“Lexical Tie-ins”(不幸的是,您必须在文档中搜索该字符串)。然而,yacc 教程的作者并没有真正告诉我关于这些“词法关联”的任何信息,只是说“这种‘后门’方法可以被详细阐述到有害的程度。不过,它代表了一种方式做一些很难做的事情,如果不是不可能做的话。” 这很难令人鼓舞。
侃侃尔雅
相关分类