使用Happy(Haskell)从yacc语法生成Fortran 77解析器
题
我偶然发现了以下F77 yacc语法: http://yaxx.cvs.sourceforge.net/viewvc/yaxx/yaxx/fortran/fortran.y?revision=1.3&view=markup 。
如何使用快乐从该文件中创建Fortran 77解析器?
为什么会有一些C?/ C ++?该.y文件中的代码?
更新:感谢您的回复!
我一直在玩两种新方法:
- 从源代码包中提取和修改解析器,该源代码包与标题为 Parametric Fortran ,
- 借助 BNFC 从头开始编写语法。 醇>
我已经解决了两个简单的代码摘录。如果在本世纪内可以存在的东西,我会让人们知道^ __ ^“和合。
P / S:想知道我是否能够自己积聚足够的动力来启动一个自动差分引擎项目,以取代我们暂时依赖的仅二进制引擎。在初始阶段进行娱乐:我正在观看 Love Shuffle !这是一部非常有趣的J-Drama!非常值得推荐...解决方案 4
使用 BNFC 并从头开始编写自己的语法! BNFC可以创造奇迹,你可以按照自己的意愿完成解析。
其他提示
C是用于在读入语法时减少堆栈的语义操作。这些操作在C中,因为该定义适用于生成C源文件的Bison / Yacc。
如果您想使用Happy,请将BNF移植到Happy定义语法并在Haskell中编写您的语义。
只是冰山一角才能获得有用的东西。
如果您还没有副本,请投资 Dragon Book (编者:Aho,Lam,Sethi,Ullman - Pearson的原则,技巧和工具)
为什么其他答案在一般意义上都是正确的,因为您需要编写自己的操作来执行任何有意义的操作Yacc定义,您链接到的实际上没有任何操作与语法规则相关联。它的作用是定义yyerror函数和一些代码,用于根据令牌类型从yylval中提取值。
如果你不知道yyerror / yylval是什么,你应该阅读bison / flex教程。如果你对此更加认真,龙书也是一个很好的资源。斯坦福大学的课程还有一些很好的讲义,分别是基于本书的网络编译器。
您需要构建一个AST,它可以与Yacc文件中的C片段等效构建。
不隶属于 StackOverflow