angelscript top-level property
Implementation
final angelscript = Mode(
refs: {
'~contains~7~contains~0~contains~1': Mode(className: "symbol", begin: "[a-zA-Z0-9_]+@", contains: [Mode(ref: '~contains~7~contains~0')]),
'~contains~7~contains~0': Mode(className: "keyword", begin: "<", end: ">", contains: [Mode(ref: '~contains~7'), Mode(ref: '~contains~7~contains~0~contains~1')]),
'~contains~7': Mode(className: "built_in", begin: "\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)", contains: [Mode(ref: '~contains~7~contains~0')]),
},
aliases: ["asc"],
keywords: "for in|0 break continue while do|0 return if else case switch namespace is cast or and xor not get|0 in inout|10 out override set|0 private public const default|0 final shared external mixin|10 enum typedef funcdef this super import from interface abstract|0 try catch protected explicit property",
illegal: "(^using\\s+[A-Za-z0-9_\\.]+;\$|\\bfunctions*[^\\(])",
contains: [
Mode(className: "string", begin: "'", end: "'", illegal: "\\n", contains: [backSlashEscape], relevance: 0),
Mode(className: "string", begin: "\"", end: "\"", illegal: "\\n", contains: [backSlashEscape], relevance: 0),
Mode(className: "string", begin: "\"\"\"", end: "\"\"\""),
cLineCommentMode,
cBlockCommentMode,
Mode(beginKeywords: "interface namespace", end: "{", illegal: "[;.\\-]", contains: [Mode(className: "symbol", begin: "[a-zA-Z0-9_]+")]),
Mode(beginKeywords: "class", end: "{", illegal: "[;.\\-]", contains: [
Mode(className: "symbol", begin: "[a-zA-Z0-9_]+", contains: [
Mode(begin: "[:,]\\s*", contains: [Mode(className: "symbol", begin: "[a-zA-Z0-9_]+")])
])
]),
Mode(ref: '~contains~7'),
Mode(ref: '~contains~7~contains~0~contains~1'),
Mode(className: "literal", begin: "\\b(null|true|false)"),
Mode(className: "number", begin: "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)")
]);