c语言中词法分析怎么识别注释,C语言中的词法分析-如何在检测多行注释时使星号被读取并输出?...

博主在开发词法分析程序时遇到了多行注释检测的逻辑错误。单行注释检测能正常工作,但多行注释检测无法正确识别开始的星号。代码示例给出了单行和多行注释的检测方法,并展示了一个包含单行和多行注释的示例输入文件。
摘要由CSDN通过智能技术生成

我正在研究词法分析程序,检测到一行注释时一切正常。 这是我的单行注释检测代码。//Single Comment

if ((Current_Character == '/') && (fgetc(File_Input) == '/')){

printf("%c", Current_Character);

do{

printf ("%c", Current_Character);

Current_Character = fgetc (File_Input);

}while(Current_Character != '\n');

printf("\b \t | COMMENT\n", Current_Character);

i = -1;

Lexeme_Count++;

Comment_Count++;

}

但是,当我尝试检测多行注释时,出现了逻辑错误,无法检测到开头的星号。 这是我的多行注释检测代码://Multi-Line Comment

if((Current_Character == '/') && (fgetc(File_Input) == '*')){

printf ("%c", fgetc(File_Input));

do{

printf ("%c", Current_Character);

Current_Character = fgetc(File_Input);

}while(Current_Character != '/');

printf("\b | COMMENT\n", Current_Character);

i = -1;

Lexeme_Count++;

Comment_Count++;

}

当前字符用于多行注释的第一个字符,即反斜杠,第二个字符是(fgetc(File_Input) (从文件中获取下一个最新字符)),用于打开问号。

这是我输入的文件的内容:#include

{

int a[3],t1,t2;

t1=2; a[0]=1; a[1]=2; a[t1]=3;

t2=

-

(a[2]+t1*6)/(a[2]

-

t1);

if t2>5 then

print(t2);

else {

int t3;

t3=99;

t2=

-

25;

print(

-

t1+t2*t3); // this is a comment on 2 lines

} endif /* THIS IS A MUTLI-LINE COMMENT ON 2 LINES

*/ }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值