lexc
#cmds
First, make sure you have Flex installed:
For installing on Ubuntu- sudo apt-get install flex
- Save as
analyzer.l - Run:
flex analyzer.l - Compile:
gcc lex.yy.c -o analyzer -lfl - Execute:
./analyzer
%{
#include <stdio.h>
%}
KEYWORD auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while
IDENTIFIER [a-zA-Z_][a-zA-Z0-9_]*
NUMBER [0-9]+(\.[0-9]+)?
OPERATOR \+|\-|\*|\/|%|==|!=|<=|>=|<|>|\=\=|\=|\&\&|\|\||\+\+|\-\-
DELIMITER [;,\[\]\(\)\{\}]
STRING \"([^\\\"]|\\.)*\"
%%
{KEYWORD} { printf("Keyword\t\t=> %s\n", yytext); }
{IDENTIFIER} { printf("Identifier\t=> %s\n", yytext); }
{NUMBER} { printf("Number\t\t=> %s\n", yytext); }
{OPERATOR} { printf("Operator\t=> %s\n", yytext); }
{DELIMITER} { printf("Delimiter\t=> %s\n", yytext); }
{STRING} { printf("String\t\t=> %s\n", yytext); }
\/\/.* { printf("Comment\t\t=> %s\n", yytext); }
[ \t\n]+ { /* Ignore whitespace */ }
. { printf("Unknown\t\t=> %c\n", yytext[0]); }
%%
int yywrap() {
return 1;
}
int main() {
printf("Enter C code (Ctrl+D to end):\n\n");
yylex();
return 0;
}
Comments
Post a Comment