char prog[100],token[8],ch; //指定关键字 char *rwtab[6]={"begin","if","then","while","do","end"}; //种别码 搜索指针 整型常数 int syn,p,m,n,sum; int kk; factor(); expression(); yucu(); term(); statement(); lrparser(); scaner(); main() {p=kk=0; printf("\nplease input a string (end with '#'): \n"); do { scanf("%c",&ch); prog[p++]=ch; }while(ch!='#'); p=0; scaner(); lrparser(); getch();}解释每行代码
时间: 2024-03-17 12:46:08 浏览: 74
这段代码是一段简单的词法分析器和语法分析器的实现代码,主要包括全局变量的定义和函数的调用。下面是每行代码的解释:
```
char prog[100],token[8],ch; //指定关键字
```
定义了三个字符型变量prog、token、ch,其中prog用于存储输入的字符串,token用于存储单词符号,ch用于存储当前读取的字符。
```
char *rwtab[6]={"begin","if","then","while","do","end"}; //种别码
```
定义了一个字符串指针数组rwtab,用于存储关键字,包括"begin"、"if"、"then"、"while"、"do"、"end"。
```
搜索指针 整型常数 int syn,p,m,n,sum;
```
定义了四个整型变量,其中syn用于存储当前单词符号的种别码,p用于指示当前读取到的字符在prog中的位置,m、n、sum用于辅助计算整型常数。
```
int kk;
```
定义了一个整型变量kk,用于记录是否出现错误。
```
factor(); expression(); yucu(); term(); statement(); lrparser(); scaner();
```
这些代码行是函数调用语句,分别调用了factor()、expression()、yucu()、term()、statement()、lrparser()和scaner()函数。
```
main() {
p=kk=0; //初始化p和kk
printf("\nplease input a string (end with '#'): \n"); //输出提示信息
do {
scanf("%c",&ch); //从标准输入读取字符
prog[p++]=ch; //将读取的字符存入prog数组
}while(ch!='#'); //读取直到输入'#'字符为止
p=0; //将p重置为0
scaner(); //调用scaner()函数进行词法分析
lrparser(); //调用lrparser()函数进行语法分析
getch(); //暂停程序运行
}
```
主函数main()中,首先初始化p和kk,然后输出提示信息,读取输入的字符串并存储到prog数组中,调用scaner()函数进行词法分析,调用lrparser()函数进行语法分析,最后暂停程序运行。
阅读全文