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
|