summaryrefslogtreecommitdiff
path: root/src/parser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.rs')
-rw-r--r--src/parser.rs11
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