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.
39 lines
982 B
39 lines
982 B
Prism.languages.bison = Prism.languages.extend('c', {}); |
|
|
|
Prism.languages.insertBefore('bison', 'comment', { |
|
'bison': { |
|
// This should match all the beginning of the file |
|
// including the prologue(s), the bison declarations and |
|
// the grammar rules. |
|
pattern: /^(?:[^%]|%(?!%))*%%[\s\S]*?%%/, |
|
inside: { |
|
'c': { |
|
// Allow for one level of nested braces |
|
pattern: /%\{[\s\S]*?%\}|\{(?:\{[^}]*\}|[^{}])*\}/, |
|
inside: { |
|
'delimiter': { |
|
pattern: /^%?\{|%?\}$/, |
|
alias: 'punctuation' |
|
}, |
|
'bison-variable': { |
|
pattern: /[$@](?:<[^\s>]+>)?[\w$]+/, |
|
alias: 'variable', |
|
inside: { |
|
'punctuation': /<|>/ |
|
} |
|
}, |
|
rest: Prism.languages.c |
|
} |
|
}, |
|
'comment': Prism.languages.c.comment, |
|
'string': Prism.languages.c.string, |
|
'property': /\S+(?=:)/, |
|
'keyword': /%\w+/, |
|
'number': { |
|
pattern: /(^|[^@])\b(?:0x[\da-f]+|\d+)/i, |
|
lookbehind: true |
|
}, |
|
'punctuation': /%[%?]|[|:;\[\]<>]/ |
|
} |
|
} |
|
});
|
|
|