Skip to content
Snippets Groups Projects
Commit 76036bee authored by Sławomir Stromski's avatar Sławomir Stromski
Browse files

Integer expression syntax

parent 9ff5e5f9
Branches
No related merge requests found
......@@ -13,7 +13,8 @@ void SyntaxTree_print(SyntaxTree* st, int depth)
"game", "main_rule", "players", "players_list", "player", "state", "moves",
"data_set", "var_list", "var_declaration", "var_type", "var_definition",
"instruction_block", "instruction_list",
"instruction", "assign_instr", "return_instr", "expr",
"instruction", "assign_instr", "return_instr",
"expr", "expr_literal", "expr_add", "expr_sub", "expr_mul", "expr_div", "expr_mod",
"m_rule_list", "m_rule",
"payoff_list", "payoff",
"move_list", "move", "players_scope",
......
......@@ -18,7 +18,8 @@ typedef enum Type
game, main_rule, players, players_list, player, state, moves,
data_set, var_list, var_declaration, var_type, var_definition,
instruction_block, instruction_list,
instruction, assign_instr, return_instr, expr,
instruction, assign_instr, return_instr,
expr, expr_literal, expr_add, expr_sub, expr_mul, expr_div, expr_mod,
m_rule_list, m_rule,
payoff_list, payoff,
move_list, move, players_scope,
......
This diff is collapsed.
......@@ -35,6 +35,9 @@ SyntaxTree* root;
PAYOFF_LIST PAYOFF
MOVE_LIST MOVE PLAYERS_SCOPE
IDENTIFIER_LIST
%left '+' '-'
%left '*' '/' '%'
%start GAME
......@@ -237,6 +240,53 @@ EXPR: IDENTIFIER {
st->children[0] = $1;
}
| VAR_DEFINITION{
SyntaxTree* st = SyntaxTree_init(expr_literal, "", 1);
$$ = st;
st->children[0] = $1;
}
| '(' EXPR ')'{
SyntaxTree* st = SyntaxTree_init(expr, "", 1);
$$ = st;
st->children[0] = $2;
}
| EXPR '+' EXPR{
SyntaxTree* st = SyntaxTree_init(expr_add, "", 2);
$$ = st;
st->children[0] = $1;
st->children[1] = $3;
}
| EXPR '-' EXPR{
SyntaxTree* st = SyntaxTree_init(expr_sub, "", 2);
$$ = st;
st->children[0] = $1;
st->children[1] = $3;
}
| EXPR '*' EXPR{
SyntaxTree* st = SyntaxTree_init(expr_mul, "", 2);
$$ = st;
st->children[0] = $1;
st->children[1] = $3;
}
| EXPR '/' EXPR{
SyntaxTree* st = SyntaxTree_init(expr_div, "", 2);
$$ = st;
st->children[0] = $1;
st->children[1] = $3;
}
| EXPR '%' EXPR{
SyntaxTree* st = SyntaxTree_init(expr_mod, "", 2);
$$ = st;
st->children[0] = $1;
st->children[1] = $3;
}
// MAIN_RULE
......
......@@ -18,7 +18,7 @@ MAIN_RULE
players
{RETURN;}
masters
{a = a; RETURN;}
{a = 2; RETURN;}
]
MOVES
......@@ -30,6 +30,6 @@ MOVES
%
m2<rrr> [ BOOL b = false; ] ({ RETURN; })
{
RETURN;
a = (4 + s) * 7 + 9 % 5;
}
]
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment