@@ -30,6 +30,13 @@ impl<'src, 'ast> Parser<'src, 'ast> {
3030 && self . current_token . kind != TokenKind :: ElseIf
3131 && self . current_token . kind != TokenKind :: Eof
3232 {
33+ if matches ! (
34+ self . current_token. kind,
35+ TokenKind :: OpenTag | TokenKind :: CloseTag
36+ ) {
37+ self . bump ( ) ;
38+ continue ;
39+ }
3340 stmts. push ( self . parse_stmt ( ) ) ;
3441 }
3542 stmts. into_bump_slice ( ) as & ' ast [ StmtId < ' ast > ]
@@ -58,6 +65,13 @@ impl<'src, 'ast> Parser<'src, 'ast> {
5865 while self . current_token . kind != TokenKind :: EndIf
5966 && self . current_token . kind != TokenKind :: Eof
6067 {
68+ if matches ! (
69+ self . current_token. kind,
70+ TokenKind :: OpenTag | TokenKind :: CloseTag
71+ ) {
72+ self . bump ( ) ;
73+ continue ;
74+ }
6175 stmts. push ( self . parse_stmt ( ) ) ;
6276 }
6377 Some ( stmts. into_bump_slice ( ) as & ' ast [ StmtId < ' ast > ] )
@@ -105,6 +119,13 @@ impl<'src, 'ast> Parser<'src, 'ast> {
105119 while self . current_token . kind != TokenKind :: EndWhile
106120 && self . current_token . kind != TokenKind :: Eof
107121 {
122+ if matches ! (
123+ self . current_token. kind,
124+ TokenKind :: OpenTag | TokenKind :: CloseTag
125+ ) {
126+ self . bump ( ) ;
127+ continue ;
128+ }
108129 stmts. push ( self . parse_stmt ( ) ) ;
109130 }
110131 if self . current_token . kind == TokenKind :: EndWhile {
@@ -215,6 +236,13 @@ impl<'src, 'ast> Parser<'src, 'ast> {
215236 while self . current_token . kind != TokenKind :: EndFor
216237 && self . current_token . kind != TokenKind :: Eof
217238 {
239+ if matches ! (
240+ self . current_token. kind,
241+ TokenKind :: OpenTag | TokenKind :: CloseTag
242+ ) {
243+ self . bump ( ) ;
244+ continue ;
245+ }
218246 stmts. push ( self . parse_stmt ( ) ) ;
219247 }
220248 if self . current_token . kind == TokenKind :: EndFor {
@@ -274,6 +302,13 @@ impl<'src, 'ast> Parser<'src, 'ast> {
274302 while self . current_token . kind != TokenKind :: EndForeach
275303 && self . current_token . kind != TokenKind :: Eof
276304 {
305+ if matches ! (
306+ self . current_token. kind,
307+ TokenKind :: OpenTag | TokenKind :: CloseTag
308+ ) {
309+ self . bump ( ) ;
310+ continue ;
311+ }
277312 stmts. push ( self . parse_stmt ( ) ) ;
278313 }
279314 if self . current_token . kind == TokenKind :: EndForeach {
@@ -364,6 +399,13 @@ impl<'src, 'ast> Parser<'src, 'ast> {
364399 && self . current_token . kind != end_token
365400 && self . current_token . kind != TokenKind :: Eof
366401 {
402+ if matches ! (
403+ self . current_token. kind,
404+ TokenKind :: OpenTag | TokenKind :: CloseTag
405+ ) {
406+ self . bump ( ) ;
407+ continue ;
408+ }
367409 body_stmts. push ( self . parse_stmt ( ) ) ;
368410 }
369411
@@ -557,6 +599,13 @@ impl<'src, 'ast> Parser<'src, 'ast> {
557599 while self . current_token . kind != TokenKind :: EndDeclare
558600 && self . current_token . kind != TokenKind :: Eof
559601 {
602+ if matches ! (
603+ self . current_token. kind,
604+ TokenKind :: OpenTag | TokenKind :: CloseTag
605+ ) {
606+ self . bump ( ) ;
607+ continue ;
608+ }
560609 stmts. push ( self . parse_stmt ( ) ) ;
561610 }
562611 if self . current_token . kind == TokenKind :: EndDeclare {
0 commit comments