UNPKG

refractor

Version:

Lightweight, robust, elegant virtual syntax highlighting using Prism

51 lines (49 loc) 1.42 kB
// @ts-nocheck /** * @import {Refractor} from '../lib/core.js' */ import refractorC from './c.js' bison.displayName = 'bison' bison.aliases = [] /** @param {Refractor} Prism */ export default function bison(Prism) { Prism.register(refractorC) 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: /%[%?]|[|:;\[\]<>]/ } } }) }