sed.jsf (2515B)
1 # Fancy "sed" highlighter 2 3 # Bugs: delimiter should be ignored in [...] 4 # 5 # it would be nice if this did more correct 6 # error checking for the sed programmer 7 8 - 9 10 =Idle 11 =Comment 12 =String +Constant 13 =StringEscape +Escape 14 =Regex +String 15 =RegexEscape +StringEscape 16 =Bad 17 =Keyword 18 =Delimiter #+Operator +Type 19 =Label +DefinedIdent 20 21 # Zero address commands: # : } 22 # Zero or one address: = a i q r 23 # Range address: { b t c d D h H g G x l n N p P s w y 24 25 :idle Idle 26 * cmd noeat 27 " \t" idle 28 "\n" idle 29 "0-9" first_addr recolor=-1 30 "$" first_eof recolor=-1 31 "/" first_regex_c recolor=-1 32 33 :first_eof String string 34 * first_addr_done noeat 35 36 :first_regex_c Delimiter 37 * first_regex noeat 38 39 :first_regex Regex string 40 * first_regex 41 "\\" first_regex_quote recolor=-1 42 "/" first_regex_e recolor=-1 43 44 :first_regex_e Delimiter 45 * first_addr_done noeat 46 47 :first_regex_quote RegexEscape string 48 * first_regex 49 50 :first_addr String string 51 * first_addr_done noeat 52 "0-9" first_addr 53 54 :first_addr_done Idle 55 * cmd noeat 56 "," second_addr_start 57 58 :second_addr_start Idle 59 * bad noeat 60 "0-9" second_addr recolor=-1 61 "$" second_eof recolor=-1 62 "/" second_regex recolor=-1 63 64 :second_eof String string 65 * cmd noeat 66 67 :second_regex Regex string 68 * second_regex 69 "/" cmd 70 71 :second_addr String string 72 * cmd noeat 73 "0-9" second_addr 74 75 :bad Bad 76 * bad 77 "\n" idle 78 79 :cmd Delimiter 80 * the_cmd noeat 81 " \t" cmd 82 "!" the_cmd 83 84 :the_cmd Idle 85 * bad noeat 86 " \t" the_cmd 87 ";" next noeat 88 "#" comment recolor=-1 89 "sy" accepts recolor=-1 90 "{" accepto recolor=-1 91 "aic" accept recolor=-1 92 "=}rqbtdDhHgGxlnNpPw" acceptc recolor=-1 93 ":" label recolor=-1 94 95 :accepto Keyword 96 * idle noeat 97 98 :accept Keyword 99 * next noeat 100 101 :acceptc Keyword 102 * nextallow noeat 103 104 :accepts Keyword 105 * subst noeat 106 107 :label Label 108 * idle noeat 109 "a-zA-Z0-9" label 110 111 :subst Delimiter 112 * subst_rest save_c 113 114 :subst_rest String string 115 * subst_rest 116 & subst_rest_2_c recolor=-1 117 "\\" subst_rest_quote recolor=-1 118 119 :subst_rest_quote StringEscape string 120 * subst_rest 121 122 :subst_rest_2_c Delimiter 123 * subst_rest_2 noeat 124 125 :subst_rest_2 String string 126 * subst_rest_2 127 & next_c recolor=-1 128 "\\" subst_rest_2_quote recolor=-1 129 130 :next_c Delimiter 131 * nextallow noeat 132 133 :subst_rest_2_quote StringEscape string 134 * subst_rest_2 135 136 :nextallow Idle 137 * nextallow 138 "\n" idle 139 ";" idle 140 "#" comment recolor=-1 141 142 :next Idle 143 * next 144 "\n" idle 145 "\\" continue 146 147 :continue Idle 148 * next 149 150 :comment Comment comment 151 * comment 152 "\n" idle