一、语言名称
我是一人团队,鉴于想要完成的语言是类c语言,所以取名为BosiC,即李博的基础C语言。
二、语言可能包含设施
首先是语言的基本语法和变量定义:
Grammar
Tokens
INT → /* A sequence ofdigits without spaces */
FLOAT → /*A real numberconsisting of digits and one decimal point .The decimal point must besurrounded by at least one digit */
ID → /* A characterstring consisting of 52 upper and lower case alphabetic characters, the 10digits and the underscore. In addition, identifiers must not start with startwith a digit */
SEMI → ;
COMMACOMMA→ ,
ASSIGNOP → =
RELOP → >| < | >= | <= | == | !=
PLUS → +
MINUS → -
STAR → *
DIV → /
AND → &&
OR → ||
DOT → .
NOT → !
TYPE → int | float
LP → (
RP → )
LB → [
RB → ]
LC → {
RC → }
STRUCT → struct
RETURN → return
IF → if
ELSE → else
WHILE → while
High High-Level Definitions
Program → ExtDefList
ExtDefList → ExtDef ExtDefList
ExtDef ExtDefExtDefExtDef → SpecifierExtDecList SEMI
| Specifier SEMI
| Specifier FunDec CompSt
Ext DecList → VarDec
| VarDec COMMA ExtDecList
Specifiers
Specifier → TYPE
| StructSpecifier
StructSpecifier → STRUCTOptTag LC DefList RC
| STRUCT Tag
OptTag → ID
| ε
Tag → ID
Declarators
VarDec → ID
| VarDec LB INT RB
FunDec → ID LP VarList RP
| ID LP RP
VarList→ ParamDec COMMA VarList
| ParamDec
ParamDec → Specifier VarDec
Statements
CompSt → LC DefList StmtListRC
StmtList→ Stmt StmtList
| ε
Stmt → Exp SEMI
| CompSt
| RETURN Exp SEMI
| IF LP Exp RP Stmt
| IF LP Exp RP Stmt ELSE Stmt
| WHILE LP Exp RP Stmt
Local Definitions
DefList → Def DefListDef
| ε
Def → Specifier DecListSEMI
DecList → Dec
| Dec COMMA DecList
DecDec → VarDec
| VarDec ASSIGNOP Exp
Expressions
Exp → Exp ASSIGNOP Exp
| Exp AND Exp
| Exp OR Exp
| Exp RELOP Exp
| Exp PLUS Exp
| Exp MINUS Exp
| Exp STAR Exp
| Exp DIV Exp
| LP Exp RP
| MINUS Exp
| NOT Exp
| ID LP Args RP
| ID LP
| Exp LB Exp RB
| Exp DOT ID
| ID
| INT
| FLOAT
Args → Exp COMMA Args
| Exp
数据类型包括简单的整数类型、浮点数(实数)类型、字符类型
变量包含三种数据类型,变量名不得与保留字冲突,以字母开头,由字母和数字组成的字符串,可在声明时赋值
表达式遵从c语言表达式的使用规则
控制结构包括:顺序控制、选择控制和循环控制以及无条件转移控制。
三、亮点及创新
准备实现支持函数嵌套,类似pascal语言的功能;
由于是基础语言,准备为语言自身提供一些基本算法的调用,算法已经优化实现过,方便程序编辑者随时调用。
增量编译选项,即当原程序已经编译,修改部分函数或变量,再次编译时,利用上次编译结果提高编译效率。
四、完成项目可以利用的资源
学长实验结果
各类论坛博客以及各组博客
许畅老师和戴新宇老师两班提供的实验指导手册
助教老师帮助
虎书c语言版
五、其他设想
主要是关于编译器,能够实现对于一些程序的优化编译,部分错误自动纠正,提供编译信息以及函数运行时的运行信息