/* * * File : chiaa.lex * Last Modified: 14 December 2002 * * */ %{#include "y.tab.h" #include int yylineno=1; // used for line count. %} DIGIT [0-9] LETTER [a-zA-Z] %% "void" {yylval.cVal = "VOID"; return(VOID); } "int" {yylval.cVal = "INT"; return(INT); } "if" {yylval.cVal = "IF"; return(IF); } "else" {yylval.cVal = "ELSE"; return(ELSE); } "while" {yylval.cVal = "WHILE"; return(WHILE); } "do" {yylval.cVal = "DO"; return(DO); } "for" {yylval.cVal = "FOR"; return(FOR); } "=" {yylval.cVal = "="; return(ASSIGNOP); } "+" {yylval.cVal = "+"; return(ADDOP); } "-" {yylval.cVal = "-"; return(ADDOP); } "*" {yylval.cVal = "*"; return(MULOP); } "/" {yylval.cVal = "/"; return(MULOP); } "%" {yylval.cVal = "%"; return(MULOP); } ">" {yylval.cVal = ">"; return(LTGT); } "<" {yylval.cVal = "<"; return(LTGT); } "<=" {yylval.cVal = "<="; return(LTGT); } ">=" {yylval.cVal = ">="; return(LTGT); } "!=" {yylval.cVal = "!="; return(RELOP); } "==" {yylval.cVal = "=="; return(RELOP); } "&&" {yylval.cVal = "AND"; return(AND); } "||" {yylval.cVal = "OR"; return(OR); } "!" {yylval.cVal = "NOT"; return(NOT); } "(" {return(LPAREN); } ")" {return(RPAREN); } "{" {return(OBRACE); } "}" {return(EBRACE); } "," {return(COMMA); } ";" {return(SEMICOLON); } {DIGIT}+ {yylval.iVal = atoi(yytext); return(NUMBER); } {LETTER}({LETTER}|{DIGIT}|"_")* {yylval.cVal = (char*)malloc(strlen(yytext)+1); strcpy(yylval.cVal, yytext); return(NAME); } [ \t] { /*ignore blank spaces*/ } [\n] {yylineno = yylineno +1;} %%