EBNF形式的简单编程语言

时间:2015-12-06 16:23:01

标签: compiler-construction bnf ebnf

我正在研究一种非常简单的编程语言的语法,我需要用(E)BNF形式编写它。我已经看过许多简单语言的例子,例如,只允许对数字/标识符进行操作,或者使用The Syntax of C in Backus-Naur Form等较大复杂性的示例。

我需要什么(是的,我用Googled搜索了很多)是一个更简单的例子,我可以看看,以便我可以理解一般的层次结构。带有变量声明,函数声明,循环,赋值,操作等的东西,但比BNF中写的所有C都要小得多,也要简单。

我没有要求有人在这里写一个,因为这将是一项大工作,但如果有人能指出我的资源,那么我将非常感激。

我理解在BNF写一种语言的规则;我只是觉得我不知道从哪里开始以及如何订购语言。

1 个答案:

答案 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

写一个翻译是一种非常小而且非常容易的语言 - 对于你想做的事情,你不能变得更小,更务实。我推荐这本书以及它包含的练习。