highlightjs-qsharp
Version:
highlight.js syntax definition for Microsoft's Q# language
36 lines • 2.73 kB
JavaScript
hljs.registerLanguage("qsharp",(()=>{"use strict";return e=>{var n={
keyword:["operation","function","is","namespace","open","as","newtype","let","mutable","set","body","adjoint","controlled","self","auto","if","elif","else","return","fail","for","in","new","use","borrow","repeat","until","fixup","while","within","apply"],
built_in:["Unit","Int","BigInt","Double","Bool","String","Qubit","Result","Pauli","Range"],
literal:["true","false","Zero","One","PauliI","PauliX","PauliY","PauliZ","Adj","Ctl"]
},a=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),i={className:"number",
variants:[{begin:"\\b(0b[01']+)"},{
begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(L)"},{
begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
}],relevance:0},s={className:"subst",begin:/\{/,end:/\}/,keywords:n
},r=e.inherit(s,{illegal:/\n/}),t={className:"string",begin:/\$"/,end:'"',
illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},e.BACKSLASH_ESCAPE,r]}
;s.contains=[t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE],
r.contains=[t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{
illegal:/\n/})];var l={variants:[t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},E={
begin:"<",end:">",contains:[{beginKeywords:"in out"},a]
},c=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",d={
begin:"@"+e.IDENT_RE,relevance:0};return{name:"Q#",aliases:["qs","q#"],
keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,
contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{
begin:"\x3c!--|--\x3e"},{begin:"</?",end:">"}]}]
}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",
end:"$",keywords:{
"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"
}},l,i,{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,
contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",
begin:"^\\s*\\@",excludeBegin:!0,end:"\\(\\)",excludeEnd:!0,contains:[{
className:"meta-string",begin:/"/,end:/"/}]},{
beginKeywords:"new return throw await else",relevance:0},{className:"function",
begin:"("+c+"\\s+)+"+e.IDENT_RE+"\\s*(<.+>\\s*)?\\(",returnBegin:!0,
end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{
beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial",
relevance:0},{begin:e.IDENT_RE+"\\s*(<.+>\\s*)?\\(",returnBegin:!0,
contains:[e.TITLE_MODE,E],relevance:0},{className:"params",begin:/\(/,end:/\)/,
excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,
contains:[l,i,e.C_BLOCK_COMMENT_MODE]
},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},d]}}})());