refractor
Version:
Lightweight, robust, elegant virtual syntax highlighting using Prism
34 lines (31 loc) โข 1.19 kB
JavaScript
// @ts-nocheck
/**
* @import {Refractor} from '../lib/core.js'
*/
openqasm.displayName = 'openqasm'
openqasm.aliases = ['qasm']
/** @param {Refractor} Prism */
export default function openqasm(Prism) {
// https://qiskit.github.io/openqasm/grammar/index.html
Prism.languages.openqasm = {
comment: /\/\*[\s\S]*?\*\/|\/\/.*/,
string: {
pattern: /"[^"\r\n\t]*"|'[^'\r\n\t]*'/,
greedy: true
},
keyword:
/\b(?:CX|OPENQASM|U|barrier|boxas|boxto|break|const|continue|ctrl|def|defcal|defcalgrammar|delay|else|end|for|gate|gphase|if|in|include|inv|kernel|lengthof|let|measure|pow|reset|return|rotary|stretchinf|while)\b|#pragma\b/,
'class-name':
/\b(?:angle|bit|bool|creg|fixed|float|int|length|qreg|qubit|stretch|uint)\b/,
function: /\b(?:cos|exp|ln|popcount|rotl|rotr|sin|sqrt|tan)\b(?=\s*\()/,
constant: /\b(?:euler|pi|tau)\b|ฯ|๐|โ/,
number: {
pattern:
/(^|[^.\w$])(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?(?:dt|ns|us|ยตs|ms|s)?/i,
lookbehind: true
},
operator: /->|>>=?|<<=?|&&|\|\||\+\+|--|[!=<>&|~^+\-*/%]=?|@/,
punctuation: /[(){}\[\];,:.]/
}
Prism.languages.qasm = Prism.languages.openqasm
}