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")
}
}
}
}