我正在研究一种非常简单的编程语言的语法,我需要用(E)BNF形式编写它。我已经看过许多简单语言的例子,例如,只允许对数字/标识符进行操作,或者使用The Syntax of C in Backus-Naur Form等较大复杂性的示例。
我需要什么(是的,我用Googled搜索了很多)是一个更简单的例子,我可以看看,以便我可以理解一般的层次结构。带有变量声明,函数声明,循环,赋值,操作等的东西,但比BNF中写的所有C都要小得多,也要简单。
我没有要求有人在这里写一个,因为这将是一项大工作,但如果有人能指出我的资源,那么我将非常感激。
我理解在BNF写一种语言的规则;我只是觉得我不知道从哪里开始以及如何订购语言。
答案 0 :(得分:0)
(看起来你可能找到了你想要的东西,但你 - 以及未来的读者 - 可能会发现以下内容有用。)
来自哥本哈根大学的TorbenÆgidiusMorgensen这本书Basics of Compiler Design包含了一种非常简单的语言,用于实现编译器和解释器。它的BNF如下:
Program --> Funs
Funs --> Fun
Funs --> Fun Funs
Fun --> TypeId ( TypeIds ) = Exp
TypeId --> *int* **id**
TypeId --> *bool* **id**
TypeIds --> TypeId
TypeIds --> TypeId , TypeIds
Exp --> num
Exp --> id
Exp --> Exp + Exp
Exp --> Exp = Exp
Exp --> if Exp then Exp else Exp
Exp --> id ( Exps )
Exp --> let id = Exp in Exp
Exps --> Exp
Exps --> Exp , Exps
写一个翻译是一种非常小而且非常容易的语言 - 对于你想做的事情,你不能变得更小,更务实。我推荐这本书以及它包含的练习。