diff options
Diffstat (limited to 'src/parser.rs')
| -rw-r--r-- | src/parser.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/parser.rs b/src/parser.rs index 5f53557..6e479e4 100644 --- a/src/parser.rs +++ b/src/parser.rs | |||
| @@ -103,6 +103,7 @@ impl<'a> SymbolHelper for Option<Symbol<'a>> { | |||
| 103 | SymbolType::Token(_) | | 103 | SymbolType::Token(_) | |
| 104 | SymbolType::View | | 104 | SymbolType::View | |
| 105 | SymbolType::Output | | 105 | SymbolType::Output | |
| 106 | SymbolType::Loop | | ||
| 106 | SymbolType::Show => true, | 107 | SymbolType::Show => true, |
| 107 | _ => false | 108 | _ => false |
| 108 | }) | 109 | }) |
| @@ -327,7 +328,7 @@ impl Parser { | |||
| 327 | 328 | ||
| 328 | if ctx.next().is_some() { | 329 | if ctx.next().is_some() { |
| 329 | match ctx.cur().unwrap().symbol() { | 330 | match ctx.cur().unwrap().symbol() { |
| 330 | SymbolType::View | SymbolType::Show | | 331 | SymbolType::View | SymbolType::Show | SymbolType::Loop | |
| 331 | SymbolType::Output => { | 332 | SymbolType::Output => { |
| 332 | let name_sym = ctx.cur().unwrap(); | 333 | let name_sym = ctx.cur().unwrap(); |
| 333 | ctx.next(); | 334 | ctx.next(); |
| @@ -640,6 +641,14 @@ impl<'a> TagBuilder<'a> { | |||
| 640 | pub fn build(mut self) -> ParseResult<Token> { | 641 | pub fn build(mut self) -> ParseResult<Token> { |
| 641 | if let Some(sym) = self.name { | 642 | if let Some(sym) = self.name { |
| 642 | match sym.symbol() { | 643 | match sym.symbol() { |
| 644 | SymbolType::Loop => { | ||
| 645 | let id = if let ParamValue::Identifier(id) = self.params.swap_remove(0) { | ||
| 646 | id | ||
| 647 | } else { | ||
| 648 | return Err(ParseError::new(Position::none(), "Identifier for loop variable name.")); | ||
| 649 | }; | ||
| 650 | Ok(Token::Loop(id, self.children)) | ||
| 651 | } | ||
| 643 | SymbolType::Show => { | 652 | SymbolType::Show => { |
| 644 | let id = if let ParamValue::Identifier(id) = self.params.swap_remove(0) { | 653 | let id = if let ParamValue::Identifier(id) = self.params.swap_remove(0) { |
| 645 | id | 654 | id |
