cal top-level property

Mode cal
final

Implementation

final cal = Mode(
    refs: {
      '~contains~2': Mode(className: "string", begin: "(#\\d+)+"),
      '~contains~1': Mode(
          className: "string",
          begin: "'",
          end: "'",
          contains: [Mode(begin: "''")]),
    },
    name: "C/AL",
    case_insensitive: true,
    keywords: {
      "keyword": [
        "div",
        "mod",
        "in",
        "and",
        "or",
        "not",
        "xor",
        "asserterror",
        "begin",
        "case",
        "do",
        "downto",
        "else",
        "end",
        "exit",
        "for",
        "local",
        "if",
        "of",
        "repeat",
        "then",
        "to",
        "until",
        "while",
        "with",
        "var"
      ],
      "literal": "false true"
    },
    illegal: "\\/\\*",
    contains: [
      Mode(match: "[\\w]+(?=\\=)", scope: "attribute", relevance: 0),
      Mode(ref: '~contains~1'),
      Mode(ref: '~contains~2'),
      Mode(
          className: "number",
          begin: "\\b\\d+(\\.\\d+)?(DT|D|T)",
          relevance: 0),
      Mode(className: "string", begin: "\"", end: "\""),
      NUMBER_MODE,
      Mode(
          match: [
            "OBJECT",
            "\\s+",
            "(?:Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query)",
            "\\s+",
            "\\d+",
            "\\s+(?=[^\\s])",
            ".*",
            "\$"
          ],
          relevance: 3,
          scope: {"1": "keyword", "3": "type", "5": "number", "7": "title"}),
      Mode(match: [
        "procedure",
        "\\s+",
        "[a-zA-Z_][\\w@]*",
        "\\s*"
      ], scope: {
        "1": "keyword",
        "3": "title.function"
      }, contains: [
        Mode(className: "params", begin: "\\(", end: "\\)", keywords: [
          "div",
          "mod",
          "in",
          "and",
          "or",
          "not",
          "xor",
          "asserterror",
          "begin",
          "case",
          "do",
          "downto",
          "else",
          "end",
          "exit",
          "for",
          "local",
          "if",
          "of",
          "repeat",
          "then",
          "to",
          "until",
          "while",
          "with",
          "var"
        ], contains: [
          Mode(ref: '~contains~1'),
          Mode(ref: '~contains~2'),
          NUMBER_MODE
        ]),
        C_LINE_COMMENT_MODE,
        Mode(
            scope: "comment",
            begin: "\\{",
            end: "\\}",
            contains: [
              Mode(
                  scope: "doctag",
                  begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
                  end: "(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",
                  excludeBegin: true,
                  relevance: 0),
              Mode(
                  begin:
                      "[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}")
            ],
            relevance: 0),
        Mode(
            scope: "comment",
            begin: "\\(\\*",
            end: "\\*\\)",
            contains: [
              Mode(
                  scope: "doctag",
                  begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
                  end: "(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",
                  excludeBegin: true,
                  relevance: 0),
              Mode(
                  begin:
                      "[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}")
            ],
            relevance: 10)
      ])
    ]);