Skip to content

xszhangxiaocuo/GSC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go实现的sample语言编译器

安装第三方绘图工具

在Linux中运行sudo apt-get install graphviz安装绘图工具

运行go get -u github.com/awalterschulze/gographviz导入绘图的第三方库

🫥Sample语言文法

<程序>→<声明语句>main()<复合语句><函数块>

<声明语句>→<值声明>|<函数声明>|ε

<值声明>→<常量声明>|<变量声明>

<常量声明>→const<常量类型><常量声明表>

<常量类型>→int|char|float

<常量声明表>→<变量>=<常量声明表0>

<常量声明表0>→ <常量声明表值><常量声明表1>

<常量声明表1>→ ;|,<常量声明表>

<常量声明表值>→<变量>|<常量>

<变量>→identifier

<常量>→<数值型常量>|<字符型常量>

<数值型常量>→integer|floatnumber

<字符型常量>→character

<变量声明>→var<变量类型><变量声明表>

<变量类型>→int|char|float

<变量声明表>→<单变量声明> <变量声明表0>

<变量声明表0>→;|,<变量声明表>

<单变量声明>→<变量><单变量声明0>

<单变量声明0>→=<布尔表达式>|ε

<函数声明语句>→<函数声明>;

<函数声明>→<函数类型><变量>(<函数声明形参列表>)

<函数类型>→int|char|float|void

<函数声明形参列表>→<函数声明形参>|ε

<函数声明形参>→<变量类型><函数声明形参0>

<函数声明形参0>→,<函数声明形参>|ε

<复合语句>→{<语句表>}

<语句表>→<语句><语句表0>|ε

<语句表0>→<语句表>|ε

<语句>→<值声明>|<执行语句>

<执行语句>→<数据处理语句>|<控制语句>|<复合语句>

<数据处理语句>→<赋值语句>|<函数调用语句>

<函数调用语句>→<函数调用>;

<控制语句>→<if语句>|<for语句>|<while语句>|<do while语句>|<return语句>|<break语句>|<continue语句>

<函数调用>→<变量>(<实参列表>)

<实参列表>→<实参>|ε

<实参>→<布尔表达式><实参0>

<实参0>→,<实参>|ε

<if 语句>→if(<布尔表达式>)<复合语句>< ifTail>

< ifTail>→else < ifTail0>|ε

< ifTail0> → <复合语句> | < if语句>

<for 语句>→for(<赋值表达式>;<布尔表达式>;<赋值表达式>)<复合语句>

<while 语句>→while(<布尔表达式>)<复合语句>

<dowhile 语句>→do<复合语句>while(<布尔表达式>);

<return 语句>→return<return 语句0>

<return 语句0>→;|<布尔表达式>;

<break 语句>→break;

<continue 语句>→continue;

<函数块>→<函数定义><函数块>|ε

<函数定义>→<函数类型><变量>(<函数定义形参列表>)<复合语句>

<函数定义形参列表>→<函数定义形参>|ε

<函数定义形参>→<变量类型><变量><函数定义形参0>

<函数定义形参0>→,<函数定义形参>|ε

<赋值语句>→<赋值表达式>;

<赋值表达式>→<变量>=<布尔表达式>

<布尔表达式>→<布尔项><布尔表达式0>

<布尔表达式0>→||<布尔项><布尔表达式0>|ε

<布尔项>→<布尔因子><布尔项0>

<布尔项0>→&&<布尔因子><布尔项0>|ε

<布尔因子>→<算术表达式><布尔因子0>

<布尔因子0>→<关系运算符><算术表达式>|ε

<算术表达式>→<项><算术表达式 0>

<算术表达式 0>->+<项><算术表达式 0>|-<项><算术表达式 0>|ε

<项>-><因子><项 0>

<项 0>->*<因子><项 0>|/<因子><项 0>|%<因子><项 0>|ε

<因子>->(<布尔表达式>)|<常量>|<变量>|<函数调用>|<因子0>

<因子0>→+<因子>|-<因子>|!<因子>

<关系运算符>→>|<|>=|<=|==|!=

About

go实现的sample语言的编译器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published