All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.dingyi222666.monarch.languages.LanguageAbap.kt Maven / Gradle / Ivy

The newest version!
package io.github.dingyi222666.monarch.languages

import io.github.dingyi222666.monarch.common.*
 import io.github.dingyi222666.monarch.loader.dsl.*
import io.github.dingyi222666.monarch.types.IMonarchLanguage

public val AbapLanguage: IMonarchLanguage by lazy {
  buildMonarchLanguage {
    tokenPostfix = ".abap"
    ignoreCase = true
    defaultToken = "invalid"
    keywords("abap-source", "abbreviated", "abstract", "accept", "accepting", "according",
        "activation", "actual", "add", "add-corresponding", "adjacent", "after", "alias", "aliases",
        "align", "all", "allocate", "alpha", "analysis", "analyzer", "and", "append", "appendage",
        "appending", "application", "archive", "area", "arithmetic", "as", "ascending", "aspect",
        "assert", "assign", "assigned", "assigning", "association", "asynchronous", "at",
        "attributes", "authority", "authority-check", "avg", "back", "background", "backup",
        "backward", "badi", "base", "before", "begin", "between", "big", "binary", "bintohex",
        "bit", "black", "blank", "blanks", "blob", "block", "blocks", "blue", "bound", "boundaries",
        "bounds", "boxed", "break-point", "buffer", "by", "bypassing", "byte", "byte-order", "call",
        "calling", "case", "cast", "casting", "catch", "center", "centered", "chain", "chain-input",
        "chain-request", "change", "changing", "channels", "character", "char-to-hex", "check",
        "checkbox", "ci_", "circular", "class", "class-coding", "class-data", "class-events",
        "class-methods", "class-pool", "cleanup", "clear", "client", "clob", "clock", "close",
        "coalesce", "code", "coding", "col_background", "col_group", "col_heading", "col_key",
        "col_negative", "col_normal", "col_positive", "col_total", "collect", "color", "column",
        "columns", "comment", "comments", "commit", "common", "communication", "comparing",
        "component", "components", "compression", "compute", "concat", "concat_with_space",
        "concatenate", "cond", "condense", "condition", "connect", "connection", "constants",
        "context", "contexts", "continue", "control", "controls", "conv", "conversion", "convert",
        "copies", "copy", "corresponding", "country", "cover", "cpi", "create", "creating",
        "critical", "currency", "currency_conversion", "current", "cursor", "cursor-selection",
        "customer", "customer-function", "dangerous", "data", "database", "datainfo", "dataset",
        "date", "dats_add_days", "dats_add_months", "dats_days_between", "dats_is_valid",
        "daylight", "dd/mm/yy", "dd/mm/yyyy", "ddmmyy", "deallocate", "decimal_shift", "decimals",
        "declarations", "deep", "default", "deferred", "define", "defining", "definition", "delete",
        "deleting", "demand", "department", "descending", "describe", "destination", "detail",
        "dialog", "directory", "disconnect", "display", "display-mode", "distinct", "divide",
        "divide-corresponding", "division", "do", "dummy", "duplicate", "duplicates", "duration",
        "during", "dynamic", "dynpro", "edit", "editor-call", "else", "elseif", "empty", "enabled",
        "enabling", "encoding", "end", "endat", "endcase", "endcatch", "endchain", "endclass",
        "enddo", "endenhancement", "end-enhancement-section", "endexec", "endform", "endfunction",
        "endian", "endif", "ending", "endinterface", "end-lines", "endloop", "endmethod",
        "endmodule", "end-of-definition", "end-of-editing", "end-of-file", "end-of-page",
        "end-of-selection", "endon", "endprovide", "endselect", "end-test-injection",
        "end-test-seam", "endtry", "endwhile", "endwith", "engineering", "enhancement",
        "enhancement-point", "enhancements", "enhancement-section", "entries", "entry", "enum",
        "environment", "equiv", "errormessage", "errors", "escaping", "event", "events", "exact",
        "except", "exception", "exceptions", "exception-table", "exclude", "excluding", "exec",
        "execute", "exists", "exit", "exit-command", "expand", "expanding", "expiration",
        "explicit", "exponent", "export", "exporting", "extend", "extended", "extension", "extract",
        "fail", "fetch", "field", "field-groups", "fields", "field-symbol", "field-symbols", "file",
        "filter", "filters", "filter-table", "final", "find", "first", "first-line", "fixed-point",
        "fkeq", "fkge", "flush", "font", "for", "form", "format", "forward", "found", "frame",
        "frames", "free", "friends", "from", "function", "functionality", "function-pool",
        "further", "gaps", "generate", "get", "giving", "gkeq", "gkge", "global", "grant", "green",
        "group", "groups", "handle", "handler", "harmless", "hashed", "having", "hdb", "header",
        "headers", "heading", "head-lines", "help-id", "help-request", "hextobin", "hide", "high",
        "hint", "hold", "hotspot", "icon", "id", "identification", "identifier", "ids", "if",
        "ignore", "ignoring", "immediately", "implementation", "implementations", "implemented",
        "implicit", "import", "importing", "in", "inactive", "incl", "include", "includes",
        "including", "increment", "index", "index-line", "infotypes", "inheriting", "init",
        "initial", "initialization", "inner", "inout", "input", "insert", "instance", "instances",
        "instr", "intensified", "interface", "interface-pool", "interfaces", "internal",
        "intervals", "into", "inverse", "inverted-date", "is", "iso", "job", "join", "keep",
        "keeping", "kernel", "key", "keys", "keywords", "kind", "language", "last", "late",
        "layout", "leading", "leave", "left", "left-justified", "leftplus", "leftspace", "legacy",
        "length", "let", "level", "levels", "like", "line", "lines", "line-count", "linefeed",
        "line-selection", "line-size", "list", "listbox", "list-processing", "little", "llang",
        "load", "load-of-program", "lob", "local", "locale", "locator", "logfile", "logical",
        "log-point", "long", "loop", "low", "lower", "lpad", "lpi", "ltrim", "mail", "main",
        "major-id", "mapping", "margin", "mark", "mask", "match", "matchcode", "max", "maximum",
        "medium", "members", "memory", "mesh", "message", "message-id", "messages", "messaging",
        "method", "methods", "min", "minimum", "minor-id", "mm/dd/yy", "mm/dd/yyyy", "mmddyy",
        "mode", "modif", "modifier", "modify", "module", "move", "move-corresponding", "multiply",
        "multiply-corresponding", "name", "nametab", "native", "nested", "nesting", "new",
        "new-line", "new-page", "new-section", "next", "no", "no-display", "no-extension", "no-gap",
        "no-gaps", "no-grouping", "no-heading", "no-scrolling", "no-sign", "no-title",
        "no-topofpage", "no-zero", "node", "nodes", "non-unicode", "non-unique", "not", "null",
        "number", "object", "objects", "obligatory", "occurrence", "occurrences", "occurs", "of",
        "off", "offset", "ole", "on", "only", "open", "option", "optional", "options", "or",
        "order", "other", "others", "out", "outer", "output", "output-length", "overflow",
        "overlay", "pack", "package", "pad", "padding", "page", "pages", "parameter", "parameters",
        "parameter-table", "part", "partially", "pattern", "percentage", "perform", "performing",
        "person", "pf1", "pf10", "pf11", "pf12", "pf13", "pf14", "pf15", "pf2", "pf3", "pf4", "pf5",
        "pf6", "pf7", "pf8", "pf9", "pf-status", "pink", "places", "pool", "pos_high", "pos_low",
        "position", "pragmas", "precompiled", "preferred", "preserving", "primary", "print",
        "print-control", "priority", "private", "procedure", "process", "program", "property",
        "protected", "provide", "public", "push", "pushbutton", "put", "queue-only", "quickinfo",
        "radiobutton", "raise", "raising", "range", "ranges", "read", "reader", "read-only",
        "receive", "received", "receiver", "receiving", "red", "redefinition", "reduce", "reduced",
        "ref", "reference", "refresh", "regex", "reject", "remote", "renaming", "replace",
        "replacement", "replacing", "report", "request", "requested", "reserve", "reset",
        "resolution", "respecting", "responsible", "result", "results", "resumable", "resume",
        "retry", "return", "returncode", "returning", "returns", "right", "right-justified",
        "rightplus", "rightspace", "risk", "rmc_communication_failure", "rmc_invalid_status",
        "rmc_system_failure", "role", "rollback", "rows", "rpad", "rtrim", "run", "sap",
        "sap-spool", "saving", "scale_preserving", "scale_preserving_scientific", "scan",
        "scientific", "scientific_with_leading_zero", "scroll", "scroll-boundary", "scrolling",
        "search", "secondary", "seconds", "section", "select", "selection", "selections",
        "selection-screen", "selection-set", "selection-sets", "selection-table", "select-options",
        "send", "separate", "separated", "set", "shared", "shift", "short", "shortdump-id",
        "sign_as_postfix", "single", "size", "skip", "skipping", "smart", "some", "sort",
        "sortable", "sorted", "source", "specified", "split", "spool", "spots", "sql", "sqlscript",
        "stable", "stamp", "standard", "starting", "start-of-editing", "start-of-selection",
        "state", "statement", "statements", "static", "statics", "statusinfo", "step-loop", "stop",
        "structure", "structures", "style", "subkey", "submatches", "submit", "subroutine",
        "subscreen", "subtract", "subtract-corresponding", "suffix", "sum", "summary", "summing",
        "supplied", "supply", "suppress", "switch", "switchstates", "symbol", "syncpoints",
        "syntax", "syntax-check", "syntax-trace", "system-call", "system-exceptions", "system-exit",
        "tab", "tabbed", "table", "tables", "tableview", "tabstrip", "target", "task", "tasks",
        "test", "testing", "test-injection", "test-seam", "text", "textpool", "then", "throw",
        "time", "times", "timestamp", "timezone", "tims_is_valid", "title", "titlebar",
        "title-lines", "to", "tokenization", "tokens", "top-lines", "top-of-page", "trace-file",
        "trace-table", "trailing", "transaction", "transfer", "transformation", "translate",
        "transporting", "trmac", "truncate", "truncation", "try", "tstmp_add_seconds",
        "tstmp_current_utctimestamp", "tstmp_is_valid", "tstmp_seconds_between", "type",
        "type-pool", "type-pools", "types", "uline", "unassign", "under", "unicode", "union",
        "unique", "unit_conversion", "unix", "unpack", "until", "unwind", "up", "update", "upper",
        "user", "user-command", "using", "utf-8", "valid", "value", "value-request", "values",
        "vary", "varying", "verification-message", "version", "via", "view", "visible", "wait",
        "warning", "when", "whenever", "where", "while", "width", "window", "windows", "with",
        "with-heading", "without", "with-title", "word", "work", "write", "writer", "xml", "xsd",
        "yellow", "yes", "yymmdd", "zero", "zone", "abap_system_timezone", "abap_user_timezone",
        "access", "action", "adabas", "adjust_numbers", "allow_precision_loss", "allowed", "amdp",
        "applicationuser", "as_geo_json", "as400", "associations", "balance", "behavior", "breakup",
        "bulk", "cds", "cds_client", "check_before_save", "child", "clients", "corr",
        "corr_spearman", "cross", "cycles", "datn_add_days", "datn_add_months", "datn_days_between",
        "dats_from_datn", "dats_tims_to_tstmp", "dats_to_datn", "db2", "db6", "ddl", "dense_rank",
        "depth", "deterministic", "discarding", "entities", "entity", "error", "failed", "finalize",
        "first_value", "fltp_to_dec", "following", "fractional", "full", "graph", "grouping",
        "hierarchy", "hierarchy_ancestors", "hierarchy_ancestors_aggregate",
        "hierarchy_descendants", "hierarchy_descendants_aggregate", "hierarchy_siblings",
        "incremental", "indicators", "lag", "last_value", "lead", "leaves", "like_regexpr", "link",
        "locale_sap", "lock", "locks", "many", "mapped", "matched", "measures", "median", "mssqlnt",
        "multiple", "nodetype", "ntile", "nulls", "occurrences_regexpr", "one", "operations",
        "oracle", "orphans", "over", "parent", "parents", "partition", "pcre", "period",
        "pfcg_mapping", "preceding", "privileged", "product", "projection", "rank", "redirected",
        "replace_regexpr", "reported", "response", "responses", "root", "row", "row_number",
        "sap_system_date", "save", "schema", "session", "sets", "shortdump", "siblings", "spantree",
        "start", "stddev", "string_agg", "subtotal", "sybase", "tims_from_timn", "tims_to_timn",
        "to_blob", "to_clob", "total", "trace-entry", "tstmp_to_dats", "tstmp_to_dst",
        "tstmp_to_tims", "tstmpl_from_utcl", "tstmpl_to_utcl", "unbounded", "utcl_add_seconds",
        "utcl_current", "utcl_seconds_between", "uuid", "var", "verbatim")
    "builtinFunctions" and listOf("abs", "acos", "asin", "atan", "bit-set", "boolc", "boolx",
        "ceil", "char_off", "charlen", "cmax", "cmin", "concat_lines_of", "contains",
        "contains_any_not_of", "contains_any_of", "cos", "cosh", "count", "count_any_not_of",
        "count_any_of", "dbmaxlen", "distance", "escape", "exp", "find_any_not_of", "find_any_of",
        "find_end", "floor", "frac", "from_mixed", "ipow", "line_exists", "line_index", "log",
        "log10", "matches", "nmax", "nmin", "numofchar", "repeat", "rescale", "reverse", "round",
        "segment", "shift_left", "shift_right", "sign", "sin", "sinh", "sqrt", "strlen",
        "substring", "substring_after", "substring_before", "substring_from", "substring_to", "tan",
        "tanh", "to_lower", "to_mixed", "to_upper", "trunc", "utclong_add", "utclong_current",
        "utclong_diff", "xsdbool", "xstrlen")
    typeKeywords("b", "c", "d", "decfloat16", "decfloat34", "f", "i", "int8", "n", "p", "s",
        "string", "t", "utclong", "x", "xstring", "any", "clike", "csequence", "decfloat",
        "numeric", "simple", "xsequence", "accp", "char", "clnt", "cuky", "curr", "datn", "dats",
        "d16d", "d16n", "d16r", "d34d", "d34n", "d34r", "dec", "df16_dec", "df16_raw", "df34_dec",
        "df34_raw", "fltp", "geom_ewkb", "int1", "int2", "int4", "lang", "lchr", "lraw", "numc",
        "quan", "raw", "rawstring", "sstring", "timn", "tims", "unit", "utcl", "df16_scl",
        "df34_scl", "prec", "varc", "abap_bool", "abap_false", "abap_true", "abap_undefined", "me",
        "screen", "space", "super", "sy", "syst", "table_line", "*sys*")
    "builtinMethods" and listOf("class_constructor", "constructor")
    "derivedTypes" and listOf("%CID", "%CID_REF", "%CONTROL", "%DATA", "%ELEMENT", "%FAIL", "%KEY",
        "%MSG", "%PARAM", "%PID", "%PID_ASSOC", "%PID_PARENT", "%_HINTS")
    "cdsLanguage" and listOf("@AbapAnnotation", "@AbapCatalog", "@AccessControl", "@API",
        "@ClientDependent", "@ClientHandling", "@CompatibilityContract", "@DataAging",
        "@EndUserText", "@Environment", "@LanguageDependency", "@MappingRole", "@Metadata",
        "@MetadataExtension", "@ObjectModel", "@Scope", "@Semantics", "\$EXTENSION", "\$SELF")
    "selectors" and listOf("->", "->*", "=>", "~", "~*")
    operators(" +", " -", "/", "*", "**", "div", "mod", "=", "#", "@", "+=", "-=", "*=", "/=",
        "**=", "&&=", "?=", "&", "&&", "bit-and", "bit-not", "bit-or", "bit-xor", "m", "o", "z",
        "<", " >", "<=", ">=", "<>", "><", "=<", "=>", "bt", "byte-ca", "byte-cn", "byte-co",
        "byte-cs", "byte-na", "byte-ns", "ca", "cn", "co", "cp", "cs", "eq", "ge", "gt", "le", "lt",
        "na", "nb", "ne", "np", "ns", "*/", "*:", "--", "/*", "//")
    symbols("[=>))*".action {
          cases {
            "@typeKeywords" and "type"
            "@keywords" and "keyword"
            "@cdsLanguage" and "annotation"
            "@derivedTypes" and "type"
            "@builtinFunctions" and "type"
            "@builtinMethods" and "type"
            "@operators" and "key"
            "@default" and "identifier"
          }
        }
        "<[\\w]+>".token("identifier")
        "##[\\w|_]+".token("comment")
        include("@whitespace")
        "[:,.]".token("delimiter")
        "[{}()\\[\\]]".token("@brackets")
        "@symbols".action {
          cases {
            "@selectors" and "tag"
            "@operators" and "key"
            "@default" and ""
          }
        }
        "'".action {
          token = "string"
          next = "@stringquote"
          bracket = "@open"
        }
        "`".action {
          token = "string"
          next = "@stringping"
          bracket = "@open"
        }
        "\\|".action {
          token = "string"
          next = "@stringtemplate"
          bracket = "@open"
        }
        "\\d+".token("number")
      }
      "stringtemplate" rules {
        "[^\\\\\\|]+".token("string")
        "\\\\\\|".token("string")
        "\\|".action {
          token = "string"
          next = "@pop"
          bracket = "@close"
        }
      }
      "stringping" rules {
        "[^\\\\`]+".token("string")
        "`".action {
          token = "string"
          next = "@pop"
          bracket = "@close"
        }
      }
      "stringquote" rules {
        "[^\\\\']+".token("string")
        "'".action {
          token = "string"
          next = "@pop"
          bracket = "@close"
        }
      }
      whitespace {
        "[ \\t\\r\\n]+".token("")
        "^\\*.*${'$'}".token("comment")
        "\\\".*${'$'}".token("comment")
      }
    }
  }
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy