46 lines
3.7 KiB
JavaScript
46 lines
3.7 KiB
JavaScript
hljs.registerLanguage("csharp",function(){"use strict";return function(e){
|
|
var n={
|
|
keyword:["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value","var","when","where","with","yield"]).join(" "),
|
|
built_in:"bool byte char decimal delegate double dynamic enum float int long nint nuint object sbyte short string ulong unit ushort",
|
|
literal:"default false null true"},i=e.inherit(e.TITLE_MODE,{
|
|
begin:"[a-zA-Z](\\.?\\w)*"}),a={className:"number",variants:[{
|
|
begin:"\\b(0b[01']+)"},{
|
|
begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{
|
|
begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
|
|
}],relevance:0},s={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]
|
|
},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:"{",end:"}",
|
|
keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/,
|
|
end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,l]
|
|
},o={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"
|
|
},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/,contains:[{begin:"{{"},{
|
|
begin:"}}"},{begin:'""'},l]})
|
|
;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE],
|
|
l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{
|
|
illegal:/\n/})];var g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]
|
|
},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},i]
|
|
},_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",b={
|
|
begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],
|
|
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"
|
|
}},g,a,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:,]/,
|
|
contains:[{beginKeywords:"where class"
|
|
},i,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",
|
|
end:/[{;=]/,illegal:/[^\s:]/,
|
|
contains:[i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{
|
|
beginKeywords:"record",end:/[{;=]/,illegal:/[^\s:]/,
|
|
contains:[i,E,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:"("+_+"\\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"
|
|
},{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:[g,a,e.C_BLOCK_COMMENT_MODE]
|
|
},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}}()); |