Question: Can you fix the errors in the code for my assignment: ( scanner . l ) % { #include #include #include parser.tab.h extern int
Can you fix the errors in the code for my assignment: scannerl
#include
#include
#include "parser.tab.h
extern int linenum;
option noyywrap
Lexer rules
yylval.num atoiyytext; return NUM;
AZazAZaz yylval.id strdupyytext; return ID;
if return IF;
"while" return WHILE;
"else" return ELSE;
"int" return INT;
"float" return FLOAT;
return AddOP;
return SubOP;
return MulOP;
return DivOP;
return AsOP;
return OpenCurlyBracket;
return ClosedCurlyBracket;
return OpenBracket;
return ClosedBracket;
; return Semicolon;
t Skip whitespace
linenum; return
;
fprintfstderr "Error: Unknown character s at line d
yytext, linenum; exit;
parsery
#include
#include
#include "scanner.h Include the scanner header for token definitions
extern int linenum; Track the line number for error reporting
token ID NUM INT FLOAT IF ELSE WHILE
token OpenCurlyBracket ClosedCurlyBracket OpenBracket ClosedBracket OpenSquareBracket ClosedSquareBracket
token AddOP SubOP MulOP DivOP AsOP Equal NotEqual LT LTE GT GTE Comma Semicolon
left AddOP SubOP
left MulOP DivOP
nonassoc RELOP
program:
Program ID declarationlist statementlist
;
declarationlist:
declarationlist vardeclaration
vardeclaration
;
vardeclaration:
typespecifier ID ;
typespecifier ID NUM ;
;
typespecifier:
INT
FLOAT
;
statementlist:
statementlist statement
empty
;
statement:
assignmentstmt
compoundstmt
selectionstmt
iterationstmt
;
assignmentstmt:
var expression ;
;
var:
ID
ID expression
;
compoundstmt:
statementlist
;
selectionstmt:
IF expression statement
IF expression statement ELSE statement
;
iterationstmt:
WHILE expression statement
;
expression:
additiveexpression
additiveexpression RELOP additiveexpression
;
additiveexpression:
term additiveexpressiontail
;
additiveexpressiontail:
AddOP term additiveexpressiontail
SubOP term additiveexpressiontail
empty
;
term:
factor termtail
;
termtail:
MulOP factor termtail
DivOP factor termtail
empty
;
factor:
expression
var
NUM
;
void yyerrorconst char s
fprintfstderr "Syntax error: s at line d
s linenum;
exit;
int main
yyparse;
return ;
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
