init
This commit is contained in:
		
							
								
								
									
										506
									
								
								syntax/csharp.jsf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										506
									
								
								syntax/csharp.jsf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,506 @@
 | 
			
		||||
# JOE syntax highlight file for C#
 | 
			
		||||
# Based on Java highlighter
 | 
			
		||||
 | 
			
		||||
=Idle
 | 
			
		||||
=Ident
 | 
			
		||||
=Preproc
 | 
			
		||||
=Precondit	+Preproc
 | 
			
		||||
=Define		+Preproc
 | 
			
		||||
=DefinedIdent	+Ident
 | 
			
		||||
=Comment
 | 
			
		||||
=DocComment	+Comment
 | 
			
		||||
=Constant
 | 
			
		||||
=String		+Constant
 | 
			
		||||
=Character	+Constant +String
 | 
			
		||||
=Number		+Constant
 | 
			
		||||
=Boolean	+Constant
 | 
			
		||||
=Escape
 | 
			
		||||
=StringEscape	+Escape
 | 
			
		||||
=CharacterEscape +Escape
 | 
			
		||||
=Type
 | 
			
		||||
=Structure	+Keyword
 | 
			
		||||
=StorageClass	+Type +Keyword
 | 
			
		||||
=Modifier	+StorageClass
 | 
			
		||||
=Keyword
 | 
			
		||||
=Operator	+Keyword
 | 
			
		||||
=Statement	+Keyword
 | 
			
		||||
=Loop		+Statement
 | 
			
		||||
=Conditional	+Statement
 | 
			
		||||
=Label		+DefinedIdent
 | 
			
		||||
=Bad
 | 
			
		||||
=Brace
 | 
			
		||||
=Control
 | 
			
		||||
 | 
			
		||||
:begin Idle
 | 
			
		||||
	*	begin	noeat call=.csharp()
 | 
			
		||||
 | 
			
		||||
.subr csharp
 | 
			
		||||
 | 
			
		||||
:reset Idle
 | 
			
		||||
	*		first		noeat
 | 
			
		||||
	" \t"		reset
 | 
			
		||||
 | 
			
		||||
:first Idle
 | 
			
		||||
	*		idle		noeat
 | 
			
		||||
	"#"		pre		mark
 | 
			
		||||
 | 
			
		||||
:pre Preproc
 | 
			
		||||
	*		pre		noeat
 | 
			
		||||
	"a-zA-Z"	preident	recolor=-1 buffer
 | 
			
		||||
	" \t"		pre
 | 
			
		||||
	"\n"		reset
 | 
			
		||||
 | 
			
		||||
:preident Preproc
 | 
			
		||||
	*		preunknown	markend recolormark strings
 | 
			
		||||
	"if"		precondit	markend recolormark
 | 
			
		||||
	"else"		precondit	markend recolormark
 | 
			
		||||
	"elif"		precondit	markend recolormark
 | 
			
		||||
	"endif"		precondit	markend recolormark
 | 
			
		||||
	"region"	preregion	markend recolormark
 | 
			
		||||
	"endregion"	preregion	markend recolormark
 | 
			
		||||
	"define"	predefine	markend recolormark
 | 
			
		||||
	"undef"		predefine	markend recolormark
 | 
			
		||||
	"warning"	preregion	markend recolormark
 | 
			
		||||
	"error"		preregion	markend recolormark
 | 
			
		||||
	"line"		prebody		markend recolormark
 | 
			
		||||
done
 | 
			
		||||
	"a-z"		preident
 | 
			
		||||
 | 
			
		||||
:prebody Preproc
 | 
			
		||||
	*		prebody
 | 
			
		||||
	"\n"		reset
 | 
			
		||||
 | 
			
		||||
:precondit Precondit
 | 
			
		||||
	*		precondit
 | 
			
		||||
	"\n"		reset
 | 
			
		||||
 | 
			
		||||
:preregion Preproc
 | 
			
		||||
	*		preregion_text
 | 
			
		||||
	"\n"		reset
 | 
			
		||||
 | 
			
		||||
:preregion_text Comment
 | 
			
		||||
	*		preregion_text
 | 
			
		||||
	"\n"		reset
 | 
			
		||||
 | 
			
		||||
:predefine Define
 | 
			
		||||
	*		predefine_text	noeat
 | 
			
		||||
	" \t"		predefine
 | 
			
		||||
	"\n"		reset
 | 
			
		||||
 | 
			
		||||
:predefine_text DefinedIdent
 | 
			
		||||
	*		predefine_text
 | 
			
		||||
	" \t"		predefine_value
 | 
			
		||||
	"\n"		reset
 | 
			
		||||
 | 
			
		||||
