首页 文章

如何创建无上下文语法?

提问于
浏览
1

我正在学习编译器,我对如何创建语言的无上下文语法感到困扰 . 有没有一种方法可以为大多数语言创建无上下文语法?我是这个领域的新手所以问题是基本的,我希望你能帮助我 .

1 回答

  • 1

    大多数语言规范都附带语法形式,为您提供设计特定语法的基础 .

    对特定语法的需求来自于解析器技术的选择;你的语法必须遵守该解析器技术的局限性(它们都有一些) . 所以你的第一个问题应该是,"What parser generator am I going to use?"(包括如果你坚持,"none [recursive descent]"然后仔细考虑你为什么使用那个解析器生成器(通常是"its the first thing I found, or Mikey likes it",两者都是腐烂的原因) . 特别是考虑了一个特定的解析器生成器,您可以考虑语言规范本身来决定解析器生成器's shortcomings are likely to be an issue. This choice isn' t是否对huge set of possible answers有很大帮助,但这是您作为工程师的问题 .

    一旦选择了解析器生成器,然后从语言规范中获取语法形式,并尝试将其弯曲到解析器生成器的限制 . 这是您的大部分“创作”工作将来自的地方 . 在面对大型复杂语言时,在较小语言上多次这样做的经验非常有用 .

    如果你有一个没有明显参考语法的语言,你会有更难的时间 . 你必须猜测各种语言结构的语法规则,以及这些规则如何组合成更大的程序结构 . 如果这是你面临的问题,你最好有 Build 一些其他工作语法的经验,否则你很可能会失去希望 . (COBOL在这里非常有趣 . )

    一旦你获得了解析器生成器显然可以接受的语法,那么你需要通过解析器运行尽可能多的代码 . 这有助于发现语法错误,以及标准文档的不一致或错误描述 . 您还会发现由其他编译器处理的“您的语言”源代码可能包含许多其他编译器添加的意外,因为它们可以 .

    祝好运 .

相关问题