basant307/AI_Governance_Project
048
1/*2Language: C#3Author: Jason Diamond <jason@diamond.name>4Contributor: Nicolas LLOBERA <nllobera@gmail.com>, Pieter Vantorre <pietervantorre@gmail.com>, David Pine <david.pine@microsoft.com>5Website: https://docs.microsoft.com/dotnet/csharp/6Category: common7*/8 9/** @type LanguageFn */10function csharp(hljs) {11 const BUILT_IN_KEYWORDS = [12 'bool',13 'byte',14 'char',15 'decimal',16 'delegate',17 'double',18 'dynamic',19 'enum',20 'float',21 'int',22 'long',23 'nint',24 'nuint',25 'object',26 'sbyte',27 'short',28 'string',29 'ulong',30 'uint',31 'ushort'32 ];33 const FUNCTION_MODIFIERS = [34 'public',35 'private',36 'protected',37 'static',38 'internal',39 'protected',40 'abstract',41 'async',42 'extern',43 'override',44 'unsafe',45 'virtual',46 'new',47 'sealed',48 'partial'49 ];50 const LITERAL_KEYWORDS = [51 'default',52 'false',53 'null',54 'true'55 ];56 const NORMAL_KEYWORDS = [57 'abstract',58 'as',59 'base',60 'break',61 'case',62 'catch',63 'class',64 'const',65 'continue',66 'do',67 'else',68 'event',69 'explicit',70 'extern',71 'finally',72 'fixed',73 'for',74 'foreach',75 'goto',76 'if',77 'implicit',78 'in',79 'interface',80 'internal',81 'is',82 'lock',83 'namespace',84 'new',85 'operator',86 'out',87 'override',88 'params',89 'private',90 'protected',91 'public',92 'readonly',93 'record',94 'ref',95 'return',96 'scoped',97 'sealed',98 'sizeof',99 'stackalloc',100 'static',101 'struct',102 'switch',103 'this',104 'throw',105 'try',106 'typeof',107 'unchecked',108 'unsafe',109 'using',110 'virtual',111 'void',112 'volatile',113 'while'114 ];115 const CONTEXTUAL_KEYWORDS = [116 'add',117 'alias',118 'and',119 'ascending',120 'args',121 'async',122 'await',123 'by',124 'descending',125 'dynamic',126 'equals',127 'file',128 'from',129 'get',130 'global',131 'group',132 'init',133 'into',134 'join',135 'let',136 'nameof',137 'not',138 'notnull',139 'on',140 'or',141 'orderby',142 'partial',143 'record',144 'remove',145 'required',146 'scoped',147 'select',148 'set',149 'unmanaged',150 'value|0',151 'var',152 'when',153 'where',154 'with',155 'yield'156 ];157 158 const KEYWORDS = {159 keyword: NORMAL_KEYWORDS.concat(CONTEXTUAL_KEYWORDS),160 built_in: BUILT_IN_KEYWORDS,161 literal: LITERAL_KEYWORDS162 };163 const TITLE_MODE = hljs.inherit(hljs.TITLE_MODE, { begin: '[a-zA-Z](\\.?\\w)*' });164 const NUMBERS = {165 className: 'number',166 variants: [167 { begin: '\\b(0b[01\']+)' },168 { begin: '(-?)\\b([\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)(u|U|l|L|ul|UL|f|F|b|B)' },169 { begin: '(-?)(\\b0[xX][a-fA-F0-9\']+|(\\b[\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)([eE][-+]?[\\d\']+)?)' }170 ],171 relevance: 0172 };173 const RAW_STRING = {174 className: 'string',175 begin: /"""("*)(?!")(.|\n)*?"""\1/,176 relevance: 1177 };178 const VERBATIM_STRING = {179 className: 'string',180 begin: '@"',181 end: '"',182 contains: [ { begin: '""' } ]183 };184 const VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, { illegal: /\n/ });185 const SUBST = {186 className: 'subst',187 begin: /\{/,188 end: /\}/,189 keywords: KEYWORDS190 };191 const SUBST_NO_LF = hljs.inherit(SUBST, { illegal: /\n/ });192 const INTERPOLATED_STRING = {193 className: 'string',194 begin: /\$"/,195 end: '"',196 illegal: /\n/,197 contains: [198 { begin: /\{\{/ },199 { begin: /\}\}/ },200 hljs.BACKSLASH_ESCAPE,201 SUBST_NO_LF202 ]203 };204 const INTERPOLATED_VERBATIM_STRING = {205 className: 'string',206 begin: /\$@"/,207 end: '"',208 contains: [209 { begin: /\{\{/ },210 { begin: /\}\}/ },211 { begin: '""' },212 SUBST213 ]214 };215 const INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {216 illegal: /\n/,217 contains: [218 { begin: /\{\{/ },219 { begin: /\}\}/ },220 { begin: '""' },221 SUBST_NO_LF222 ]223 });224 SUBST.contains = [225 INTERPOLATED_VERBATIM_STRING,226 INTERPOLATED_STRING,227 VERBATIM_STRING,228 hljs.APOS_STRING_MODE,229 hljs.QUOTE_STRING_MODE,230 NUMBERS,231 hljs.C_BLOCK_COMMENT_MODE232 ];233 SUBST_NO_LF.contains = [234 INTERPOLATED_VERBATIM_STRING_NO_LF,235 INTERPOLATED_STRING,236 VERBATIM_STRING_NO_LF,237 hljs.APOS_STRING_MODE,238 hljs.QUOTE_STRING_MODE,239 NUMBERS,240 hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, { illegal: /\n/ })241 ];242 const STRING = { variants: [243 RAW_STRING,244 INTERPOLATED_VERBATIM_STRING,245 INTERPOLATED_STRING,246 VERBATIM_STRING,247 hljs.APOS_STRING_MODE,248 hljs.QUOTE_STRING_MODE249 ] };250 251 const GENERIC_MODIFIER = {252 begin: "<",253 end: ">",254 contains: [255 { beginKeywords: "in out" },256 TITLE_MODE257 ]258 };259 const TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\s*,\\s*' + hljs.IDENT_RE + ')*>)?(\\[\\])?';260 const AT_IDENTIFIER = {261 // prevents expressions like `@class` from incorrect flagging262 // `class` as a keyword263 begin: "@" + hljs.IDENT_RE,264 relevance: 0265 };266 267 return {268 name: 'C#',269 aliases: [270 'cs',271 'c#'272 ],273 keywords: KEYWORDS,274 illegal: /::/,275 contains: [276 hljs.COMMENT(277 '///',278 '$',279 {280 returnBegin: true,281 contains: [282 {283 className: 'doctag',284 variants: [285 {286 begin: '///',287 relevance: 0288 },289 { begin: '<!--|-->' },290 {291 begin: '</?',292 end: '>'293 }294 ]295 }296 ]297 }298 ),299 hljs.C_LINE_COMMENT_MODE,300 hljs.C_BLOCK_COMMENT_MODE,301 {302 className: 'meta',303 begin: '#',304 end: '$',305 keywords: { keyword: 'if else elif endif define undef warning error line region endregion pragma checksum' }306 },307 STRING,308 NUMBERS,309 {310 beginKeywords: 'class interface',311 relevance: 0,312 end: /[{;=]/,313 illegal: /[^\s:,]/,314 contains: [315 { beginKeywords: "where class" },316 TITLE_MODE,317 GENERIC_MODIFIER,318 hljs.C_LINE_COMMENT_MODE,319 hljs.C_BLOCK_COMMENT_MODE320 ]321 },322 {323 beginKeywords: 'namespace',324 relevance: 0,325 end: /[{;=]/,326 illegal: /[^\s:]/,327 contains: [328 TITLE_MODE,329 hljs.C_LINE_COMMENT_MODE,330 hljs.C_BLOCK_COMMENT_MODE331 ]332 },333 {334 beginKeywords: 'record',335 relevance: 0,336 end: /[{;=]/,337 illegal: /[^\s:]/,338 contains: [339 TITLE_MODE,340 GENERIC_MODIFIER,341 hljs.C_LINE_COMMENT_MODE,342 hljs.C_BLOCK_COMMENT_MODE343 ]344 },345 {346 // [Attributes("")]347 className: 'meta',348 begin: '^\\s*\\[(?=[\\w])',349 excludeBegin: true,350 end: '\\]',351 excludeEnd: true,352 contains: [353 {354 className: 'string',355 begin: /"/,356 end: /"/357 }358 ]359 },360 {361 // Expression keywords prevent 'keyword Name(...)' from being362 // recognized as a function definition363 beginKeywords: 'new return throw await else',364 relevance: 0365 },366 {367 className: 'function',368 begin: '(' + TYPE_IDENT_RE + '\\s+)+' + hljs.IDENT_RE + '\\s*(<[^=]+>\\s*)?\\(',369 returnBegin: true,370 end: /\s*[{;=]/,371 excludeEnd: true,372 keywords: KEYWORDS,373 contains: [374 // prevents these from being highlighted `title`375 {376 beginKeywords: FUNCTION_MODIFIERS.join(" "),377 relevance: 0378 },379 {380 begin: hljs.IDENT_RE + '\\s*(<[^=]+>\\s*)?\\(',381 returnBegin: true,382 contains: [383 hljs.TITLE_MODE,384 GENERIC_MODIFIER385 ],386 relevance: 0387 },388 { match: /\(\)/ },389 {390 className: 'params',391 begin: /\(/,392 end: /\)/,393 excludeBegin: true,394 excludeEnd: true,395 keywords: KEYWORDS,396 relevance: 0,397 contains: [398 STRING,399 NUMBERS,400 hljs.C_BLOCK_COMMENT_MODE401 ]402 },403 hljs.C_LINE_COMMENT_MODE,404 hljs.C_BLOCK_COMMENT_MODE405 ]406 },407 AT_IDENTIFIER408 ]409 };410}411 412export { csharp as default };413 