mathematica function
Implementation
Mode mathematica(Highlight hljs) {
return Mode(
name: r'Mathematica',
aliases: [r'mma', r'wl'],
classNameAliases: {
r'brace': r'punctuation',
r'pattern': r'type',
r'slot': r'type',
r'symbol': r'variable',
r'named-character': r'variable',
r'builtin-symbol': r'built_in',
r'message-name': r'string',
},
contains: [
Mode(
scope: r'comment',
begin: r'\(\*',
end: r'\*\)',
contains: [
r'self',
Mode(
scope: r'doctag',
begin: r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',
end: r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
excludeBegin: true,
relevance: 0,
),
Mode(
begin:
r"[ ]+((?: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}",
),
],
),
Mode(
scope: r'pattern',
relevance: 0,
begin: r'([a-zA-Z$][a-zA-Z0-9$]*)?_+([a-zA-Z$][a-zA-Z0-9$]*)?',
),
Mode(
scope: r'slot',
relevance: 0,
begin: r'#[a-zA-Z$][a-zA-Z0-9$]*|#+[0-9]?',
),
Mode(
scope: r'message-name',
relevance: 0,
begin: r'::[a-zA-Z$][a-zA-Z0-9$]*',
),
Mode(
variants: [
Mode(
scope: r'builtin-symbol',
begin: r'[a-zA-Z$][a-zA-Z0-9$]*',
onBegin: (RegExpMatch m, CallbackResponse resp) {
final symbol = m.group(0);
if (symbol == null ||
!_mathematicaSystemSymbols.contains(symbol)) {
resp.ignoreMatch();
}
},
),
Mode(
scope: r'symbol',
relevance: 0,
begin: r'[a-zA-Z$][a-zA-Z0-9$]*',
),
],
),
Mode(scope: r'named-character', begin: r'\\\[[$a-zA-Z][$a-zA-Z0-9]+\]'),
Mode(
scope: r'string',
begin: r'"',
end: r'"',
illegal: r'\n',
contains: [Mode(begin: r'\\[\s\S]', relevance: 0)],
),
Mode(
scope: r'number',
relevance: 0,
begin:
r'(?:([2-9]|[1-2]\d|[3][0-5])\^\^(\w*\.\w+|\w+\.\w*|\w+)|(\d*\.\d+|\d+\.\d*|\d+))(?:(?:``[+-]?(\d*\.\d+|\d+\.\d*|\d+)|`([+-]?(\d*\.\d+|\d+\.\d*|\d+))?))?(?:\*\^[+-]?\d+)?',
),
Mode(
scope: r'operator',
relevance: 0,
begin: r"[+\-*/,;.:@~=><&|_`'^?!%]+",
),
Mode(scope: r'brace', relevance: 0, begin: r'[[\](){}]'),
],
);
}