init
This commit is contained in:
		
							
								
								
									
										309
									
								
								syntax/json.jsf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										309
									
								
								syntax/json.jsf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,309 @@
 | 
			
		||||
# JSON highlighter per json.org
 | 
			
		||||
 | 
			
		||||
# Written by Rebecca Turner (@ReBecaOrg)
 | 
			
		||||
 | 
			
		||||
# Define colors
 | 
			
		||||
 | 
			
		||||
=Idle
 | 
			
		||||
=Comma
 | 
			
		||||
=PairSep
 | 
			
		||||
=Bracket	+Brace
 | 
			
		||||
=Brace		+Control +Operator
 | 
			
		||||
=Constant
 | 
			
		||||
=Number		+Constant
 | 
			
		||||
=Boolean	+Constant
 | 
			
		||||
=Null		+Constant
 | 
			
		||||
=String		+Constant
 | 
			
		||||
=Key		+Attr +Type +String
 | 
			
		||||
=Escape
 | 
			
		||||
=StringEscape	+Escape +String
 | 
			
		||||
 | 
			
		||||
=Bad
 | 
			
		||||
=ERROR		+Bad
 | 
			
		||||
 | 
			
		||||
:json Idle
 | 
			
		||||
	*			end		noeat call=.value()
 | 
			
		||||
	" \t\n"			json
 | 
			
		||||
 | 
			
		||||
:end Idle
 | 
			
		||||
	*			endBAD		noeat
 | 
			
		||||
	" \t\n"			end
 | 
			
		||||
 | 
			
		||||
:endBAD Bad
 | 
			
		||||
	*			end
 | 
			
		||||
 | 
			
		||||
.subr value
 | 
			
		||||
 | 
			
		||||
:value Idle
 | 
			
		||||
	*			valueBAD	noeat
 | 
			
		||||
	"\""			end		noeat call=.string()
 | 
			
		||||
	"-0-9"			end		noeat call=.number()
 | 
			
		||||
	"tfn"			end		noeat call=.bareword()
 | 
			
		||||
	"{"			end		noeat call=.object()
 | 
			
		||||
	"["			end		noeat call=.array()
 | 
			
		||||
 | 
			
		||||
:valueBAD Bad
 | 
			
		||||
	*			value
 | 
			
		||||
 | 
			
		||||
:end Idle
 | 
			
		||||
	*			NULL		noeat return
 | 
			
		||||
 | 
			
		||||
.end
 | 
			
		||||
 | 
			
		||||
.subr object
 | 
			
		||||
 | 
			
		||||
:object Brace
 | 
			
		||||
	*			objectBAD	noeat
 | 
			
		||||
	"{"			maybeempty
 | 
			
		||||
 | 
			
		||||
:objectBAD ERROR
 | 
			
		||||
	*			end
 | 
			
		||||
 | 
			
		||||
:maybeempty Brace
 | 
			
		||||
	*			key		noeat
 | 
			
		||||
	" \t\n"			maybeempty
 | 
			
		||||
	"}"			end		recolor=-1
 | 
			
		||||
 | 
			
		||||
:key Idle
 | 
			
		||||
	*			keyBAD		noeat
 | 
			
		||||
	"\""			pairsep		noeat call=.keystring()
 | 
			
		||||
	" \t\n"			key
 | 
			
		||||
 | 
			
		||||
:keyBAD Bad
 | 
			
		||||
	*			key
 | 
			
		||||
 | 
			
		||||
:pairsep PairSep
 | 
			
		||||
	*			pairsepBAD	noeat
 | 
			
		||||
	":"			value
 | 
			
		||||
	" \t\n"			pairsep
 | 
			
		||||
 | 
			
		||||
:pairsepBAD Bad
 | 
			
		||||
	*			pairsep
 | 
			
		||||
 | 
			
		||||
:value Idle
 | 
			
		||||
	*			nextpair	noeat call=.value()
 | 
			
		||||
	" \t\n"			value
 | 
			
		||||
 | 
			
		||||
:nextpair Comma
 | 
			
		||||
	*			nextpairBAD	noeat
 | 
			
		||||
	"}"			end		recolor=-1
 | 
			
		||||
	","			key
 | 
			
		||||
	" \t\n"			nextpair
 | 
			
		||||
 | 
			
		||||
:nextpairBAD Bad
 | 
			
		||||
	*			nextpair
 | 
			
		||||
 | 
			
		||||
:end Brace
 | 
			
		||||
	*			NULL		noeat return
 | 
			
		||||
.end
 | 
			
		||||
 | 
			
		||||
.subr array
 | 
			
		||||
 | 
			
		||||
