(parser, startedWithForToken)
| 7070 | this.args = { value: expression, event: evt, on }; |
| 7071 | } |
| 7072 | static parseRepeatExpression(parser, startedWithForToken) { |
| 7073 | var innerStartToken = parser.currentToken(); |
| 7074 | var identifier; |
| 7075 | if (parser.matchToken("for") || startedWithForToken) { |
| 7076 | var identifierToken = parser.requireTokenType("IDENTIFIER"); |
| 7077 | identifier = identifierToken.value; |
| 7078 | parser.requireToken("in"); |
| 7079 | var expression = parser.requireElement("expression"); |
| 7080 | var walk = expression; |
| 7081 | while (walk) { |
| 7082 | if (walk.condition) walk.varName = identifier; |
| 7083 | walk = walk.root; |
| 7084 | } |
| 7085 | } else if (parser.matchToken("in")) { |
| 7086 | identifier = "it"; |
| 7087 | var expression = parser.requireElement("expression"); |
| 7088 | } else if (parser.matchToken("while")) { |
| 7089 | var whileExpr = parser.requireElement("expression"); |
| 7090 | } else if (parser.matchToken("until")) { |
| 7091 | var isUntil = true; |
| 7092 | if (parser.matchToken("event")) { |
| 7093 | var evt = parser.requireElement("dotOrColonPath", "Expected event name"); |
| 7094 | if (parser.matchToken("from")) { |
| 7095 | var on = parser.requireElement("expression"); |
| 7096 | } |
| 7097 | } else { |
| 7098 | var whileExpr = parser.requireElement("expression"); |
| 7099 | } |
| 7100 | } else { |
| 7101 | if (!parser.commandBoundary(parser.currentToken()) && parser.currentToken().value !== "forever") { |
| 7102 | var times = parser.requireElement("expression"); |
| 7103 | parser.requireToken("times"); |
| 7104 | } else { |
| 7105 | parser.matchToken("forever"); |
| 7106 | var forever = true; |
| 7107 | } |
| 7108 | } |
| 7109 | if (parser.matchToken("index")) { |
| 7110 | var identifierToken = parser.requireTokenType("IDENTIFIER"); |
| 7111 | var indexIdentifier = identifierToken.value; |
| 7112 | } else if (parser.matchToken("indexed")) { |
| 7113 | parser.requireToken("by"); |
| 7114 | var identifierToken = parser.requireTokenType("IDENTIFIER"); |
| 7115 | var indexIdentifier = identifierToken.value; |
| 7116 | } |
| 7117 | var loop = parser.parseElement("commandList"); |
| 7118 | if (loop && evt) { |
| 7119 | var last = loop; |
| 7120 | while (last.next) { |
| 7121 | last = last.next; |
| 7122 | } |
| 7123 | var waitATick = new WaitATick(); |
| 7124 | last.next = waitATick; |
| 7125 | } |
| 7126 | var bottomTested = false; |
| 7127 | if (forever && parser.hasMore()) { |
| 7128 | if (parser.matchToken("until")) { |
| 7129 | forever = false; |
no test coverage detected