?? 語法分析-main.c
字號:
#include "stdio.h"
#include "string.h"
#include "scaner.h"
void yucu(); //語句串分析程序
void statement(); //語名分析程序
void expression(); //表達(dá)式分析程序
void term(); //項(xiàng)分析程序
void factor(); //因子分析程序
int kk=0;
//語法分析程序
void irparser() //begin<語句串>end
{
if(syn==1) //是否以begin 開頭
{
scaner();
yucu(); //是,則分析語句串
if(syn==6) //是否以end結(jié)束
{
scaner(); //找到'#'
if(syn==0&&kk==0) //若以'#'結(jié)束,則syn=0
printf("success!!!!");
}
else //語句串輸入沒有錯(cuò),則只是end輸入錯(cuò)誤
{
if(kk!=1)
printf("\n沒有'end',輸入錯(cuò)誤");
kk=1;
}
}
else //不是以begin開頭
{
printf("\n沒有以'begin'開頭,或輸入'begin'錯(cuò)誤");
kk=1;
}
}
//語句串分析程序
void yucu() //<語句>(;<語句>)
{
statement(); //第一個(gè)語句
while(syn==26) //識(shí)別;
{
scaner();
statement(); //下一個(gè)語句
}
}
//語句分析程序
void statement() //賦值語句->標(biāo)識(shí)符=表達(dá)式
{
if(syn==10) //標(biāo)識(shí)符
{
scaner();
if(syn==18) //:=
{
scaner();
expression(); //表達(dá)式
}
else
{
printf("\n輸入'='錯(cuò)誤"); //:=沒有輸入正確
kk=1;
}
}
else
{
printf("\n語句錯(cuò)誤");
kk=1;
}
}
//表達(dá)式分析程序
void expression() //<項(xiàng)>(+<項(xiàng)>|-<項(xiàng)>)
{
term(); //項(xiàng)首
while(syn==13||syn==14)
{
scaner();
term();
}
}
//項(xiàng)分析程序
void term() //<因子>(*<因子>|/<因子>)
{
factor(); //首因子
while(syn==15||syn==16) //+,-
{
scaner();
factor();
}
}
//因子分析程序
void factor() //標(biāo)識(shí)符|數(shù)字|表達(dá)式
{
if(syn==10||syn==11) //標(biāo)識(shí)符|數(shù)字
scaner();
else if(syn==27) //(
{
scaner();
expression();
if(syn==28) //)
scaner();
else
{
printf("\n輸入')'錯(cuò)誤");
kk=1;
}
}
else
{
printf("\n表達(dá)式錯(cuò)誤");
kk=1;
}
}
void main()
{
p=0;
printf("\n please input string:\n");
do //從鍵盤接收到prog
{
ch=getchar();
prog[p++]=ch;
}while(ch!='#'); //以#結(jié)束
p=0;
scaner(); //識(shí)別第一個(gè)單詞,是否為begin
irparser();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -