Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 1x 1x | import {IStatement} from "./_statement"; import {seq, opt, per, plus, optPrio, altPrio} from "../combi"; import {Target, Source, FindType} from "../expressions"; import {IStatementRunnable} from "../statement_runnable"; export class Find implements IStatement { public getMatcher(): IStatementRunnable { // SUBMATCHES handling is a workaround const options = per("IGNORING CASE", "RESPECTING CASE", "IN BYTE MODE", "IN CHARACTER MODE", seq("OF", Source), seq("FROM", Source), seq("TO", Source), seq("MATCH OFFSET", Target), seq("MATCH LINE", Target), seq("MATCH COUNT", Target), seq("MATCH LENGTH", Target), seq("LENGTH", Source), seq("RESULTS", Target), seq("SUBMATCHES", Target), seq("SUBMATCHES", Target, Target), seq("SUBMATCHES", plus(Target))); const sectionLength = seq("SECTION LENGTH", Source, "OF"); const before = seq(optPrio(altPrio("TABLE", "SECTION OFFSET", sectionLength)), Source); const ret = seq("FIND", opt(altPrio("FIRST OCCURRENCE OF", "ALL OCCURRENCES OF")), FindType, Source, "IN", before, opt(options)); return ret; } } |