3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
7 <PROPERTY NAME="contextInsensitive" VALUE="FALSE" />
11 Comments: indicated by either ASCII # or ! as the first non-whitespace
12 character on a line. Comments extend to the end of the line. Comments
13 placed after a key/value are considered part of the value, not as a
16 <EOL_SPAN_REGEXP TYPE="COMMENT1" AT_LINE_START="TRUE">\s*[#!]</EOL_SPAN_REGEXP>
19 A "natural" line, that is, a blank line. This isn't necessary, it's here
20 just to show it was considered and handled.
22 <EOL_SPAN_REGEXP TYPE="NULL">\s*$</EOL_SPAN_REGEXP>
25 Key: The key contains all of the characters in the line starting with the
26 first non-white space character and up to, but not including, the first
27 unescaped '=', ':', or white space character other than a line terminator.
28 All of these key termination characters may be included in the key by
29 escaping them with a preceding backslash character.
31 <SPAN_REGEXP TYPE="KEYWORD1" NO_LINE_BREAK="TRUE" NO_WORD_BREAK="TRUE" AT_LINE_START="TRUE" ESCAPE="\">
32 <BEGIN>\s*([\u0022-\uFFFF&&[^:=]]|[\\][:=	])+?</BEGIN>
33 <END REGEXP="TRUE">(?=(([:=])|(\s+)))</END>
37 Visible key termination characters.
39 <SEQ_REGEXP TYPE="OPERATOR">((\s*[:=]\s*)|(\s+))</SEQ_REGEXP>
42 Not a comment, not a key, not a key terminator, must be a value.
43 Value contains all characters until the end of the line. The line may
44 be continued to the next line by a trailing \.
46 The seq_regexp handles the odd case where the value is only 1 character
47 long. The tokenizer consumes that character, which means the ending
48 regex for the span_regexp doesn't work.
50 <SEQ_REGEXP TYPE="LITERAL1">[^\\]{1}$</SEQ_REGEXP>
51 <SPAN_REGEXP TYPE="LITERAL1">
53 <END REGEXP="TRUE">[^\\]$</END>