start -> output block output -> LMUSTACH OUTPUT VARIABLE RMUSTACH loop -> loop_start block end_stmt loop_start -> LMUSTACH LOOP [LPAREN VARIABLE [COMMA VARIABLE] RPAREN] array_accessor [AS VARIABLE] RMUSTACH end_stmt -> LMUSTACH END RMUSTACH block -> loop | LMUSTACH accessor RMUSTACH | block anything | anything | import_stmt* block import_stmt -> LMUSTACH IMPORT RMUSTACH [import_option] end_stmt import_option -> VARIABLE COLON anything SEMICOLON array_accessor -> VARIABLE [ [DOT VARIABLE] [array_bracket] ]* [array_slice] accessor -> VARIABLE [ [array_bracket] [DOT VARIABLE] ]* dot_variable -> DOT VARIABLE array_slice -> LBRACKET array_slice_index COMMA array_slice_index RBRACKET array_bracket -> LBRACKET VARIABLE | NUMBER RBRACKET array_slice_index ->DOUBLEDOTS | VARIABLE | NUMBER