在Linux中运行sudo apt-get install graphviz
安装绘图工具
运行go get -u github.com/awalterschulze/gographviz
导入绘图的第三方库
<程序>→<声明语句>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>→+<因子>|-<因子>|!<因子>
<关系运算符>→>|<|>=|<=|==|!=