:predefine_value Idle
 | 
			
		||||
	*		predefine_value
 | 
			
		||||
	"\n"		reset
 | 
			
		||||
 | 
			
		||||
:preunknown Preproc
 | 
			
		||||
	*		preunknown
 | 
			
		||||
	"\n"		reset
 | 
			
		||||
 | 
			
		||||
:idle Idle
 | 
			
		||||
	*		idle
 | 
			
		||||
	"\n"		reset
 | 
			
		||||
	"/"		slash
 | 
			
		||||
	"0"		first_digit	recolor=-1
 | 
			
		||||
	"1-9"		decimal		recolor=-1
 | 
			
		||||
	"."		maybe_float
 | 
			
		||||
	"\""		string		recolor=-1
 | 
			
		||||
	"@"		forcedliteral	recolor=-1
 | 
			
		||||
	"'"		char		recolor=-1
 | 
			
		||||
	"\i"		ident		buffer
 | 
			
		||||
	"{}"		brace		recolor=-1
 | 
			
		||||
	",:;=()><[]*&|!~+\-%^"	control	recolor=-1
 | 
			
		||||
 | 
			
		||||
:maybe_done Control
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
	"/"	idle	noeat return recolor=-2
 | 
			
		||||
 | 
			
		||||
:brace Brace
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:control Control
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:forcedliteral Ident
 | 
			
		||||
	*		idle		noeat
 | 
			
		||||
	"\i"		ident		recolor=-2
 | 
			
		||||
	"\""		forcedstring	recolor=-2
 | 
			
		||||
 | 
			
		||||
:forcedstring String string
 | 
			
		||||
	*		forcedstring
 | 
			
		||||
	"\""		forcedstringquot
 | 
			
		||||
 | 
			
		||||
:forcedstringquot String string
 | 
			
		||||
	*		idle			noeat
 | 
			
		||||
	"\""		forcedstring			# @"This -> "" <- is a literal quote"
 | 
			
		||||
 | 
			
		||||
:slash Idle
 | 
			
		||||
	*		idle			noeat
 | 
			
		||||
	"*"		comment			recolor=-2
 | 
			
		||||
	"/"		maybe_line_comment	recolor=-2
 | 
			
		||||
 | 
			
		||||
:comment Comment
 | 
			
		||||
	*		comment
 | 
			
		||||
	"BFHNTX"	comment			noeat call=comment_todo.comment_todo()
 | 
			
		||||
	"*"		maybe_end_comment
 | 
			
		||||
 | 
			
		||||
:maybe_end_comment Comment
 | 
			
		||||
	*		comment
 | 
			
		||||
	"/"		idle
 | 
			
		||||
	"*"		maybe_end_comment
 | 
			
		||||
 | 
			
		||||
:maybe_line_comment Comment
 | 
			
		||||
	*		line_comment		noeat recolor=-1
 | 
			
		||||
	"/"		doc_comment		recolor=-3
 | 
			
		||||
 | 
			
		||||
:line_comment Comment
 | 
			
		||||
	*		line_comment
 | 
			
		||||
	"BFHNTX"	line_comment		noeat call=comment_todo.comment_todo()
 | 
			
		||||
	"\n"		reset
 | 
			
		||||
 | 
			
		||||
:doc_comment DocComment
 | 
			
		||||
	*		doc_comment
 | 
			
		||||
	"BFHNTX"	doc_comment		noeat call=comment_todo.comment_todo()
 | 
			
		||||
	"\n"		reset
 | 
			
		||||
 | 
			
		||||
:first_digit Number
 | 
			
		||||
	*		idle	noeat
 | 
			
		||||
	"xX"		hex
 | 
			
		||||
	"."		float
 | 
			
		||||
	"eE"		epart
 | 
			
		||||
	"0-7"		octal
 | 
			
		||||
	"89"		bad_number	recolor=-1
 | 
			
		||||
 | 
			
		||||
:bad_number Bad
 | 
			
		||||
	*		idle	noeat
 | 
			
		||||
	"0-9"		bad_number
 | 
			
		||||
 | 
			
		||||
:octal Number
 | 
			
		||||
	*		idle	noeat
 | 
			
		||||
	"0-7"		octal
 | 
			
		||||
	"89"		bad_number	recolor=-1
 | 
			
		||||
 | 
			
		||||
:hex Number
 | 
			
		||||
	*		idle	noeat
 | 
			
		||||
	"0-9A-Fa-f"	hex
 | 
			
		||||
 | 
			
		||||
