Regular Grammer: Non-Terminals
Regular Grammer: Non-Terminals
NON-TERMINALS Goal StmtList Stmt Stat -> -> -> -> | | | | | | -> | -> -> | | | | -> | | -> -> | -> -> | | | -> | | StmtList <EOF> Stmt ( StmtList )? Stat ( ";" )? Label Instruction Label Data Label Instruction Data SymDef Directive <IDENTIFIER_COLON> <DECIMAL_COLON> OpCode ( Operand ( "," Operand ( "," Operand )? )? )? Register "(" Register ")" FloatRegister AddrImmed ( "(" Register ")" )? <FLOAT> <DOLLAR_DECIMAL> RegisterName DollarRegisterName <DOLLAR_F_DECIMAL> LabelExpr ( ( "+" | "-" ) Expr )? Expr LabelRef ( "-" LabelRef )? <DECIMAL_B> <DECIMAL_F> <IDENTIFIER> "." DataMode DataList ".ascii" <STRING> ".asciiz" <STRING>
Register
Data
| DataList DataExpr
".space" Expr
-> DataExpr ( "," DataList )* -> Expr ( ":" Expr )? | <FLOAT> ( ":" <FLOAT> )? -> <IDENTIFIER_EQUAL> Expr
SymDef
UnaryOp
Term Expr_ ( BinaryOp Expr Expr_ )* UnaryOp Term Primary Constant "(" Expr ")" "*" "/" "%" "+" "-" "<<" ">>" "^" "|" "+" "-" "~" "!" |sin |cos |tan
REGULAR EXPRESSIONS
SKIP : /* WHITE SPACE */ { <WHITE_SPACE: " " | "\t" | "\n" | "\r" | "\f"> } SPECIAL_TOKEN : /* COMMENTS */ { <SINGLE_LINE_COMMENT: "#" (~["\n","\r"])* ("\n"|"\r"|"\r\n")> } TOKEN : { | < PLUS: "+" > | < MINUS: "-" > | < TIMES: "*" > | < BY: "/" > | < MOD: "%" > | < LSHIFT: "<<" > | < RSHIFT: ">>" > | < AMP: "&" > | < CARET: "^" > | < PIPE: "|" > | < TILDE: "~" > | < BANG: "!" > |<SINE: sin> |<COS: cos> }
COMPILER LAB
SCIENTIFIC CALCULATOR
SUBMITTED BYANUBHAV PANDEY(11103439) APARNA DUTT(11103440) NAVANKUR GARG(11103509) ANKIT KALIA(11104660) BATCH B4