Add paren test
This commit is contained in:
parent
e099f713ad
commit
e6591b80d9
@ -7,11 +7,12 @@ use tokenizer::{Token, Kw, Op};
|
|||||||
declaraion := Fn prototype (statement)* End
|
declaraion := Fn prototype (statement)* End
|
||||||
prototype := identifier LParen identlist RParen
|
prototype := identifier LParen identlist RParen
|
||||||
identlist := Ident (Comma Ident)* | e
|
identlist := Ident (Comma Ident)* | e
|
||||||
|
exprlist := Expression (Comma Expression)* | e
|
||||||
|
|
||||||
expression := primary_expression (op primary_expression)*
|
expression := primary_expression (op primary_expression)*
|
||||||
primary_expression := Variable | Number | String | call_expr | paren_expr
|
primary_expression := Variable | Number | String | call_expr | paren_expr
|
||||||
paren_expr := LParen expression RParen
|
paren_expr := LParen expression RParen
|
||||||
call_expr := identifier LParen identlist RParen
|
call_expr := identifier LParen exprlist RParen
|
||||||
op := '+', '-', etc.
|
op := '+', '-', etc.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -254,6 +255,7 @@ impl Parser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn call_expr(&mut self) -> ParseResult<Expression> {
|
fn call_expr(&mut self) -> ParseResult<Expression> {
|
||||||
|
use tokenizer::Token::*;
|
||||||
unimplemented!()
|
unimplemented!()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -302,5 +304,8 @@ mod tests {
|
|||||||
parsetest!("a * b + c",
|
parsetest!("a * b + c",
|
||||||
[ExprNode(BinExp(ref plus, box BinExp(ref mul, box Variable(ref a), box Variable(ref b)), box Variable(ref c)))],
|
[ExprNode(BinExp(ref plus, box BinExp(ref mul, box Variable(ref a), box Variable(ref b)), box Variable(ref c)))],
|
||||||
plus == "+" && mul == "*" && a == "a" && b == "b" && c == "c");
|
plus == "+" && mul == "*" && a == "a" && b == "b" && c == "c");
|
||||||
|
parsetest!("(a + b) * c",
|
||||||
|
[ExprNode(BinExp(ref mul, box BinExp(ref plus, box Variable(ref a), box Variable(ref b)), box Variable(ref c)))],
|
||||||
|
plus == "+" && mul == "*" && a == "a" && b == "b" && c == "c");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user