Code Monkey home page Code Monkey logo

gsc's Introduction

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>→+<因子>|-<因子>|!<因子>

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

gsc's People

Contributors

xszhangxiaocuo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.