You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.6 KiB
60 lines
1.6 KiB
Prism.languages.chaiscript = Prism.languages.extend('clike', { |
|
'string': { |
|
pattern: /(^|[^\\])'(?:[^'\\]|\\[\s\S])*'/, |
|
lookbehind: true, |
|
greedy: true |
|
}, |
|
'class-name': [ |
|
{ |
|
// e.g. class Rectangle { ... } |
|
pattern: /(\bclass\s+)\w+/, |
|
lookbehind: true |
|
}, |
|
{ |
|
// e.g. attr Rectangle::height, def Rectangle::area() { ... } |
|
pattern: /(\b(?:attr|def)\s+)\w+(?=\s*::)/, |
|
lookbehind: true |
|
} |
|
], |
|
'keyword': /\b(?:attr|auto|break|case|catch|class|continue|def|default|else|finally|for|fun|global|if|return|switch|this|try|var|while)\b/, |
|
'number': [ |
|
Prism.languages.cpp.number, |
|
/\b(?:Infinity|NaN)\b/ |
|
], |
|
'operator': />>=?|<<=?|\|\||&&|:[:=]?|--|\+\+|[=!<>+\-*/%|&^]=?|[?~]|`[^`\r\n]{1,4}`/, |
|
}); |
|
|
|
Prism.languages.insertBefore('chaiscript', 'operator', { |
|
'parameter-type': { |
|
// e.g. def foo(int x, Vector y) {...} |
|
pattern: /([,(]\s*)\w+(?=\s+\w)/, |
|
lookbehind: true, |
|
alias: 'class-name' |
|
}, |
|
}); |
|
|
|
Prism.languages.insertBefore('chaiscript', 'string', { |
|
'string-interpolation': { |
|
pattern: /(^|[^\\])"(?:[^"$\\]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*"/, |
|
lookbehind: true, |
|
greedy: true, |
|
inside: { |
|
'interpolation': { |
|
pattern: /((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\}/, |
|
lookbehind: true, |
|
inside: { |
|
'interpolation-expression': { |
|
pattern: /(^\$\{)[\s\S]+(?=\}$)/, |
|
lookbehind: true, |
|
inside: Prism.languages.chaiscript |
|
}, |
|
'interpolation-punctuation': { |
|
pattern: /^\$\{|\}$/, |
|
alias: 'punctuation' |
|
} |
|
} |
|
}, |
|
'string': /[\s\S]+/ |
|
} |
|
}, |
|
});
|
|
|