1 /*! `csharp` grammar compiled for Highlight.js 11.11.1 */
2 var hljsGrammar
= (function () {
7 Author: Jason Diamond <jason@diamond.name>
8 Contributor: Nicolas LLOBERA <nllobera@gmail.com>, Pieter Vantorre <pietervantorre@gmail.com>, David Pine <david.pine@microsoft.com>
9 Website: https://docs.microsoft.com/dotnet/csharp/
13 /** @type LanguageFn */
14 function csharp(hljs
) {
15 const BUILT_IN_KEYWORDS
= [
37 const FUNCTION_MODIFIERS
= [
54 const LITERAL_KEYWORDS
= [
60 const NORMAL_KEYWORDS
= [
119 const CONTEXTUAL_KEYWORDS
= [
163 keyword: NORMAL_KEYWORDS
.concat(CONTEXTUAL_KEYWORDS
),
164 built_in: BUILT_IN_KEYWORDS
,
165 literal: LITERAL_KEYWORDS
167 const TITLE_MODE
= hljs
.inherit(hljs
.TITLE_MODE
, { begin: '[a-zA-Z](\\.?\\w)*' });
171 { begin: '\\b(0b[01\']+)' },
172 { begin: '(-?)\\b([\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)(u|U|l|L|ul|UL|f|F|b|B)' },
173 { begin: '(-?)(\\b0[xX][a-fA-F0-9\']+|(\\b[\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)([eE][-+]?[\\d\']+)?)' }
179 begin: /"""("*)(?!")(.|\n)*?"""\1/,
182 const VERBATIM_STRING
= {
186 contains: [ { begin: '""' } ]
188 const VERBATIM_STRING_NO_LF
= hljs
.inherit(VERBATIM_STRING
, { illegal: /\n/ });
195 const SUBST_NO_LF
= hljs
.inherit(SUBST
, { illegal: /\n/ });
196 const INTERPOLATED_STRING
= {
204 hljs
.BACKSLASH_ESCAPE
,
208 const INTERPOLATED_VERBATIM_STRING
= {
219 const INTERPOLATED_VERBATIM_STRING_NO_LF
= hljs
.inherit(INTERPOLATED_VERBATIM_STRING
, {
229 INTERPOLATED_VERBATIM_STRING
,
232 hljs
.APOS_STRING_MODE
,
233 hljs
.QUOTE_STRING_MODE
,
235 hljs
.C_BLOCK_COMMENT_MODE
237 SUBST_NO_LF
.contains
= [
238 INTERPOLATED_VERBATIM_STRING_NO_LF
,
240 VERBATIM_STRING_NO_LF
,
241 hljs
.APOS_STRING_MODE
,
242 hljs
.QUOTE_STRING_MODE
,
244 hljs
.inherit(hljs
.C_BLOCK_COMMENT_MODE
, { illegal: /\n/ })
246 const STRING
= { variants: [
248 INTERPOLATED_VERBATIM_STRING
,
251 hljs
.APOS_STRING_MODE
,
252 hljs
.QUOTE_STRING_MODE
255 const GENERIC_MODIFIER
= {
259 { beginKeywords: "in out" },
263 const TYPE_IDENT_RE
= hljs
.IDENT_RE
+ '(<' + hljs
.IDENT_RE
+ '(\\s*,\\s*' + hljs
.IDENT_RE
+ ')*>)?(\\[\\])?';
264 const AT_IDENTIFIER
= {
265 // prevents expressions like `@class` from incorrect flagging
266 // `class` as a keyword
267 begin: "@" + hljs
.IDENT_RE
,
293 { begin: '<!--|-->' },
303 hljs
.C_LINE_COMMENT_MODE
,
304 hljs
.C_BLOCK_COMMENT_MODE
,
309 keywords: { keyword: 'if else elif endif define undef warning error line region endregion pragma checksum' }
314 beginKeywords: 'class interface',
319 { beginKeywords: "where class" },
322 hljs
.C_LINE_COMMENT_MODE
,
323 hljs
.C_BLOCK_COMMENT_MODE
327 beginKeywords: 'namespace',
333 hljs
.C_LINE_COMMENT_MODE
,
334 hljs
.C_BLOCK_COMMENT_MODE
338 beginKeywords: 'record',
345 hljs
.C_LINE_COMMENT_MODE
,
346 hljs
.C_BLOCK_COMMENT_MODE
352 begin: '^\\s*\\[(?=[\\w])',
365 // Expression keywords prevent 'keyword Name(...)' from being
366 // recognized as a function definition
367 beginKeywords: 'new return throw await else',
371 className: 'function',
372 begin: '(' + TYPE_IDENT_RE
+ '\\s+)+' + hljs
.IDENT_RE
+ '\\s*(<[^=]+>\\s*)?\\(',
378 // prevents these from being highlighted `title`
380 beginKeywords: FUNCTION_MODIFIERS
.join(" "),
384 begin: hljs
.IDENT_RE
+ '\\s*(<[^=]+>\\s*)?\\(',
404 hljs
.C_BLOCK_COMMENT_MODE
407 hljs
.C_LINE_COMMENT_MODE
,
408 hljs
.C_BLOCK_COMMENT_MODE
420 export default hljsGrammar
;