:decimal Number
 | 
			
		||||
	*		idle	noeat
 | 
			
		||||
	"0-9"		decimal
 | 
			
		||||
	"eE"		epart
 | 
			
		||||
	"."		float
 | 
			
		||||
 | 
			
		||||
:maybe_float Number
 | 
			
		||||
	*		idle	recolor=-2	noeat
 | 
			
		||||
	"0-9"		float		recolor=-2
 | 
			
		||||
 | 
			
		||||
:float Number
 | 
			
		||||
	*		idle	noeat
 | 
			
		||||
	"eE"		epart
 | 
			
		||||
	"0-9"		float
 | 
			
		||||
 | 
			
		||||
:epart Number
 | 
			
		||||
	*		idle	noeat
 | 
			
		||||
	"0-9+\-"	enum
 | 
			
		||||
 | 
			
		||||
:enum Number
 | 
			
		||||
	*		idle	noeat
 | 
			
		||||
	"0-9"		enum
 | 
			
		||||
 | 
			
		||||
:string	String string
 | 
			
		||||
	*		string
 | 
			
		||||
	"\""		idle
 | 
			
		||||
	"\\"		string_escape		recolor=-1
 | 
			
		||||
	"{"		maybe_string_control	recolor=-1
 | 
			
		||||
	"}"		maybe_control_end	recolor=-1
 | 
			
		||||
 | 
			
		||||
:string_escape StringEscape string
 | 
			
		||||
	*		string
 | 
			
		||||
	"xu"		string_hex_4  # Yes, \x has up to 4 numbers in C#
 | 
			
		||||
	"U"		string_hex_8
 | 
			
		||||
	"0-7"		string_octal2
 | 
			
		||||
	"\n"		string		recolor=-2
 | 
			
		||||
 | 
			
		||||
# Eight all-purpose (hex/unicode short/unicode long) states for hexadecimal
 | 
			
		||||
# escape sequences
 | 
			
		||||
 | 
			
		||||
:string_hex_8 StringEscape string
 | 
			
		||||
	*		string		noeat
 | 
			
		||||
	"0-9a-fA-F"	string_hex_7
 | 
			
		||||
 | 
			
		||||
:string_hex_7 StringEscape string
 | 
			
		||||
	*		string		noeat
 | 
			
		||||
	"0-9a-fA-F"	string_hex_6
 | 
			
		||||
 | 
			
		||||
:string_hex_6 StringEscape string
 | 
			
		||||
	*		string		noeat
 | 
			
		||||
	"0-9a-fA-F"	string_hex_5
 | 
			
		||||
 | 
			
		||||
:string_hex_5 StringEscape string
 | 
			
		||||
	*		string		noeat
 | 
			
		||||
	"0-9a-fA-F"	string_hex_4
 | 
			
		||||
 | 
			
		||||
:string_hex_4 StringEscape string
 | 
			
		||||
	*		string		noeat
 | 
			
		||||
	"0-9a-fA-F"	string_hex_3
 | 
			
		||||
 | 
			
		||||
:string_hex_3 StringEscape string
 | 
			
		||||
	*		string		noeat
 | 
			
		||||
	"0-9a-fA-F"	string_hex_2
 | 
			
		||||
 | 
			
		||||
:string_hex_2 StringEscape string
 | 
			
		||||
	*		string		noeat
 | 
			
		||||
	"0-9a-fA-F"	string_hex_1
 | 
			
		||||
 | 
			
		||||
:string_hex_1 StringEscape string
 | 
			
		||||
	*		string		noeat
 | 
			
		||||
	"0-9a-fA-F"	string
 | 
			
		||||
 | 
			
		||||
:string_octal2 StringEscape string
 | 
			
		||||
	*		string		noeat
 | 
			
		||||
	"0-7"		string_octal3
 | 
			
		||||
 | 
			
		||||
:string_octal3 StringEscape string
 | 
			
		||||
	*		string		noeat
 | 
			
		||||
	"0-7"		string
 | 
			
		||||
 | 
			
		||||
:maybe_string_control StringEscape string
 | 
			
		||||
	*		string 		noeat recolor=-2
 | 
			
		||||
	"0-9"		string_control
 | 
			
		||||
	"{"		string
 | 
			
		||||
 | 
			
		||||
:string_control StringEscape string
 | 
			
		||||
	*		string_control
 | 
			
		||||
	"\""		string		noeat
 | 
			
		||||
	"}"		string
 | 
			
		||||
 | 
			
		||||
:maybe_control_end StringEscape string
 | 
			
		||||
	*		string		noeat recolor=-2
 | 
			
		||||
	"}"		string
 | 
			
		||||
 | 
			
		||||
