123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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]+/
- }
- },
- });
|