Я пытаюсь написать программу с использованием Lex, которая распознает некоторые буквы, цифры и выполняет незначительные действия.Проблема в том, что программа ничего не распознает.На самом деле я изменил правила на простое правило, чтобы распознавать все, но все равно ничего не делает.Что происходит?Может быть, это просто (должно быть, есть несколько строк), но я новичок с Лексом, и я не могу это исправить.Спасибо
simple.l:
%{
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
int count = 0;
%}
/*Reglas*/
%%
[a-zA-Z_]*[a-zA-Z_0-9]* { count++; printf("%s ", yytext); }
.* { count++; printf("%s ", yytext); }
%%
/*Procedimientos de usuario*/
int main(int argc, char * argv[]) {
FILE * yyin;
if(argc == 2) {
yyin =fopen(argv[1],"rt");
if(yyin == NULL) {
printf("File %s can not be opened\n", argv[1]);
exit(-1);
}
} else {
printf("Error in arguments");
exit(-1);
}
yylex();
printf("Counter : %d \n", count);
fclose(yyin);
return 0;
}
Файл импута: example.txt
CSC104H1
CSC108H1
CSC204H1
CSC258H1
Кроме того, мне нужно использовать Ctrl + D для завершения программы (какЯ видел в stackoverflow), если нет, программа не завершает сама.