r(
TK(BREAK), TK(SEMI)
alt TK(QUIT), TK(SEMI)
alt TK(RETURN), NT(OPT_EXPR), TK(SEMI)
alt TK(FOR), TK(LPAREN), NT(OPT_EXPR), TK(SEMI),
NT(OPT_EXPR), TK(SEMI),
NT(OPT_EXPR),
TK(RPAREN), NT(STMT)
alt TK(IF), TK(LPAREN), NT(REL_EXPR), TK(RPAREN), NT(STMT)
alt TK(WHILE), TK(LPAREN), NT(REL_EXPR), TK(RPAREN), NT(STMT)
alt TK(PRINT), NT(EXPR), TK(SEMI)
alt TK(LCURLY), NT(STMTS), TK(RCURLY)
alt TK(CST), NT(STMT)
alt NT(EXPR), TK(SEMI)
alt TK(SEMI)
),
r(
NT(STMT), NT(STMTS)
alt EPSILON
),
r(
TK(PLUS)
alt TK(MINUS)
),
r(
TK(STAR)
alt TK(SLASH)
alt TK(PERCENT)
),
r(
TK(PLUSEQ)
alt TK(MINUSEQ)
alt TK(STAREQ)
alt TK(SLASHEQ)
alt TK(PERCENTEQ)
alt TK(CARETEQ)
alt TK(EQ)
),
r(
TK(LT)
alt TK(GT)
alt TK(EQEQ)
alt TK(EXCLEQ)
alt TK(LTEQ)
alt TK(GTEQ)
),
r(
TK(PLUS)
alt TK(MINUS)
alt EPSILON
),
r(
TK(PLUSPLUS)
alt TK(MINUSMINUS)
),
r(
TK(PLUSPLUS)
alt TK(MINUSMINUS)
alt EPSILON
),
rrr(ADD_EXPR, (NT(MUL_EXPR)), (NT(ADD_OP), NT(MUL_EXPR))),
rrr(MUL_EXPR, (NT(EXP_EXPR)), (NT(MUL_OP), NT(EXP_EXPR))),
rrr(EXP_EXPR, (NT(FACTOR)), (TK(CARET), NT(FACTOR))),
r(
NT(UNARY_OP), NT(ATOM)
),
r(
NT(INCR_DECR_OP), TK(IDENT)
alt TK(IDENT), NT(OPT_INCR_DECR_OP)
alt TK(LPAREN), NT(EXPR), TK(RPAREN)
alt TK(INT)
alt TK(FLOAT)
),
r(
TK(IDENT), NT(ASGN_OP), NT(ADD_EXPR)
),
r(
NT(ADD_EXPR), NT(REL_EXPR_OPT_REL)
),
ropt(NT(REL_OP), NT(ADD_EXPR)),
ropt(NT(EXPR)),
r(
NT(ASGN_EXPR)
alt NT(REL_EXPR)
)
};
struct rdesc_grammar_symbol bc_production_rules[BC_NT_COUNT][BC_MAX_ALT_COUNT+1][BC_MAX_ALT_SIZE+1]
[Token/nonterminal ID]
#define BC_NT_COUNT
[Gramer declaration]
TK_PLUS, TK_MINUS, TK_STAR, TK_SLASH, TK_PERCENT, TK_CARET,
TK_PLUSEQ, TK_MINUSEQ, TK_STAREQ, TK_SLASHEQ, TK_PERCENTEQ, TK_CARETEQ, TK_EQ,
TK_PLUSPLUS, TK_MINUSMINUS,
TK_LT, TK_GT, TK_EQEQ, TK_EXCLEQ, TK_LTEQ, TK_GTEQ,
TK_LPAREN, TK_RPAREN, TK_LCURLY, TK_RCURLY, TK_SEMI, TK_COMMA,
TK_DEFINE, TK_BREAK, TK_QUIT, TK_PRINT,
TK_RETURN, TK_FOR, TK_IF, TK_WHILE, TK_CST,
};
NT_STMT, NT_STMTS,
NT_ADD_OP, NT_MUL_OP,
NT_ASGN_OP, NT_REL_OP,
NT_UNARY_OP, NT_INCR_DECR_OP, NT_OPT_INCR_DECR_OP,
NT_ADD_EXPR, NT_ADD_EXPR_REST,
NT_MUL_EXPR, NT_MUL_EXPR_REST,
NT_EXP_EXPR, NT_EXP_EXPR_REST,
NT_FACTOR, NT_ATOM,
NT_ASGN_EXPR, NT_REL_EXPR, NT_REL_EXPR_OPT_REL,
NT_OPT_EXPR,
NT_EXPR,
};
"+", "-", "*", "/", "%", "^",
"+=", "-=", "*=", "/=", "%=", "^=", "=",
"++", "--",
"<", ">", "==", "!=", "<=", ">=",
"(", ")", "{", "}", ";", ",",
"define", "break", "quit", "print",
"return", "for", "if", "while", "cst",
};
"stmt", "stmts",
"add_op", "mul_op",
"asgn_op", "rel_op",
"unary_op", "incr_decr_op", "opt_incr_decr_op",
"add_expr", "add_expr_rest",
"mul_expr", "mul_expr_rest",
"exp_expr", "exp_expr_rest",
"factor", "atom",
"asgn_expr", "rel_expr", "rel_expr_opt_rel",
"opt_expr",
"expr",
};
const char * bc_tk_names[]
const char * bc_nt_names[]
#define TK_IDENT
Identifier token ID'si.
#define TK_INT
Tam sayı token ID'si.
#define TK_FLOAT
Ondalık sayı token ID'si.