:char Character string
 | 
			
		||||
	*		char
 | 
			
		||||
	"\n"		reset
 | 
			
		||||
	"'"		idle
 | 
			
		||||
	"\\"		char_escape	recolor=-1
 | 
			
		||||
 | 
			
		||||
:char_escape CharacterEscape string
 | 
			
		||||
	*		char
 | 
			
		||||
	"xu"		char_hex4
 | 
			
		||||
	"U"		char_hex8
 | 
			
		||||
	"0-7"		char_octal2
 | 
			
		||||
	"\n"		char		recolor=-2
 | 
			
		||||
 | 
			
		||||
:char_hex8 CharacterEscape string
 | 
			
		||||
	*		char		noeat
 | 
			
		||||
	"0-9a-fA-F"	char_hex7
 | 
			
		||||
 | 
			
		||||
:char_hex7 CharacterEscape string
 | 
			
		||||
	*		char		noeat
 | 
			
		||||
	"0-9a-fA-F"	char_hex6
 | 
			
		||||
 | 
			
		||||
:char_hex6 CharacterEscape string
 | 
			
		||||
	*		char		noeat
 | 
			
		||||
	"0-9a-fA-F"	char_hex5
 | 
			
		||||
 | 
			
		||||
:char_hex5 CharacterEscape string
 | 
			
		||||
	*		char		noeat
 | 
			
		||||
	"0-9a-fA-F"	char_hex4
 | 
			
		||||
 | 
			
		||||
:char_hex4 CharacterEscape string
 | 
			
		||||
	*		char		noeat
 | 
			
		||||
	"0-9a-fA-F"	char_hex3
 | 
			
		||||
 | 
			
		||||
:char_hex3 CharacterEscape string
 | 
			
		||||
	*		char		noeat
 | 
			
		||||
	"0-9a-fA-F"	char_hex2
 | 
			
		||||
 | 
			
		||||
:char_hex2 CharacterEscape string
 | 
			
		||||
	*		char		noeat
 | 
			
		||||
	"0-9a-fA-F"	char_hex1
 | 
			
		||||
 | 
			
		||||
:char_hex1 CharacterEscape string
 | 
			
		||||
	*		char		noeat
 | 
			
		||||
	"0-9a-fA-F"	char
 | 
			
		||||
 | 
			
		||||
:char_octal2 CharacterEscape string
 | 
			
		||||
	*		char		noeat
 | 
			
		||||
	"0-7"		char_octal3
 | 
			
		||||
 | 
			
		||||
:char_octal3 CharacterEscape string
 | 
			
		||||
	*		char		noeat
 | 
			
		||||
	"0-7"		char
 | 
			
		||||
 | 
			
		||||
