187 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			187 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# JOE syntax highlight file for Windows batch scripts
 | 
						|
 | 
						|
=Idle
 | 
						|
=Comment
 | 
						|
=Command	+Type
 | 
						|
=Statement	+Keyword
 | 
						|
=Brace
 | 
						|
=Variable	+DefinedIdent
 | 
						|
=StringVariable	+StringEscape
 | 
						|
=Label
 | 
						|
=Conditional	+Statement
 | 
						|
=Loop		+Statement
 | 
						|
=String		+Constant
 | 
						|
 | 
						|
:reset Idle
 | 
						|
	*		linebegin	noeat
 | 
						|
	" \t\r\n"	reset
 | 
						|
 | 
						|
:linebegin Idle
 | 
						|
	*		stmtorcommand	noeat buffer
 | 
						|
	":"		labelorcomment
 | 
						|
	"@"		linebegin
 | 
						|
	"%"		args		call=.variable() recolor=-1
 | 
						|
	"\""		qargs		recolor=-1
 | 
						|
	"'"		sqargs		recolor=-1		# These two encountered in 
 | 
						|
	"`"		bqargs		recolor=-1		# certain varieties of for-loops
 | 
						|
 | 
						|
:stmtorcommand Command
 | 
						|
	*		command		noeat istrings
 | 
						|
	"call"		stmt
 | 
						|
	"cd"		stmt
 | 
						|
	"chdir"		stmt
 | 
						|
	"cls"		stmt
 | 
						|
	"copy"		stmt
 | 
						|
	"del"		stmt
 | 
						|
	"dir"		stmt
 | 
						|
	"echo"		echostmt
 | 
						|
	"echo."		echostmt
 | 
						|
	"endlocal"	stmt
 | 
						|
	"erase"		stmt
 | 
						|
	"exit"		stmt
 | 
						|
	"for"		cond
 | 
						|
	"goto"		loop
 | 
						|
	"if"		cond
 | 
						|
	"move"		stmt
 | 
						|
	"pause"		stmt
 | 
						|
	"popd"		stmt
 | 
						|
	"pushd"		stmt
 | 
						|
	"rd"		stmt
 | 
						|
	"rem"		comment
 | 
						|
	"ren"		stmt
 | 
						|
	"rename"	stmt
 | 
						|
	"rmdir"		stmt
 | 
						|
	"set"		stmt
 | 
						|
	"setlocal"	stmt
 | 
						|
	"setx"		stmt
 | 
						|
	"shift"		stmt
 | 
						|
	"sleep"		stmt
 | 
						|
	"start"		stmt
 | 
						|
	"type"		stmt
 | 
						|
	"xcopy"		stmt
 | 
						|
done
 | 
						|
	"a-zA-Z."	stmtorcommand
 | 
						|
	"\"\\_0-9"	command
 | 
						|
	")"		rparen		recolor=-1
 | 
						|
 | 
						|
:labelorcomment Idle
 | 
						|
	*		label		recolor=-2
 | 
						|
	":"		comment		recolor=-2
 | 
						|
 | 
						|
:label Label
 | 
						|
	*		label
 | 
						|
	"\r\n"		reset
 | 
						|
 | 
						|
:comment Comment comment
 | 
						|
	*		comment
 | 
						|
	"BFHNTX"        comment		noeat call=comment_todo.comment_todo()
 | 
						|
	"\r\n"		reset
 | 
						|
 | 
						|
:loop Loop
 | 
						|
	*		args		noeat
 | 
						|
 | 
						|
:cond Conditional
 | 
						|
	*		args		noeat
 | 
						|
 | 
						|
:stmt Statement
 | 
						|
	*		args		noeat
 | 
						|
 | 
						|
:echostmt Statement
 | 
						|
	*		echoargs	noeat
 | 
						|
 | 
						|
:echoargs String string
 | 
						|
	*		echoargs
 | 
						|
	"%"		echoargs	call=.strvariable() recolor=-1
 | 
						|
	"&"		and		recolor=-1
 | 
						|
	">|"		reset		recolor=-1
 | 
						|
	"\r\n"		reset
 | 
						|
 | 
						|
:command Command
 | 
						|
	*		command
 | 
						|
	"\""		qcommand
 | 
						|
	" \t"		args
 | 
						|
	"\r\n"		reset
 | 
						|
 | 
						|
:qcommand Command
 | 
						|
	*		qcommand
 | 
						|
	"\""		command
 | 
						|
	"\r\n"		reset
 | 
						|
 | 
						|
:args Idle
 | 
						|
	*		args
 | 
						|
	"%"		args		call=.variable() recolor=-1
 | 
						|
	"("		lparen		recolor=-1
 | 
						|
	")"		rparen		recolor=-1
 | 
						|
	"\r\n"		reset
 | 
						|
	"\""		qargs		recolor=-1
 | 
						|
	"&"		and		recolor=-1
 | 
						|
 | 
						|
# Double-quoted args
 | 
						|
:qargs String string
 | 
						|
	*		qargs
 | 
						|
	"\""		args
 | 
						|
	"%"		qargs		call=.strvariable() recolor=-1
 | 
						|
	"\r\n"		reset
 | 
						|
 | 
						|
# Single-quoted args
 | 
						|
:sqargs String string
 | 
						|
	*		sqargs
 | 
						|
	"'"		args
 | 
						|
	"%"		sqargs		call=.strvariable() recolor=-1
 | 
						|
	"\r\n"		reset
 | 
						|
 | 
						|
# Back-quoted (`) args, found in some for-loops
 | 
						|
:bqargs String string
 | 
						|
	*		bqargs
 | 
						|
	"`"		args
 | 
						|
	"%"		bqargs		call=.strvariable() recolor=-1
 | 
						|
	"\r\n"		reset
 | 
						|
 | 
						|
:and Idle
 | 
						|
	"&"		and
 | 
						|
	*		reset		noeat
 | 
						|
 | 
						|
:lparen Brace
 | 
						|
	*		linebegin	noeat
 | 
						|
 | 
						|
:rparen Brace
 | 
						|
	*		args		noeat
 | 
						|
 | 
						|
.subr variable
 | 
						|
 | 
						|
:variable Variable
 | 
						|
	*		args		noeat return
 | 
						|
	"%~"		shortvar
 | 
						|
	"\*"		noeat		return
 | 
						|
	"0-9"		variable	return
 | 
						|
	"A-Za-z_"	varbody
 | 
						|
 | 
						|
:shortvar Variable
 | 
						|
	*		args		noeat return
 | 
						|
	"A-Za-z0-9_"	shortvar
 | 
						|
 | 
						|
:varbody Variable
 | 
						|
	*		varbody
 | 
						|
	"%"		args		return
 | 
						|
 | 
						|
.end
 | 
						|
 | 
						|
.subr strvariable
 | 
						|
 | 
						|
:variable StringVariable string
 | 
						|
	*		args		noeat return
 | 
						|
	"%~"		shortvar
 | 
						|
	"\*"		noeat		return
 | 
						|
	"0-9"		variable	return
 | 
						|
	"A-Za-z_"	varbody
 | 
						|
 | 
						|
:shortvar StringVariable string
 | 
						|
	*		args		noeat return
 | 
						|
	"A-Za-z0-9_"	shortvar
 | 
						|
 | 
						|
:varbody StringVariable string
 | 
						|
	*		varbody
 | 
						|
	"%"		args		return
 | 
						|
 | 
						|
.end
 |