wangriyu / compiler

a simple compiler about L language.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

compiler

a simple compiler about L language.

L语言文法定义

 程序定义:
 <程序> -> program <标识符> <程序体>
 <程序体> -> <变量说明> <复合句>
 变量定义:
 <变量说明> -> var <变量定义> | ε
 <变量定义> -> <标识符表>: <类型> | <标识符表>: <类型>; <变量定义>
 <标识符表> -> <标识符>, <标识符表> | <标识符>
 语句定义:
 <复合句> -> begin <语句表> end
 <语句表> -> <执行句>; <语句表> | <执行句>
 <执行句> -> <简单句> | <结构句>
 <简单句> -> <赋值句>
 <赋值句> -> <变量>:=<表达式>
 <变量> -> <标识符>
 <结构句> -> <复合句> | <if句> | <While句>
 <if句> -> if <布尔表达式> then <执行句> | if <布尔表达式> then <执行句> else <执行句>
 <While句> -> 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”前的一个语句的“;”不可以省略

About

a simple compiler about L language.

License:MIT License


Languages

Language:Go 100.0%