:array Bracket
 | 
			
		||||
	*			arrayBAD	noeat
 | 
			
		||||
	"["			maybeempty
 | 
			
		||||
 | 
			
		||||
:arrayBAD ERROR
 | 
			
		||||
	*			end
 | 
			
		||||
 | 
			
		||||
:maybeempty Bracket
 | 
			
		||||
	*			value		noeat
 | 
			
		||||
	" \t\n"			maybeempty
 | 
			
		||||
	"]"			end		recolor=-1
 | 
			
		||||
 | 
			
		||||
:value Idle
 | 
			
		||||
	*			nextvalue	noeat call=.value()
 | 
			
		||||
	" \t\n"			value
 | 
			
		||||
 | 
			
		||||
:nextvalue Comma
 | 
			
		||||
	*			nextvalueBAD	noeat
 | 
			
		||||
	"]"			end		recolor=-1
 | 
			
		||||
	","			value
 | 
			
		||||
	" \t\n"			nextvalue
 | 
			
		||||
 | 
			
		||||
:nextvalueBAD Bad
 | 
			
		||||
	*			nextvalue
 | 
			
		||||
 | 
			
		||||
:end Bracket
 | 
			
		||||
	*			NULL		noeat return
 | 
			
		||||
 | 
			
		||||
.end
 | 
			
		||||
 | 
			
		||||
.subr string
 | 
			
		||||
 | 
			
		||||
:string String string
 | 
			
		||||
	*			stringBAD	noeat
 | 
			
		||||
	"\""			body
 | 
			
		||||
 | 
			
		||||
:body String string
 | 
			
		||||
	*			body
 | 
			
		||||
	"\""			end
 | 
			
		||||
	"\\"			escape		recolor=-1
 | 
			
		||||
 | 
			
		||||
:stringBAD ERROR
 | 
			
		||||
	*			end
 | 
			
		||||
 | 
			
		||||
:escape StringEscape string
 | 
			
		||||
	*			escapeBAD	recolor=-2 noeat
 | 
			
		||||
	"\"/bfnrt\\"		body
 | 
			
		||||
	"u"			unicode1
 | 
			
		||||
 | 
			
		||||
:escapeBAD Bad
 | 
			
		||||
	*			body
 | 
			
		||||
 | 
			
		||||
:unicode1 StringEscape string
 | 
			
		||||
	*			unicodeBAD	recolor=-3 noeat
 | 
			
		||||
	"0-9a-fA-F"		unicode2
 | 
			
		||||
 | 
			
		||||
:unicode2 StringEscape string
 | 
			
		||||
	*			unicodeBAD	recolor=-4 noeat
 | 
			
		||||
	"0-9a-fA-F"		unicode3
 | 
			
		||||
 | 
			
		||||
:unicode3 StringEscape string
 | 
			
		||||
	*			unicodeBAD	recolor=-5 noeat
 | 
			
		||||
	"0-9a-fA-F"		unicode4
 | 
			
		||||
 | 
			
		||||
:unicode4 StringEscape string
 | 
			
		||||
	*			unicodeBAD	recolor=-6 noeat
 | 
			
		||||
	"0-9a-fA-F"		body
 | 
			
		||||
 | 
			
		||||
:unicodeBAD Bad
 | 
			
		||||
	*			body
 | 
			
		||||
 | 
			
		||||
:end Idle
 | 
			
		||||
	*			NULL		noeat return
 | 
			
		||||
 | 
			
		||||
.end
 | 
			
		||||
 | 
			
		||||
.subr keystring
 | 
			
		||||
 | 
			
		||||
:string Key
 | 
			
		||||
	*			stringBAD	noeat
 | 
			
		||||
	"\""			body
 | 
			
		||||
 | 
			
		||||
:body Key
 | 
			
		||||
	*			body
 | 
			
		||||
	"\""			end
 | 
			
		||||
	"\\"			escape		recolor=-1
 | 
			
		||||
 | 
			
		||||
:stringBAD ERROR
 | 
			
		||||
	*			end
 | 
			
		||||
 | 
			
		||||
:escape Escape
 | 
			
		||||
	*			escapeBAD	recolor=-2 noeat
 | 
			
		||||
	"\"/bfnrt\\"		body
 | 
			
		||||
	"u"			unicode1
 | 
			
		||||
 | 
			
		||||
:escapeBAD Bad
 | 
			
		||||
	*			body
 | 
			
		||||
 | 
			
		||||
:unicode1 Escape
 | 
			
		||||
	*			unicodeBAD	recolor=-3 noeat
 | 
			
		||||
	"0-9a-fA-F"		unicode2
 | 
			
		||||
 | 
			
		||||
