在上一节中,我们探讨了左结合和右结合,实现了a=b=3
这一类的语句,在这一节中,我们将会实现注释和定义变量时赋值。
SysY 语言中注释的规范与 C 语言一致,如下:
- 单行注释:以序列
//
开始,直到换行符结束,不包括换行符。 - 多行注释:以序列
/*
开始,直到第一次出现*/
时结束,包括结束处*/
。
修改词法分析
这是一个比较简单的问题,我们只需要识别出//
、/*
和*/
然后跳过其中的内容即可。
case '/':
c = get_nextchr();
switch (c)
{
case '/': single_annotation(); break;
case '*': block_annotation(); break;
default: t->token = T_DIV; put_backchr(c);break;
}
break;
单句注释扫描函数:
// 单句注释扫描函数
void single_annotation()
{
char strbuf[MAXINTS];
fgets(strbuf, MAXINTS, Infile);
Line++;
scan(&Token);