153 lines
2.5 KiB
Plaintext
153 lines
2.5 KiB
Plaintext
# Fancy "sed" highlighter
|
|
|
|
# Bugs: delimiter should be ignored in [...]
|
|
#
|
|
# it would be nice if this did more correct
|
|
# error checking for the sed programmer
|
|
|
|
-
|
|
|
|
=Idle
|
|
=Comment
|
|
=String +Constant
|
|
=StringEscape +Escape
|
|
=Regex +String
|
|
=RegexEscape +StringEscape
|
|
=Bad
|
|
=Keyword
|
|
=Delimiter #+Operator +Type
|
|
=Label +DefinedIdent
|
|
|
|
# Zero address commands: # : }
|
|
# Zero or one address: = a i q r
|
|
# Range address: { b t c d D h H g G x l n N p P s w y
|
|
|
|
:idle Idle
|
|
* cmd noeat
|
|
" \t" idle
|
|
"\n" idle
|
|
"0-9" first_addr recolor=-1
|
|
"$" first_eof recolor=-1
|
|
"/" first_regex_c recolor=-1
|
|
|
|
:first_eof String string
|
|
* first_addr_done noeat
|
|
|
|
:first_regex_c Delimiter
|
|
* first_regex noeat
|
|
|
|
:first_regex Regex string
|
|
* first_regex
|
|
"\\" first_regex_quote recolor=-1
|
|
"/" first_regex_e recolor=-1
|
|
|
|
:first_regex_e Delimiter
|
|
* first_addr_done noeat
|
|
|
|
:first_regex_quote RegexEscape string
|
|
* first_regex
|
|
|
|
:first_addr String string
|
|
* first_addr_done noeat
|
|
"0-9" first_addr
|
|
|
|
:first_addr_done Idle
|
|
* cmd noeat
|
|
"," second_addr_start
|
|
|
|
:second_addr_start Idle
|
|
* bad noeat
|
|
"0-9" second_addr recolor=-1
|
|
"$" second_eof recolor=-1
|
|
"/" second_regex recolor=-1
|
|
|
|
:second_eof String string
|
|
* cmd noeat
|
|
|
|
:second_regex Regex string
|
|
* second_regex
|
|
"/" cmd
|
|
|
|
:second_addr String string
|
|
* cmd noeat
|
|
"0-9" second_addr
|
|
|
|
:bad Bad
|
|
* bad
|
|
"\n" idle
|
|
|
|
:cmd Delimiter
|
|
* the_cmd noeat
|
|
" \t" cmd
|
|
"!" the_cmd
|
|
|
|
:the_cmd Idle
|
|
* bad noeat
|
|
" \t" the_cmd
|
|
";" next noeat
|
|
"#" comment recolor=-1
|
|
"sy" accepts recolor=-1
|
|
"{" accepto recolor=-1
|
|
"aic" accept recolor=-1
|
|
"=}rqbtdDhHgGxlnNpPw" acceptc recolor=-1
|
|
":" label recolor=-1
|
|
|
|
:accepto Keyword
|
|
* idle noeat
|
|
|
|
:accept Keyword
|
|
* next noeat
|
|
|
|
:acceptc Keyword
|
|
* nextallow noeat
|
|
|
|
:accepts Keyword
|
|
* subst noeat
|
|
|
|
:label Label
|
|
* idle noeat
|
|
"a-zA-Z0-9" label
|
|
|
|
:subst Delimiter
|
|
* subst_rest save_c
|
|
|
|
:subst_rest String string
|
|
* subst_rest
|
|
& subst_rest_2_c recolor=-1
|
|
"\\" subst_rest_quote recolor=-1
|
|
|
|
:subst_rest_quote StringEscape string
|
|
* subst_rest
|
|
|
|
:subst_rest_2_c Delimiter
|
|
* subst_rest_2 noeat
|
|
|
|
:subst_rest_2 String string
|
|
* subst_rest_2
|
|
& next_c recolor=-1
|
|
"\\" subst_rest_2_quote recolor=-1
|
|
|
|
:next_c Delimiter
|
|
* nextallow noeat
|
|
|
|
:subst_rest_2_quote StringEscape string
|
|
* subst_rest_2
|
|
|
|
:nextallow Idle
|
|
* nextallow
|
|
"\n" idle
|
|
";" idle
|
|
"#" comment recolor=-1
|
|
|
|
:next Idle
|
|
* next
|
|
"\n" idle
|
|
"\\" continue
|
|
|
|
:continue Idle
|
|
* next
|
|
|
|
:comment Comment comment
|
|
* comment
|
|
"\n" idle
|