1 /*! `csharp` grammar compiled for Highlight.js 11.11.1 */
3 var hljsGrammar
= (function () {
8 Author: Jason Diamond <jason@diamond.name>
9 Contributor: Nicolas LLOBERA <nllobera@gmail.com>, Pieter Vantorre <pietervantorre@gmail.com>, David Pine <david.pine@microsoft.com>
10 Website: https://docs.microsoft.com/dotnet/csharp/
14 /** @type LanguageFn */
15 function csharp(hljs
) {
16 const BUILT_IN_KEYWORDS
= [
38 const FUNCTION_MODIFIERS
= [
55 const LITERAL_KEYWORDS
= [
61 const NORMAL_KEYWORDS
= [
120 const CONTEXTUAL_KEYWORDS
= [
164 keyword: NORMAL_KEYWORDS
.concat(CONTEXTUAL_KEYWORDS
),
165 built_in: BUILT_IN_KEYWORDS
,
166 literal: LITERAL_KEYWORDS
168 const TITLE_MODE
= hljs
.inherit(hljs
.TITLE_MODE
, { begin: '[a-zA-Z](\\.?\\w)*' });
172 { begin: '\\b(0b[01\']+)' },
173 { begin: '(-?)\\b([\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)(u|U|l|L|ul|UL|f|F|b|B)' },
174 { begin: '(-?)(\\b0[xX][a-fA-F0-9\']+|(\\b[\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)([eE][-+]?[\\d\']+)?)' }
180 begin: /"""("*)(?!")(.|\n)*?"""\1/,
183 const VERBATIM_STRING
= {
187 contains: [ { begin: '""' } ]
189 const VERBATIM_STRING_NO_LF
= hljs
.inherit(VERBATIM_STRING
, { illegal: /\n/ });
196 const SUBST_NO_LF
= hljs
.inherit(SUBST
, { illegal: /\n/ });
197 const INTERPOLATED_STRING
= {
205 hljs
.BACKSLASH_ESCAPE
,
209 const INTERPOLATED_VERBATIM_STRING
= {
220 const INTERPOLATED_VERBATIM_STRING_NO_LF
= hljs
.inherit(INTERPOLATED_VERBATIM_STRING
, {
230 INTERPOLATED_VERBATIM_STRING
,
233 hljs
.APOS_STRING_MODE
,
234 hljs
.QUOTE_STRING_MODE
,
236 hljs
.C_BLOCK_COMMENT_MODE
238 SUBST_NO_LF
.contains
= [
239 INTERPOLATED_VERBATIM_STRING_NO_LF
,
241 VERBATIM_STRING_NO_LF
,
242 hljs
.APOS_STRING_MODE
,
243 hljs
.QUOTE_STRING_MODE
,
245 hljs
.inherit(hljs
.C_BLOCK_COMMENT_MODE
, { illegal: /\n/ })
247 const STRING
= { variants: [
249 INTERPOLATED_VERBATIM_STRING
,
252 hljs
.APOS_STRING_MODE
,
253 hljs
.QUOTE_STRING_MODE
256 const GENERIC_MODIFIER
= {
260 { beginKeywords: "in out" },
264 const TYPE_IDENT_RE
= hljs
.IDENT_RE
+ '(<' + hljs
.IDENT_RE
+ '(\\s*,\\s*' + hljs
.IDENT_RE
+ ')*>)?(\\[\\])?';
265 const AT_IDENTIFIER
= {
266 // prevents expressions like `@class` from incorrect flagging
267 // `class` as a keyword
268 begin: "@" + hljs
.IDENT_RE
,
294 { begin: '<!--|-->' },
304 hljs
.C_LINE_COMMENT_MODE
,
305 hljs
.C_BLOCK_COMMENT_MODE
,
310 keywords: { keyword: 'if else elif endif define undef warning error line region endregion pragma checksum' }
315 beginKeywords: 'class interface',
320 { beginKeywords: "where class" },
323 hljs
.C_LINE_COMMENT_MODE
,
324 hljs
.C_BLOCK_COMMENT_MODE
328 beginKeywords: 'namespace',
334 hljs
.C_LINE_COMMENT_MODE
,
335 hljs
.C_BLOCK_COMMENT_MODE
339 beginKeywords: 'record',
346 hljs
.C_LINE_COMMENT_MODE
,
347 hljs
.C_BLOCK_COMMENT_MODE
353 begin: '^\\s*\\[(?=[\\w])',
366 // Expression keywords prevent 'keyword Name(...)' from being
367 // recognized as a function definition
368 beginKeywords: 'new return throw await else',
372 className: 'function',
373 begin: '(' + TYPE_IDENT_RE
+ '\\s+)+' + hljs
.IDENT_RE
+ '\\s*(<[^=]+>\\s*)?\\(',
379 // prevents these from being highlighted `title`
381 beginKeywords: FUNCTION_MODIFIERS
.join(" "),
385 begin: hljs
.IDENT_RE
+ '\\s*(<[^=]+>\\s*)?\\(',
405 hljs
.C_BLOCK_COMMENT_MODE
408 hljs
.C_LINE_COMMENT_MODE
,
409 hljs
.C_BLOCK_COMMENT_MODE
421 hljs
.registerLanguage('csharp', hljsGrammar
);