:unicode2 Escape
 | 
			
		||||
	*			unicodeBAD	recolor=-4 noeat
 | 
			
		||||
	"0-9a-fA-F"		unicode3
 | 
			
		||||
 | 
			
		||||
:unicode3 Escape
 | 
			
		||||
	*			unicodeBAD	recolor=-5 noeat
 | 
			
		||||
	"0-9a-fA-F"		unicode4
 | 
			
		||||
 | 
			
		||||
:unicode4 Escape
 | 
			
		||||
	*			unicodeBAD	recolor=-6 noeat
 | 
			
		||||
	"0-9a-fA-F"		body
 | 
			
		||||
 | 
			
		||||
:unicodeBAD Bad
 | 
			
		||||
	*			body
 | 
			
		||||
 | 
			
		||||
:end Idle
 | 
			
		||||
	*			NULL		noeat return
 | 
			
		||||
 | 
			
		||||
.end
 | 
			
		||||
 | 
			
		||||
.subr bareword
 | 
			
		||||
 | 
			
		||||
:bareword Idle
 | 
			
		||||
	*			body		noeat mark buffer
 | 
			
		||||
 | 
			
		||||
:body Bad
 | 
			
		||||
	*			end		noeat markend strings
 | 
			
		||||
	"true"			boolean
 | 
			
		||||
	"false"			boolean
 | 
			
		||||
	"null"			null
 | 
			
		||||
	
 | 
			
		||||
done
 | 
			
		||||
	"truefalsn"		body
 | 
			
		||||
 | 
			
		||||
:boolean Boolean
 | 
			
		||||
	*			end		noeat
 | 
			
		||||
 | 
			
		||||
:null Null
 | 
			
		||||
	*			end		noeat
 | 
			
		||||
 | 
			
		||||
:end Idle
 | 
			
		||||
	*			NULL		noeat return
 | 
			
		||||
 | 
			
		||||
.end
 | 
			
		||||
 | 
			
		||||
.subr number
 | 
			
		||||
 | 
			
		||||
:number Number
 | 
			
		||||
	*			numberBAD
 | 
			
		||||
	"0-9"			numberA		noeat
 | 
			
		||||
	"-"			numberA
 | 
			
		||||
 | 
			
		||||
:numberBAD ERROR
 | 
			
		||||
	*			end
 | 
			
		||||
 | 
			
		||||
:numberA Number
 | 
			
		||||
	"0"			decimalpoint
 | 
			
		||||
	"1-9"			integer
 | 
			
		||||
 | 
			
		||||
:integer Number
 | 
			
		||||
	*			end		noeat
 | 
			
		||||
	"0-9"			integer
 | 
			
		||||
	"."			decimalpart
 | 
			
		||||
	"eE"			exponentpart
 | 
			
		||||
 | 
			
		||||
:decimalpoint Number
 | 
			
		||||
	*			end		noeat
 | 
			
		||||
	"0-9"			decimalpointBAD
 | 
			
		||||
	"eE"			exponentpart
 | 
			
		||||
	"."			decimalpart
 | 
			
		||||
 | 
			
		||||
:decimalpointBAD Bad
 | 
			
		||||
	*			end
 | 
			
		||||
 | 
			
		||||
:decimalpart Number
 | 
			
		||||
	*			decimalpartBAD
 | 
			
		||||
	"0-9"			decimalpartA
 | 
			
		||||
 | 
			
		||||
:decimalpartBAD Bad
 | 
			
		||||
	*			end
 | 
			
		||||
 | 
			
		||||
:decimalpartA Number
 | 
			
		||||
	*			end		noeat
 | 
			
		||||
	"0-9"			decimalpartA
 | 
			
		||||
	"eE"			exponentpart
 | 
			
		||||
 | 
			
		||||
:exponentpart Number
 | 
			
		||||
	*			exponentpartBAD
 | 
			
		||||
	"-+"			exponentpartA
 | 
			
		||||
	"0-9"			exponentpartB
 | 
			
		||||
 | 
			
		||||
:exponentpartBAD Bad
 | 
			
		||||
	*			end
 | 
			
		||||
 | 
			
		||||
:exponentpartA Number
 | 
			
		||||
	*			exponentpartBAD
 | 
			
		||||
	"0-9"			exponentpartB
 | 
			
		||||
 | 
			
		||||
:exponentpartB Number
 | 
			
		||||
	*			end		noeat
 | 
			
		||||
	"0-9"			exponentpartB
 | 
			
		||||
 | 
			
		||||
:end Idle
 | 
			
		||||
	*			NULL		noeat return
 | 
			
		||||
 | 
			
		||||
.end
 | 
			
		||||
		Reference in New Issue
	
	Block a user