This is my lex file
%{
#include<stdio.h>
int codelines = 0;
int commentlines = 0;
int blanklines = 0;
int headerlines = 0;
int brackets = 0;
int keywords = 0;
%}
%%
int|return|char {keywords++}
^[ \t]*\n {blanklines++;}
[ a-zA-Z0-9();]+ {codelines++;}
\{|\} {brackets++;}
#[a-zA-Z0-9<>.]+ {headerlines++;}
\/\/[a-zA-Z0-9 *=]* {commentlines++;}
%%
int main(void) {
yylex();
printf("\n");
printf("Number of Code Lines %d\n", codelines);
printf("Number of Comment Lines %d\n", commentlines);
printf("Number of Blank Lines %d\n", blanklines);
printf("Number of Header Lines %d\n", headerlines);
printf("Number of Braces %d\n", brackets);
printf("Number of Keywords %d\n", keywords);
}
Here is the input file I'm passing to
#include<stdio.h>
int main() {
int a;
int b;
int c;
//My name is Witcher
//Analyzer
return 0;
}
The output is coming like this which is wrong because none of the keywords is detected
Number of Code Lines 8
Number of Comment Lines 2
Number of Blank Lines 0
Number of Header Lines 1
Number of Braces 2
Number of Keywords 0
It should be something like this with the keywords
Number of Code Lines 8
Number of Comment Lines 2
Number of Blank Lines 0
Number of Header Lines 1
Number of Braces 2
Number of Keywords 5
I've tried debugging by adding different statements when keywords should be recognized, but the statement is not run at all