Я работаю над программой лексического анализа, все работает нормально при обнаружении однострочного комментария. Это мой код для обнаружения однострочных комментариев.
//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) (получение следующего последнего символа из файла), предназначен для открытия askterisk.
Это содержимое файла, который я ввел:
#include <conio.h>
{
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
*/ }