В настоящее время я пытаюсь написать программу, которая подсчитывает количество символов и строк в файле .in.Проблема в том, что когда я ввожу команду:
lex scanner.l
Она выдает ошибку, которая говорит:
scanner.l:22:warning, rule cannot be matched
Я был бы признателен за любую помощь в этом вопросе.Ниже мой код:
%option noyywrap
%{
#include <stdio.h>
#include <math.h>
int charno=0;
int lineno=0;
%}
character [a-zA-Z]
line [\n]
digit [0-9]
%%
{digit}
{
charno++;
}
{character}
{
charno++;
}
{line}
{
lineno++;
}
.
{
charno++;
}
%%
int main(int argc, char **argv)
{
++argv, --argc; /*skip over program name */
if (argc > 0)
yyin = fopen(argv[0], "r");
else
yyin = stdin;
yylex();
printf("Number of characters: %d ", charno);
printf("Number of lines: %d ", lineno);
return 0;
}