All files / src/abap/2_statements/statements syntax_check.ts

100% Statements 54/54
100% Branches 1/1
100% Functions 1/1
100% Lines 54/54

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 44 45 46 47 48 49 50 51 52 53 541x 1x 1x 1x 1x 1x 1x 1x 1x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 17x 1x 1x
import {IStatement} from "./_statement";
import {verNot, seq, alt, per, plus, optPrio} from "../combi";
import {Target, Source} from "../expressions";
import {Version} from "../../../version";
import {IStatementRunnable} from "../statement_runnable";
 
export class SyntaxCheck implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const program = seq("PROGRAM", Source);
    const offset = seq("OFFSET", Target);
    const frame = seq("FRAME ENTRY", Target);
    const include = seq("INCLUDE", Target);
    const trace = seq("TRACE-TABLE", Target);
    const line = seq("LINE", Target);
    const word = seq("WORD", Target);
    const messageId = seq("MESSAGE-ID", Target);
    const message = seq("MESSAGE", Target);
    const id = seq("ID", Source, "TABLE", Target);
    const replacing = seq("REPLACING", Target);
    const directory = seq("DIRECTORY ENTRY", Source);
    const dump = seq("SHORTDUMP-ID", Source);
    const filter = seq("FILTER", Source);
 
    const syntax = seq(optPrio("PROGRAM"),
                       Source,
                       per(message,
                           line,
                           word,
                           offset,
                           program,
                           replacing,
                           directory,
                           frame,
                           include,
                           messageId,
                           trace,
                           dump,
                           filter,
                           plus(id)));
 
    const dynpro = seq("DYNPRO",
                       Source,
                       Source,
                       Source,
                       Source,
                       per(message, line, word, offset, messageId, trace));
 
    const ret = seq("SYNTAX-CHECK FOR", alt(syntax, dynpro));
 
    return verNot(Version.Cloud, ret);
  }
 
}