:ident Ident		# http://msdn.microsoft.com/en-us/library/x53a06bb.aspx
 | 
			
		||||
	*		idle		noeat strings
 | 
			
		||||
	"abstract"	modifier
 | 
			
		||||
	"as"		operator
 | 
			
		||||
	"base"		kw
 | 
			
		||||
	"break"		loop
 | 
			
		||||
	"case"		label
 | 
			
		||||
	"catch"		stmt
 | 
			
		||||
	"checked"	operator
 | 
			
		||||
	"class"		struct
 | 
			
		||||
	"const"		storage
 | 
			
		||||
	"continue"	loop
 | 
			
		||||
	"default"	label
 | 
			
		||||
	"delegate"	kw
 | 
			
		||||
	"do"		loop
 | 
			
		||||
	"else"		cond
 | 
			
		||||
	"enum"		struct
 | 
			
		||||
	"event"		kw
 | 
			
		||||
	"explicit"	kw
 | 
			
		||||
	"extern"	modifier
 | 
			
		||||
	"finally"	stmt
 | 
			
		||||
	"fixed"		kw
 | 
			
		||||
	"for"		loop
 | 
			
		||||
	"foreach"	loop
 | 
			
		||||
	"goto"		loop
 | 
			
		||||
	"if"		cond
 | 
			
		||||
	"implicit"	kw
 | 
			
		||||
	"in"		operator
 | 
			
		||||
	"interface"	struct
 | 
			
		||||
	"internal"	modifier
 | 
			
		||||
	"is"		operator
 | 
			
		||||
	"lock"		stmt
 | 
			
		||||
	"nameof"	kw
 | 
			
		||||
	"namespace"	struct
 | 
			
		||||
	"new"		operator
 | 
			
		||||
	"operator"	kw
 | 
			
		||||
	"out"		storage
 | 
			
		||||
	"override"	storage
 | 
			
		||||
	"params"	kw
 | 
			
		||||
	"private"	modifier
 | 
			
		||||
	"protected"	modifier
 | 
			
		||||
	"public"	modifier
 | 
			
		||||
	"readonly"	modifier
 | 
			
		||||
	"ref"		storage
 | 
			
		||||
	"return"	stmt
 | 
			
		||||
	"sealed"	modifier
 | 
			
		||||
	"sizeof"	operator
 | 
			
		||||
	"stackalloc"	storage
 | 
			
		||||
	"static"	modifier
 | 
			
		||||
	"struct"	struct
 | 
			
		||||
	"switch"	cond
 | 
			
		||||
	"this"		kw
 | 
			
		||||
	"throw"		stmt
 | 
			
		||||
	"try"		stmt
 | 
			
		||||
	"typeof"	operator
 | 
			
		||||
	"unchecked"	operator
 | 
			
		||||
	"unsafe"	kw
 | 
			
		||||
	"using"		stmt
 | 
			
		||||
	"virtual"	modifier
 | 
			
		||||
	"volatile"	modifier
 | 
			
		||||
	"while"		loop
 | 
			
		||||
	
 | 
			
		||||
	# Types
 | 
			
		||||
	
 | 
			
		||||
	"bool"		type
 | 
			
		||||
	"Boolean"	type
 | 
			
		||||
	"byte"		type
 | 
			
		||||
	"Byte"		type
 | 
			
		||||
	"char"		type
 | 
			
		||||
	"Character"	type
 | 
			
		||||
	"decimal"	type
 | 
			
		||||
	"double"	type
 | 
			
		||||
	"Double"	type
 | 
			
		||||
	"float"		type
 | 
			
		||||
	"Float"		type
 | 
			
		||||
	"int"		type
 | 
			
		||||
	"Integer"	type
 | 
			
		||||
	"int16"		type
 | 
			
		||||
	"Int16"		type
 | 
			
		||||
	"int32"		type
 | 
			
		||||
	"Int32"		type
 | 
			
		||||
	"int64"		type
 | 
			
		||||
	"Int64"		type
 | 
			
		||||
	"IntPtr"	type
 | 
			
		||||
	"long"		type
 | 
			
		||||
	"object"	type
 | 
			
		||||
	"Object"	type
 | 
			
		||||
	"sbyte"		type
 | 
			
		||||
	"short"		type
 | 
			
		||||
	"string"	type
 | 
			
		||||
	"String"	type
 | 
			
		||||
	"uint"		type
 | 
			
		||||
	"uint16"	type
 | 
			
		||||
	"uint32"	type
 | 
			
		||||
	"uint64"	type
 | 
			
		||||
	"ulong"		type
 | 
			
		||||
	"ushort"	type
 | 
			
		||||
	"void"		type
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	# These are "contextual" keywords.  Should try to do a better and
 | 
			
		||||
	# and find the context (most are LINQ), but it may not be possible
 | 
			
		||||
	# in all cases:
 | 
			
		||||
	
 | 
			
		||||
	"add"		kw
 | 
			
		||||
	"alias"		kw
 | 
			
		||||
	"ascending"	kw
 | 
			
		||||
	"async"		kw
 | 
			
		||||
	"await"		kw
 | 
			
		||||
	"descending"	kw
 | 
			
		||||
	"dynamic"	type
 | 
			
		||||
	"from"		kw
 | 
			
		||||
	"get"		kw
 | 
			
		||||
	"global"	kw
 | 
			
		||||
	"group"		kw
 | 
			
		||||
	"into"		kw
 | 
			
		||||
	"join"		kw
 | 
			
		||||
	"let"		kw
 | 
			
		||||
	"orderby"	kw
 | 
			
		||||
	"partial"	kw
 | 
			
		||||
	"remove"	kw
 | 
			
		||||
	"select"	kw
 | 
			
		||||
	"set"		kw
 | 
			
		||||
	"value"		kw
 | 
			
		||||
	"var"		type
 | 
			
		||||
	"where"		kw
 | 
			
		||||
	"yield"		kw
 | 
			
		||||
	
 | 
			
		||||
	# Literals
 | 
			
		||||
	
 | 
			
		||||
	"true"		bool
 | 
			
		||||
	"false"		bool
 | 
			
		||||
	"null"		lit
 | 
			
		||||
done
 | 
			
		||||
	"\c"		ident
 | 
			
		||||
 | 
			
		||||
:type Type
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:kw Keyword
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:stmt Statement
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:cond Conditional
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:loop Loop
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:struct Structure
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:storage StorageClass
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:modifier Modifier
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:bool Boolean
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:lit Constant
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:operator Operator
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
.end
 | 
			
		||||
		Reference in New Issue
	
	Block a user