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.
99 lines
2.1 KiB
99 lines
2.1 KiB
(function (Prism) { |
|
var escapes = /\\(?:["'\\abefnrtv]|0[0-7]{2}|U[\dA-Fa-f]{6}|u[\dA-Fa-f]{4}|x[\dA-Fa-f]{2})/; |
|
|
|
Prism.languages.odin = { |
|
/** |
|
* The current implementation supports only 1 level of nesting. |
|
* |
|
* @author Michael Schmidt |
|
* @author edukisto |
|
*/ |
|
'comment': [ |
|
{ |
|
pattern: /\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:\*(?!\/)|[^*])*(?:\*\/|$))*(?:\*\/|$)/, |
|
greedy: true |
|
}, |
|
{ |
|
pattern: /#![^\n\r]*/, |
|
greedy: true |
|
}, |
|
{ |
|
pattern: /\/\/[^\n\r]*/, |
|
greedy: true |
|
} |
|
], |
|
|
|
/** |
|
* Should be found before strings because of '"'"- and '`'`-like sequences. |
|
*/ |
|
'char': { |
|
pattern: /'(?:\\(?:.|[0Uux][0-9A-Fa-f]{1,6})|[^\n\r'\\])'/, |
|
greedy: true, |
|
inside: { |
|
'symbol': escapes |
|
} |
|
}, |
|
|
|
'string': [ |
|
{ |
|
pattern: /`[^`]*`/, |
|
greedy: true |
|
}, |
|
{ |
|
pattern: /"(?:\\.|[^\n\r"\\])*"/, |
|
greedy: true, |
|
inside: { |
|
'symbol': escapes |
|
} |
|
} |
|
], |
|
|
|
'directive': { |
|
pattern: /#\w+/, |
|
alias: 'property' |
|
}, |
|
|
|
'number': /\b0(?:b[01_]+|d[\d_]+|h_*(?:(?:(?:[\dA-Fa-f]_*){8}){1,2}|(?:[\dA-Fa-f]_*){4})|o[0-7_]+|x[\dA-F_a-f]+|z[\dAB_ab]+)\b|(?:\b\d+(?:\.(?!\.)\d*)?|\B\.\d+)(?:[Ee][+-]?\d*)?[ijk]?(?!\w)/, |
|
|
|
'discard': { |
|
pattern: /\b_\b/, |
|
alias: 'keyword' |
|
}, |
|
|
|
'procedure-definition': { |
|
pattern: /\b\w+(?=[ \t]*(?::\s*){2}proc\b)/, |
|
alias: 'function' |
|
}, |
|
|
|
'keyword': /\b(?:asm|auto_cast|bit_set|break|case|cast|context|continue|defer|distinct|do|dynamic|else|enum|fallthrough|for|foreign|if|import|in|map|matrix|not_in|or_else|or_return|package|proc|return|struct|switch|transmute|typeid|union|using|when|where)\b/, |
|
|
|
/** |
|
* false, nil, true can be used as procedure names. "_" and keywords can't. |
|
*/ |
|
'procedure-name': { |
|
pattern: /\b\w+(?=[ \t]*\()/, |
|
alias: 'function' |
|
}, |
|
|
|
'boolean': /\b(?:false|nil|true)\b/, |
|
|
|
'constant-parameter-sign': { |
|
pattern: /\$/, |
|
alias: 'important' |
|
}, |
|
|
|
'undefined': { |
|
pattern: /---/, |
|
alias: 'operator' |
|
}, |
|
|
|
'arrow': { |
|
pattern: /->/, |
|
alias: 'punctuation' |
|
}, |
|
|
|
'operator': /\+\+|--|\.\.[<=]?|(?:&~|[-!*+/=~]|[%&<>|]{1,2})=?|[?^]/, |
|
|
|
'punctuation': /[(),.:;@\[\]{}]/ |
|
}; |
|
}(Prism));
|
|
|