编译原理实验初步设计

一、语言名称

         我是一人团队,鉴于想要完成的语言是类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语言版

五、其他设想

主要是关于编译器,能够实现对于一些程序的优化编译,部分错误自动纠正,提供编译信息以及函数运行时的运行信息

你可能感兴趣的:(crazylab)