(parser)
| 402 | } |
| 403 | |
| 404 | static parsePickRange(parser) { |
| 405 | parser.matchToken("at") || parser.matchToken("from"); |
| 406 | var rv = { includeStart: true, includeEnd: false }; |
| 407 | |
| 408 | rv.from = parser.matchToken("start") ? 0 : parser.requireElement("expression"); |
| 409 | |
| 410 | if (parser.matchToken("to") || parser.matchOpToken("..")) { |
| 411 | if (parser.matchToken("end")) { |
| 412 | rv.toEnd = true; |
| 413 | } else { |
| 414 | rv.to = parser.requireElement("expression"); |
| 415 | } |
| 416 | } |
| 417 | |
| 418 | if (parser.matchToken("inclusive")) rv.includeEnd = true; |
| 419 | else if (parser.matchToken("exclusive")) rv.includeStart = false; |
| 420 | |
| 421 | return rv; |
| 422 | } |
| 423 | |
| 424 | static parseSource(parser) { |
| 425 | if (!parser.matchAnyToken("of", "from")) { |
no test coverage detected