Files
compiler-the-translators/lexicalStructure.lex
2025-02-10 13:12:46 -05:00

40 lines
892 B
Plaintext

/* so we placed the citation here. */
/* definitions */
%option noyywrap
%{
#include "typedefs.h"
%}
DIGIT [0-9]
CHAR \\n|\\t|\\'|[^'\n\t\\]
SCHAR \\n|\\t|\\\"|[^\"\n\\]
%%
/* rules */
{DIGIT}+ {printf( "C_INTEGER: %s (%d)\n", yytext, atoi( yytext ) );}
"null" {printf( "C_NULL: %s (%d)\n", yytext, atoi( yytext ) );}
'{CHAR}' {printf( "C_CHARACTER: %s (%d)\n", yytext, atoi( yytext ) );} /*using double \ per documentation to show escaped chars*/
"true" {printf( "C_TRUE: %s (%d)\n", yytext, atoi( yytext ) );}
"false" {printf( "C_FALSE: %s (%d)\n", yytext, atoi( yytext ) );}
\"{SCHAR}+\" {printf( "C_STRING: %s (%d)\n", yytext, atoi( yytext ) );}
.|\n
%%
/* user code */
int main( int argc, char **argv )
{
argc--, argv++; /* skip over program name */
if ( argc > 0 )
yyin = fopen( argv[0], "r" );
else
yyin = stdin;
yylex();
}