smalltalk top-level property

Language smalltalk
final

Implementation

final smalltalk = Language(
  id: "smalltalk",
  refs: {
    '~contains~6': Mode(
      className: "string",
      begin: "\\\$.{1}",
    ),
    '~contains~5': Mode(
      className: "symbol",
      begin: "#[a-zA-Z_]\\w*",
    ),
  },
  name: "Smalltalk",
  aliases: ["st"],
  keywords: ["self", "super", "nil", "true", "false", "thisContext"],
  contains: [
    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}",
        ),
      ],
    ),
    APOS_STRING_MODE,
    Mode(
      className: "type",
      begin: "\\b[A-Z][A-Za-z0-9_]*",
      relevance: 0,
    ),
    Mode(
      begin: "[a-z][a-zA-Z0-9_]*:",
      relevance: 0,
    ),
    C_NUMBER_MODE,
    ModeReference('~contains~5'),
    ModeReference('~contains~6'),
    Mode(
      begin: "\\|[ ]*[a-z][a-zA-Z0-9_]*([ ]+[a-z][a-zA-Z0-9_]*)*[ ]*\\|",
      returnBegin: true,
      end: "\\|",
      illegal: "\\S",
      contains: [
        Mode(
          begin: "(\\|[ ]*)?[a-z][a-zA-Z0-9_]*",
        ),
      ],
    ),
    Mode(
      begin: "#\\(",
      end: "\\)",
      contains: [
        APOS_STRING_MODE,
        ModeReference('~contains~6'),
        C_NUMBER_MODE,
        ModeReference('~contains~5'),
      ],
    ),
  ],
);