EBNF形式的简单编程语言
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EBNF形式的简单编程语言相关的知识,希望对你有一定的参考价值。
我正在研究一种非常简单的编程语言的语法,我需要用(E)BNF形式编写它。我已经看过许多简单语言的例子,例如,只允许对数字/标识符进行操作,或者使用The Syntax of C in Backus-Naur Form等更大复杂性的例子。
我需要什么(是的,我用Googled搜索了很多)是一个更简单的例子,我可以看看,以便我可以理解一般的层次结构。具有变量声明,函数声明,循环,赋值,操作等的东西,但是比BNF中编写的所有C都小得多且简单得多。
我不是要求有人在这里写一个,因为这将是一项大工作,但如果有人能指出我的资源,那么我将非常感激。
我理解在BNF写一种语言的规则;我只是觉得我不知道从哪里开始以及如何订购语言。
答案
(看起来你可能找到了你想要的东西,但是你 - 以及未来的读者 - 可能会发现以下内容很有用。)
来自哥本哈根大学的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
编写翻译是一种非常小而且非常容易的语言 - 对于你想做的事情,你不能变得更小,更务实。我推荐这本书以及它包含的练习。
以上是关于EBNF形式的简单编程语言的主要内容,如果未能解决你的问题,请参考以下文章
在Haskell赋值中为实现语言实现解析器时,无法解析'\'