UNPKG

highlightjs-qsharp

Version:

highlight.js syntax definition for Microsoft's Q# language

36 lines 2.73 kB
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]}}})());