Skip to content
Snippets Groups Projects
Commit 1900dd21 authored by Aaron Councilman's avatar Aaron Councilman
Browse files

Support else-if

parent 2bc2bf6a
No related branches found
No related tags found
1 merge request!213Scheduler additions
Pipeline #202037 passed
......@@ -27,14 +27,23 @@ Stmt -> Stmt
{ Stmt::ExprStmt { span: $span, exp: $1 } }
| 'fixpoint' FixpointLimit '{' Schedule '}'
{ Stmt::Fixpoint { span: $span, limit: $2, body: Box::new($4) } }
| 'if' Expr '{' Schedule '}'
{ Stmt::IfThenElse { span: $span, cond: $2, thn: Box::new($4), els: None } }
| 'if' Expr '{' Schedule '}' 'else' '{' Schedule '}'
{ Stmt::IfThenElse { span: $span, cond: $2, thn: Box::new($4), els: Some(Box::new($8)) } }
| 'if' Expr '{' Schedule '}' ElseStmt
{ Stmt::IfThenElse { span: $span, cond: $2, thn: Box::new($4), els: $6 } }
| MacroDecl
{ Stmt::MacroDecl { span: $span, def: $1 } }
;
ElseStmt -> Option<Box<OperationList>>
: { None }
| 'else' '{' Schedule '}'
{ Some(Box::new($3)) }
| 'else' 'if' Expr '{' Schedule '}' ElseStmt
{ Some(Box::new(OperationList::ConsStmt(
Stmt::IfThenElse { span: $span, cond: $3, thn: Box::new($5), els: $7 },
Box::new(OperationList::NilStmt()),
))) }
;
FixpointLimit -> FixpointLimit
: { FixpointLimit::NoLimit { span: $span } }
| 'stop_after' 'INT'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment