Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yangchenglong11/compiler
a simple compiler about L language.
https://github.com/yangchenglong11/compiler
Last synced: about 2 months ago
JSON representation
a simple compiler about L language.
- Host: GitHub
- URL: https://github.com/yangchenglong11/compiler
- Owner: yangchenglong11
- License: mit
- Created: 2018-01-17T00:43:30.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-01-23T16:37:10.000Z (almost 7 years ago)
- Last Synced: 2024-06-20T08:12:21.135Z (7 months ago)
- Language: Go
- Size: 780 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# compiler
a simple compiler about L language.### L语言文法定义
```
程序定义:
<程序> -> program <标识符> <程序体>
<程序体> -> <变量说明> <复合句>
```
```
变量定义:
<变量说明> -> var <变量定义> | ε
<变量定义> -> <标识符表>: <类型> | <标识符表>: <类型>; <变量定义>
<标识符表> -> <标识符>, <标识符表> | <标识符>
```
```
语句定义:
<复合句> -> begin <语句表> end
<语句表> -> <执行句>; <语句表> | <执行句>
<执行句> -> <简单句> | <结构句>
<简单句> -> <赋值句>
<赋值句> -> <变量>:=<表达式>
<变量> -> <标识符>
<结构句> -> <复合句> | |
-> if <布尔表达式> then <执行句> | if <布尔表达式> then <执行句> else <执行句>
-> while <布尔表达式> do <执行句>
```
```
表达式定义:
<表达式> -> <算术表达式> | <布尔表达式>
<算术表达式> -> <算术表达式> + <项> | <算术表达式> - <项> | <项>
<项> -> <项> * <因子> | <项> / <因子> | <因子>
<因子> -> <算术量> | (<算术表达式>)
<算术量> -> <标识符> | <整数> | <实数>
<布尔表达式> -> <布尔表达式> or <布尔项> | <布尔项>
<布尔项> -> <布尔项> and <布尔因子> | <布尔因子>
<布尔因子> -> not <布尔因子> | <布尔量>
<布尔量> -> <布尔常数> | <标识符> | (<布尔表达式>) | <关系表达式>
<关系表达式> -> <标识符> <关系运算符> <标识符>
<关系运算符> -> < | <= | = | > | >= | <>
```
```
类型定义:
<类型> -> integer | bool | real
```
```
单词定义:
<标识符> -> <字母> | <标识符> <字母> | <标识符> <数字>
<整数> -> <数字> | <整数> <数字>
<实数> -> <整数> | <实数> <数字>
<布尔量> -> true | false
```
```
字符定义:
<字母> -> A│B│C│D│E│F│G│H│I│J│K│L│M│N│O│P│Q│R│S│T│U│V│W│X│Y│Z│a│b│c│d│e│f│g│h│i│j│k│l│m│n│o│p│q│r│s│t│u│v│w│x│y│z
<数字> -> 0│1│2│3│4│5│6│7│8│9
```### 源程序书写格式规定
- 单词必须在一行内写完,即:一个单词不能分两行写;
- 源程序语句的书写采用自由格式,即:一行可写多个语句,一个语句也可分多行写;
- 源程序不含注释;
- 语句以“;”结束,“end”前的一个语句的“;”不可以省略