packages feed

skylighting-core 0.10.2 → 0.10.3

raw patch · 63 files changed

+4439/−1272 lines, 63 files

Files

changelog.md view
@@ -1,5 +1,22 @@ # Revision history for skylighting and skylighting-core +## 0.10.3++  * Add support for raku (#114).++  * Reimplement PR #40 and add haskell.xml.patch (#116).++  * Update syntax definitions: actionscript ada asp awk bash+    bibtex boo c cmake cpp cs d elm email fasm fsharp glsl+    gnuassembler go haskell haskell idris isocpp+    javascript julia latex lilypond makefile mediawiki metafont+    mustache objectivec objectivecpp octave opencl perl php+    php powershell prolog purebasic raku rest ruby sed+    spdx-comments sql-mysql sql-postgresql sql typescript+    verilog vhdl.++  * Fix php.xml.patch so it applies again.+ ## 0.10.2    * Update syntax definitions for abc, actionscript, asn1, ats,
skylighting-core.cabal view
@@ -1,5 +1,5 @@ name:                skylighting-core-version:             0.10.2+version:             0.10.3 synopsis:            syntax highlighting library description:         Skylighting is a syntax highlighting library.                      It derives its tokenizers from XML syntax
src/Skylighting/Loader.hs view
@@ -23,7 +23,7 @@ isSyntaxFile :: FilePath -> Bool isSyntaxFile = (== syntaxFileExtension) . takeExtension --- | Loads a syntax definition from the specifed file path. The file+-- | Loads a syntax definition from the specified file path. The file -- path must refer to a file containing an XML Kate syntax definition. loadSyntaxFromFile :: FilePath -> IO (Either String Syntax) loadSyntaxFromFile path = do
test/expected/abc.ada.native view
@@ -1,8 +1,16 @@ [ [ ( KeywordTok , "with" )-  , ( NormalTok , " Ada.Characters.Handling;" )+  , ( NormalTok , " Ada" )+  , ( OperatorTok , "." )+  , ( NormalTok , "Characters" )+  , ( OperatorTok , "." )+  , ( NormalTok , "Handling;" )   ] , [ ( KeywordTok , "use" )-  , ( NormalTok , " Ada.Characters.Handling;" )+  , ( NormalTok , " Ada" )+  , ( OperatorTok , "." )+  , ( NormalTok , "Characters" )+  , ( OperatorTok , "." )+  , ( NormalTok , "Handling;" )   ] , [] , []@@ -16,11 +24,12 @@   , ( KeywordTok , "is" )   , ( NormalTok , " " )   , ( KeywordTok , "array" )-  , ( NormalTok , "(" )+  , ( OperatorTok , "(" )   , ( DecValTok , "1" )-  , ( NormalTok , ".." )+  , ( OperatorTok , ".." )   , ( DecValTok , "2" )-  , ( NormalTok , ") " )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )   , ( KeywordTok , "of" )   , ( NormalTok , " " )   , ( DataTypeTok , "Character" )@@ -32,17 +41,28 @@   , ( KeywordTok , "is" )   , ( NormalTok , " " )   , ( KeywordTok , "array" )-  , ( NormalTok , "(positive " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "positive " )   , ( KeywordTok , "range" )-  , ( NormalTok , " <>) " )+  , ( NormalTok , " " )+  , ( OperatorTok , "<>)" )+  , ( NormalTok , " " )   , ( KeywordTok , "of" )   , ( NormalTok , " Block_Faces;" )   ] , [ ( NormalTok , "    " )   , ( KeywordTok , "function" )-  , ( NormalTok , " Can_Make_Word(W: " )+  , ( NormalTok , " Can_Make_Word" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "W" )+  , ( OperatorTok , ":" )+  , ( NormalTok , " " )   , ( DataTypeTok , "String" )-  , ( NormalTok , "; Blocks: Block_List) " )+  , ( NormalTok , "; Blocks" )+  , ( OperatorTok , ":" )+  , ( NormalTok , " Block_List" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( DataTypeTok , "Boolean" )@@ -59,24 +79,44 @@   ] , [] , [ ( KeywordTok , "function" )-  , ( NormalTok , " Can_Make_Word(W: " )+  , ( NormalTok , " Can_Make_Word" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "W" )+  , ( OperatorTok , ":" )+  , ( NormalTok , " " )   , ( DataTypeTok , "String" )-  , ( NormalTok , "; Blocks: Block_List) " )+  , ( NormalTok , "; Blocks" )+  , ( OperatorTok , ":" )+  , ( NormalTok , " Block_List" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( DataTypeTok , "Boolean" )   , ( NormalTok , " " )   , ( KeywordTok , "is" )   ]-, [ ( NormalTok , "    Used : " )+, [ ( NormalTok , "    Used " )+  , ( OperatorTok , ":" )+  , ( NormalTok , " " )   , ( KeywordTok , "array" )-  , ( NormalTok , "(Blocks'Range) " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "Blocks'Range" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )   , ( KeywordTok , "of" )   , ( NormalTok , " " )   , ( DataTypeTok , "Boolean" )-  , ( NormalTok , " := (" )+  , ( NormalTok , " " )+  , ( OperatorTok , ":=" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( KeywordTok , "Others" )-  , ( NormalTok , " => False);" )+  , ( NormalTok , " " )+  , ( OperatorTok , "=>" )+  , ( NormalTok , " False" )+  , ( OperatorTok , ")" )+  , ( NormalTok , ";" )   ] , [ ( NormalTok , "    " )   , ( KeywordTok , "subtype" )@@ -86,13 +126,20 @@   , ( DataTypeTok , "Integer" )   , ( NormalTok , " " )   , ( KeywordTok , "range" )-  , ( NormalTok , " W'First..W'Last;" )+  , ( NormalTok , " W'First" )+  , ( OperatorTok , ".." )+  , ( NormalTok , "W'Last;" )   ]-, [ ( NormalTok , "    wPos : wIndex;" ) ]+, [ ( NormalTok , "    wPos " )+  , ( OperatorTok , ":" )+  , ( NormalTok , " wIndex;" )+  ] , [ ( KeywordTok , "begin" ) ] , [ ( NormalTok , "    " )   , ( KeywordTok , "if" )-  , ( NormalTok , " W'Length = " )+  , ( NormalTok , " W'Length " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( DecValTok , "0" )   , ( NormalTok , " " )   , ( KeywordTok , "then" )@@ -105,20 +152,37 @@   , ( KeywordTok , "end if" )   , ( NormalTok , ";" )   ]-, [ ( NormalTok , "    wPos := W'First;" ) ]+, [ ( NormalTok , "    wPos " )+  , ( OperatorTok , ":=" )+  , ( NormalTok , " W'First;" )+  ] , [ ( NormalTok , "    " )   , ( KeywordTok , "while" )   , ( NormalTok , " True " )   , ( KeywordTok , "loop" )   ] , [ ( NormalTok , "        " ) , ( KeywordTok , "declare" ) ]-, [ ( NormalTok , "            C : " )+, [ ( NormalTok , "            C " )+  , ( OperatorTok , ":" )+  , ( NormalTok , " " )   , ( DataTypeTok , "Character" )-  , ( NormalTok , " := To_Upper(W(wPos));" )+  , ( NormalTok , " " )+  , ( OperatorTok , ":=" )+  , ( NormalTok , " To_Upper" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "W" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "wPos" )+  , ( OperatorTok , "))" )+  , ( NormalTok , ";" )   ]-, [ ( NormalTok , "            X : " )+, [ ( NormalTok , "            X " )+  , ( OperatorTok , ":" )+  , ( NormalTok , " " )   , ( KeywordTok , "constant" )-  , ( NormalTok , " wIndex := wPos;" )+  , ( NormalTok , " wIndex " )+  , ( OperatorTok , ":=" )+  , ( NormalTok , " wPos;" )   ] , [ ( NormalTok , "        " ) , ( KeywordTok , "begin" ) ] , [ ( NormalTok , "            " )@@ -130,26 +194,56 @@   ] , [ ( NormalTok , "                " )   , ( KeywordTok , "if" )-  , ( NormalTok , " (" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( KeywordTok , "not" )-  , ( NormalTok , " Used(I)) " )+  , ( NormalTok , " Used" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "I" )+  , ( OperatorTok , "))" )+  , ( NormalTok , " " )   , ( KeywordTok , "then" )   ] , [ ( NormalTok , "                    " )   , ( KeywordTok , "if" )-  , ( NormalTok , " C = To_Upper(Blocks(I)(" )+  , ( NormalTok , " C " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " To_Upper" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "Blocks" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "I" )+  , ( OperatorTok , ")(" )   , ( DecValTok , "1" )-  , ( NormalTok , ")) " )+  , ( OperatorTok , "))" )+  , ( NormalTok , " " )   , ( KeywordTok , "or" )-  , ( NormalTok , " C = To_Upper(Blocks(I)(" )+  , ( NormalTok , " C " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " To_Upper" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "Blocks" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "I" )+  , ( OperatorTok , ")(" )   , ( DecValTok , "2" )-  , ( NormalTok , ")) " )+  , ( OperatorTok , "))" )+  , ( NormalTok , " " )   , ( KeywordTok , "then" )   ]-, [ ( NormalTok , "                        Used(I) := True;" ) ]+, [ ( NormalTok , "                        Used" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "I" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )+  , ( OperatorTok , ":=" )+  , ( NormalTok , " True;" )+  ] , [ ( NormalTok , "                        " )   , ( KeywordTok , "if" )-  , ( NormalTok , " wPos = W'Last " )+  , ( NormalTok , " wPos " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " W'Last " )   , ( KeywordTok , "then" )   ] , [ ( NormalTok , "                            " )@@ -160,9 +254,13 @@   , ( KeywordTok , "end if" )   , ( NormalTok , ";" )   ]-, [ ( NormalTok-    , "                        wPos := wIndex'Succ(wPos);"-    )+, [ ( NormalTok , "                        wPos " )+  , ( OperatorTok , ":=" )+  , ( NormalTok , " wIndex'Succ" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "wPos" )+  , ( OperatorTok , ")" )+  , ( NormalTok , ";" )   ] , [ ( NormalTok , "                        " )   , ( KeywordTok , "exit" )@@ -182,7 +280,9 @@   ] , [ ( NormalTok , "            " )   , ( KeywordTok , "if" )-  , ( NormalTok , " X = wPos " )+  , ( NormalTok , " X " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " wPos " )   , ( KeywordTok , "then" )   ] , [ ( NormalTok , "                " )@@ -210,143 +310,264 @@ , [ ( KeywordTok , "end" ) , ( NormalTok , " Abc;" ) ] , [] , [ ( KeywordTok , "with" )-  , ( NormalTok , " Ada.Text_IO, Ada.Strings.Unbounded, Abc;" )+  , ( NormalTok , " Ada" )+  , ( OperatorTok , "." )+  , ( NormalTok , "Text_IO" )+  , ( OperatorTok , "," )+  , ( NormalTok , " Ada" )+  , ( OperatorTok , "." )+  , ( NormalTok , "Strings" )+  , ( OperatorTok , "." )+  , ( NormalTok , "Unbounded" )+  , ( OperatorTok , "," )+  , ( NormalTok , " Abc;" )   ] , [ ( KeywordTok , "use" )-  , ( NormalTok , " Ada.Text_IO, Ada.Strings.Unbounded, Abc;" )+  , ( NormalTok , " Ada" )+  , ( OperatorTok , "." )+  , ( NormalTok , "Text_IO" )+  , ( OperatorTok , "," )+  , ( NormalTok , " Ada" )+  , ( OperatorTok , "." )+  , ( NormalTok , "Strings" )+  , ( OperatorTok , "." )+  , ( NormalTok , "Unbounded" )+  , ( OperatorTok , "," )+  , ( NormalTok , " Abc;" )   ] , [] , [ ( KeywordTok , "procedure" )   , ( NormalTok , " Abc_Problem " )   , ( KeywordTok , "is" )   ]-, [ ( NormalTok , "    Blocks : Block_List := (" ) ]-, [ ( NormalTok , "          (" )+, [ ( NormalTok , "    Blocks " )+  , ( OperatorTok , ":" )+  , ( NormalTok , " Block_List " )+  , ( OperatorTok , ":=" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  ]+, [ ( NormalTok , "          " )+  , ( OperatorTok , "(" )   , ( CharTok , "'B'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'O'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'X'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'K'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'D'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'Q'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'C'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'P'" )-  , ( NormalTok , ")" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "        , (" )+, [ ( NormalTok , "        " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'N'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'A'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'G'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'T'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'R'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'E'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'T'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'G'" )-  , ( NormalTok , ")" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "        , (" )+, [ ( NormalTok , "        " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'Q'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'D'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'F'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'S'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'J'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'W'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'H'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'U'" )-  , ( NormalTok , ")" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "        , (" )+, [ ( NormalTok , "        " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'V'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'I'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'A'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'N'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'O'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'B'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'E'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'R'" )-  , ( NormalTok , ")" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "        , (" )+, [ ( NormalTok , "        " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'F'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'S'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'L'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'Y'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'P'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'C'" )-  , ( NormalTok , "), (" )+  , ( OperatorTok , ")," )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( CharTok , "'Z'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'M'" )-  , ( NormalTok , ")" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "    );" ) ] , [ ( NormalTok , "    " )+  , ( OperatorTok , ")" )+  , ( NormalTok , ";" )+  ]+, [ ( NormalTok , "    " )   , ( KeywordTok , "function" )   , ( NormalTok , " " )   , ( StringTok , "\"+\"" )-  , ( NormalTok , " (S : " )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "S " )+  , ( OperatorTok , ":" )+  , ( NormalTok , " " )   , ( DataTypeTok , "String" )-  , ( NormalTok , ") " )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )   , ( KeywordTok , "return" )   , ( NormalTok , " Unbounded_String " )   , ( KeywordTok , "renames" )   , ( NormalTok , " To_Unbounded_String;" )   ]-, [ ( NormalTok , "    words : " )+, [ ( NormalTok , "    words " )+  , ( OperatorTok , ":" )+  , ( NormalTok , " " )   , ( KeywordTok , "array" )-  , ( NormalTok , "(positive " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "positive " )   , ( KeywordTok , "range" )-  , ( NormalTok , " <>) " )+  , ( NormalTok , " " )+  , ( OperatorTok , "<>)" )+  , ( NormalTok , " " )   , ( KeywordTok , "of" )-  , ( NormalTok , " Unbounded_String := (" )+  , ( NormalTok , " Unbounded_String " )+  , ( OperatorTok , ":=" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   ]-, [ ( NormalTok , "          +" ) , ( StringTok , "\"A\"" ) ]-, [ ( NormalTok , "        , +" ) , ( StringTok , "\"BARK\"" ) ]-, [ ( NormalTok , "        , +" ) , ( StringTok , "\"BOOK\"" ) ]-, [ ( NormalTok , "        , +" ) , ( StringTok , "\"TREAT\"" ) ]-, [ ( NormalTok , "        , +" ) , ( StringTok , "\"COMMON\"" ) ]-, [ ( NormalTok , "        , +" ) , ( StringTok , "\"SQUAD\"" ) ]-, [ ( NormalTok , "        , +" ) , ( StringTok , "\"CONFUSE\"" ) ]+, [ ( NormalTok , "          " )+  , ( OperatorTok , "+" )+  , ( StringTok , "\"A\"" )+  ] , [ ( NormalTok , "        " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )+  , ( OperatorTok , "+" )+  , ( StringTok , "\"BARK\"" )+  ]+, [ ( NormalTok , "        " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )+  , ( OperatorTok , "+" )+  , ( StringTok , "\"BOOK\"" )+  ]+, [ ( NormalTok , "        " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )+  , ( OperatorTok , "+" )+  , ( StringTok , "\"TREAT\"" )+  ]+, [ ( NormalTok , "        " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )+  , ( OperatorTok , "+" )+  , ( StringTok , "\"COMMON\"" )+  ]+, [ ( NormalTok , "        " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )+  , ( OperatorTok , "+" )+  , ( StringTok , "\"SQUAD\"" )+  ]+, [ ( NormalTok , "        " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )+  , ( OperatorTok , "+" )+  , ( StringTok , "\"CONFUSE\"" )+  ]+, [ ( NormalTok , "        " )   , ( CommentTok , "-- Border cases:" )   ] , [ ( NormalTok , "        " )   , ( CommentTok , "-- , +\"CONFUSE2\"" )   ] , [ ( NormalTok , "        " ) , ( CommentTok , "-- , +\"\"" ) ]-, [ ( NormalTok , "    );" ) ]+, [ ( NormalTok , "    " )+  , ( OperatorTok , ")" )+  , ( NormalTok , ";" )+  ] , [ ( KeywordTok , "begin" ) ] , [ ( NormalTok , "    " )   , ( KeywordTok , "for" )@@ -355,11 +576,35 @@   , ( NormalTok , " words'Range " )   , ( KeywordTok , "loop" )   ]-, [ ( NormalTok , "        Put_Line ( To_String(words(I)) & " )+, [ ( NormalTok , "        Put_Line " )+  , ( OperatorTok , "(" )+  , ( NormalTok , " To_String" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "words" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "I" )+  , ( OperatorTok , "))" )+  , ( NormalTok , " " )+  , ( OperatorTok , "&" )+  , ( NormalTok , " " )   , ( StringTok , "\": \"" )-  , ( NormalTok-    , " & Boolean'Image(Can_Make_Word(To_String(words(I)),Blocks)) );"-    )+  , ( NormalTok , " " )+  , ( OperatorTok , "&" )+  , ( NormalTok , " Boolean'Image" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "Can_Make_Word" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "To_String" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "words" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "I" )+  , ( OperatorTok , "))," )+  , ( NormalTok , "Blocks" )+  , ( OperatorTok , "))" )+  , ( NormalTok , " " )+  , ( OperatorTok , ")" )+  , ( NormalTok , ";" )   ] , [ ( NormalTok , "    " )   , ( KeywordTok , "end loop" )
test/expected/abc.c.native view
@@ -6,18 +6,36 @@   ] , [] , [ ( DataTypeTok , "int" )-  , ( NormalTok , " can_make_words(" )+  , ( NormalTok , " can_make_words" )+  , ( OperatorTok , "(" )   , ( DataTypeTok , "char" )-  , ( NormalTok , " **b, " )+  , ( NormalTok , " " )+  , ( OperatorTok , "**" )+  , ( NormalTok , "b" )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( DataTypeTok , "char" )-  , ( NormalTok , " *word)" )+  , ( NormalTok , " " )+  , ( OperatorTok , "*" )+  , ( NormalTok , "word" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "{" ) ]+, [ ( OperatorTok , "{" ) ] , [ ( NormalTok , "        " )   , ( DataTypeTok , "int" )-  , ( NormalTok , " i, ret = " )+  , ( NormalTok , " i" )+  , ( OperatorTok , "," )+  , ( NormalTok , " ret " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( DecValTok , "0" )-  , ( NormalTok , ", c = toupper(*word);" )+  , ( OperatorTok , "," )+  , ( NormalTok , " c " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " toupper" )+  , ( OperatorTok , "(*" )+  , ( NormalTok , "word" )+  , ( OperatorTok , ");" )   ] , [] , [ ( PreprocessorTok@@ -27,171 +45,308 @@ , [] , [ ( NormalTok , "        " )   , ( ControlFlowTok , "if" )-  , ( NormalTok , " (!c) " )+  , ( NormalTok , " " )+  , ( OperatorTok , "(!" )+  , ( NormalTok , "c" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )   , ( ControlFlowTok , "return" )   , ( NormalTok , " " )   , ( DecValTok , "1" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ] , [ ( NormalTok , "        " )   , ( ControlFlowTok , "if" )-  , ( NormalTok , " (!b[" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(!" )+  , ( NormalTok , "b" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "]) " )+  , ( OperatorTok , "])" )+  , ( NormalTok , " " )   , ( ControlFlowTok , "return" )   , ( NormalTok , " " )   , ( DecValTok , "0" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ] , [] , [ ( NormalTok , "        " )   , ( ControlFlowTok , "for" )-  , ( NormalTok , " (i = " )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "i " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( DecValTok , "0" )-  , ( NormalTok , "; b[i] && !ret; i++) {" )+  , ( OperatorTok , ";" )+  , ( NormalTok , " b" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "i" )+  , ( OperatorTok , "]" )+  , ( NormalTok , " " )+  , ( OperatorTok , "&&" )+  , ( NormalTok , " " )+  , ( OperatorTok , "!" )+  , ( NormalTok , "ret" )+  , ( OperatorTok , ";" )+  , ( NormalTok , " i" )+  , ( OperatorTok , "++)" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "                " )   , ( ControlFlowTok , "if" )-  , ( NormalTok , " (b[i][" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "b" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "i" )+  , ( OperatorTok , "][" )   , ( DecValTok , "0" )-  , ( NormalTok , "] != c && b[i][" )+  , ( OperatorTok , "]" )+  , ( NormalTok , " " )+  , ( OperatorTok , "!=" )+  , ( NormalTok , " c " )+  , ( OperatorTok , "&&" )+  , ( NormalTok , " b" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "i" )+  , ( OperatorTok , "][" )   , ( DecValTok , "1" )-  , ( NormalTok , "] != c) " )+  , ( OperatorTok , "]" )+  , ( NormalTok , " " )+  , ( OperatorTok , "!=" )+  , ( NormalTok , " c" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )   , ( ControlFlowTok , "continue" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "                SWAP(b[i], b[" )+, [ ( NormalTok , "                SWAP" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "b" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "i" )+  , ( OperatorTok , "]," )+  , ( NormalTok , " b" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "]);" )+  , ( OperatorTok , "]);" )   ]-, [ ( NormalTok , "                ret = can_make_words(b + " )+, [ ( NormalTok , "                ret " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " can_make_words" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "b " )+  , ( OperatorTok , "+" )+  , ( NormalTok , " " )   , ( DecValTok , "1" )-  , ( NormalTok , ", word + " )+  , ( OperatorTok , "," )+  , ( NormalTok , " word " )+  , ( OperatorTok , "+" )+  , ( NormalTok , " " )   , ( DecValTok , "1" )-  , ( NormalTok , ");" )+  , ( OperatorTok , ");" )   ]-, [ ( NormalTok , "                SWAP(b[i], b[" )+, [ ( NormalTok , "                SWAP" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "b" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "i" )+  , ( OperatorTok , "]," )+  , ( NormalTok , " b" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "]);" )+  , ( OperatorTok , "]);" )   ]-, [ ( NormalTok , "        }" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "}" ) ] , [] , [ ( NormalTok , "        " )   , ( ControlFlowTok , "return" )-  , ( NormalTok , " ret;" )+  , ( NormalTok , " ret" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "}" ) ]+, [ ( OperatorTok , "}" ) ] , [] , [ ( DataTypeTok , "int" )-  , ( NormalTok , " main(" )+  , ( NormalTok , " main" )+  , ( OperatorTok , "(" )   , ( DataTypeTok , "void" )-  , ( NormalTok , ")" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "{" ) ]+, [ ( OperatorTok , "{" ) ] , [ ( NormalTok , "        " )   , ( DataTypeTok , "char" )-  , ( NormalTok , "* blocks[] = {" )+  , ( OperatorTok , "*" )+  , ( NormalTok , " blocks" )+  , ( OperatorTok , "[]" )+  , ( NormalTok , " " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "                " )   , ( StringTok , "\"BO\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"XK\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"DQ\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"CP\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"NA\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   ] , [ ( NormalTok , "                " )   , ( StringTok , "\"GT\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"RE\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"TG\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"QD\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"FS\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   ] , [ ( NormalTok , "                " )   , ( StringTok , "\"JW\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"HU\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"VI\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"AN\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"OB\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   ] , [ ( NormalTok , "                " )   , ( StringTok , "\"ER\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"FS\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"LY\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"PC\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"ZM\"" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   ] , [ ( NormalTok , "                " )   , ( DecValTok , "0" )-  , ( NormalTok , " };" )+  , ( NormalTok , " " )+  , ( OperatorTok , "};" )   ] , [] , [ ( NormalTok , "        " )   , ( DataTypeTok , "char" )-  , ( NormalTok , " *words[] = {" )+  , ( NormalTok , " " )+  , ( OperatorTok , "*" )+  , ( NormalTok , "words" )+  , ( OperatorTok , "[]" )+  , ( NormalTok , " " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "                " )   , ( StringTok , "\"\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"A\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"BARK\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"BOOK\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"TREAT\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"COMMON\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"SQUAD\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"Confuse\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( DecValTok , "0" )   ]-, [ ( NormalTok , "        };" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "};" ) ] , [] , [ ( NormalTok , "        " )   , ( DataTypeTok , "char" )-  , ( NormalTok , " **w;" )+  , ( NormalTok , " " )+  , ( OperatorTok , "**" )+  , ( NormalTok , "w" )+  , ( OperatorTok , ";" )   ] , [ ( NormalTok , "        " )   , ( ControlFlowTok , "for" )-  , ( NormalTok , " (w = words; *w; w++)" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "w " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " words" )+  , ( OperatorTok , ";" )+  , ( NormalTok , " " )+  , ( OperatorTok , "*" )+  , ( NormalTok , "w" )+  , ( OperatorTok , ";" )+  , ( NormalTok , " w" )+  , ( OperatorTok , "++)" )   ]-, [ ( NormalTok , "                printf(" )+, [ ( NormalTok , "                printf" )+  , ( OperatorTok , "(" )   , ( StringTok , "\"%s" )   , ( SpecialCharTok , "\\t" )   , ( StringTok , "%d" )   , ( SpecialCharTok , "\\n" )   , ( StringTok , "\"" )-  , ( NormalTok , ", *w, can_make_words(blocks, *w));" )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )+  , ( OperatorTok , "*" )+  , ( NormalTok , "w" )+  , ( OperatorTok , "," )+  , ( NormalTok , " can_make_words" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "blocks" )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )+  , ( OperatorTok , "*" )+  , ( NormalTok , "w" )+  , ( OperatorTok , "));" )   ] , [] , [ ( NormalTok , "        " )   , ( ControlFlowTok , "return" )   , ( NormalTok , " " )   , ( DecValTok , "0" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "}" ) ]+, [ ( OperatorTok , "}" ) ] ]
test/expected/abc.cpp.native view
@@ -16,221 +16,422 @@ , [ ( KeywordTok , "typedef" )   , ( NormalTok , " " )   , ( BuiltInTok , "std::" )-  , ( NormalTok , "pair<" )+  , ( NormalTok , "pair" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "char" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( DataTypeTok , "char" )-  , ( NormalTok , "> " )+  , ( OperatorTok , ">" )+  , ( NormalTok , " " )   , ( DataTypeTok , "item_t" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ] , [ ( KeywordTok , "typedef" )   , ( NormalTok , " " )   , ( BuiltInTok , "std::" )-  , ( NormalTok , "vector<" )+  , ( NormalTok , "vector" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "item_t" )-  , ( NormalTok , "> " )+  , ( OperatorTok , ">" )+  , ( NormalTok , " " )   , ( DataTypeTok , "list_t" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ] , [] , [ ( DataTypeTok , "bool" )-  , ( NormalTok , " can_make_word(" )+  , ( NormalTok , " can_make_word" )+  , ( OperatorTok , "(" )   , ( AttributeTok , "const" )   , ( NormalTok , " " )   , ( BuiltInTok , "std::" )-  , ( NormalTok , "string& w, " )+  , ( NormalTok , "string" )+  , ( OperatorTok , "&" )+  , ( NormalTok , " w" )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( AttributeTok , "const" )   , ( NormalTok , " " )   , ( DataTypeTok , "list_t" )-  , ( NormalTok , "& vals) {" )+  , ( OperatorTok , "&" )+  , ( NormalTok , " vals" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "    " )   , ( BuiltInTok , "std::" )-  , ( NormalTok , "set<" )+  , ( NormalTok , "set" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "uint32_t" )-  , ( NormalTok , "> used;" )+  , ( OperatorTok , ">" )+  , ( NormalTok , " used" )+  , ( OperatorTok , ";" )   ] , [ ( NormalTok , "    " )   , ( ControlFlowTok , "while" )-  , ( NormalTok , " (used.size() < w.size()) {" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "used" )+  , ( OperatorTok , "." )+  , ( NormalTok , "size" )+  , ( OperatorTok , "()" )+  , ( NormalTok , " " )+  , ( OperatorTok , "<" )+  , ( NormalTok , " w" )+  , ( OperatorTok , "." )+  , ( NormalTok , "size" )+  , ( OperatorTok , "())" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "        " )   , ( AttributeTok , "const" )   , ( NormalTok , " " )   , ( DataTypeTok , "char" )-  , ( NormalTok , " c = toupper(w[used.size()]);" )+  , ( NormalTok , " c " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " toupper" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "w" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "used" )+  , ( OperatorTok , "." )+  , ( NormalTok , "size" )+  , ( OperatorTok , "()]);" )   ] , [ ( NormalTok , "        " )   , ( DataTypeTok , "uint32_t" )-  , ( NormalTok , " x = used.size();" )+  , ( NormalTok , " x " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " used" )+  , ( OperatorTok , "." )+  , ( NormalTok , "size" )+  , ( OperatorTok , "();" )   ] , [ ( NormalTok , "        " )   , ( ControlFlowTok , "for" )-  , ( NormalTok , " (" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( DataTypeTok , "uint32_t" )-  , ( NormalTok , " i = " )+  , ( NormalTok , " i " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( DecValTok , "0" )-  , ( NormalTok , ", ii = vals.size(); i < ii; ++i) {" )+  , ( OperatorTok , "," )+  , ( NormalTok , " ii " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " vals" )+  , ( OperatorTok , "." )+  , ( NormalTok , "size" )+  , ( OperatorTok , "();" )+  , ( NormalTok , " i " )+  , ( OperatorTok , "<" )+  , ( NormalTok , " ii" )+  , ( OperatorTok , ";" )+  , ( NormalTok , " " )+  , ( OperatorTok , "++" )+  , ( NormalTok , "i" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "            " )   , ( ControlFlowTok , "if" )-  , ( NormalTok , " (used.find(i) == used.end()) {" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "used" )+  , ( OperatorTok , "." )+  , ( NormalTok , "find" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "i" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )+  , ( OperatorTok , "==" )+  , ( NormalTok , " used" )+  , ( OperatorTok , "." )+  , ( NormalTok , "end" )+  , ( OperatorTok , "())" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "                " )   , ( ControlFlowTok , "if" )-  , ( NormalTok-    , " (toupper(vals[i].first) == c || toupper(vals[i].second) == c) {"-    )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "toupper" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "vals" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "i" )+  , ( OperatorTok , "]." )+  , ( NormalTok , "first" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )+  , ( OperatorTok , "==" )+  , ( NormalTok , " c " )+  , ( OperatorTok , "||" )+  , ( NormalTok , " toupper" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "vals" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "i" )+  , ( OperatorTok , "]." )+  , ( NormalTok , "second" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )+  , ( OperatorTok , "==" )+  , ( NormalTok , " c" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ]-, [ ( NormalTok , "                    used.insert(i);" ) ]+, [ ( NormalTok , "                    used" )+  , ( OperatorTok , "." )+  , ( NormalTok , "insert" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "i" )+  , ( OperatorTok , ");" )+  ] , [ ( NormalTok , "                    " )   , ( ControlFlowTok , "break" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "                }" ) ]-, [ ( NormalTok , "            }" ) ]-, [ ( NormalTok , "        }" ) ]+, [ ( NormalTok , "                " ) , ( OperatorTok , "}" ) ]+, [ ( NormalTok , "            " ) , ( OperatorTok , "}" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "}" ) ] , [ ( NormalTok , "        " )   , ( ControlFlowTok , "if" )-  , ( NormalTok , " (x == used.size()) " )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "x " )+  , ( OperatorTok , "==" )+  , ( NormalTok , " used" )+  , ( OperatorTok , "." )+  , ( NormalTok , "size" )+  , ( OperatorTok , "())" )+  , ( NormalTok , " " )   , ( ControlFlowTok , "break" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "    }" ) ]+, [ ( NormalTok , "    " ) , ( OperatorTok , "}" ) ] , [ ( NormalTok , "    " )   , ( ControlFlowTok , "return" )-  , ( NormalTok , " used.size() == w.size();" )+  , ( NormalTok , " used" )+  , ( OperatorTok , "." )+  , ( NormalTok , "size" )+  , ( OperatorTok , "()" )+  , ( NormalTok , " " )+  , ( OperatorTok , "==" )+  , ( NormalTok , " w" )+  , ( OperatorTok , "." )+  , ( NormalTok , "size" )+  , ( OperatorTok , "();" )   ]-, [ ( NormalTok , "}" ) ]+, [ ( OperatorTok , "}" ) ] , [] , []-, [ ( DataTypeTok , "int" ) , ( NormalTok , " main() {" ) ]+, [ ( DataTypeTok , "int" )+  , ( NormalTok , " main" )+  , ( OperatorTok , "()" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )+  ] , [ ( NormalTok , "    " )   , ( DataTypeTok , "list_t" )-  , ( NormalTok , " vals{ {" )+  , ( NormalTok , " vals" )+  , ( OperatorTok , "{" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'B'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'O'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'X'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'K'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'D'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'Q'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'C'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'P'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'N'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'A'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'G'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'T'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'R'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'E'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'T'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'G'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'Q'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'D'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'F'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'S'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'J'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'W'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'H'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'U'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'V'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'I'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'A'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'N'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'O'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'B'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'E'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'R'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'F'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'S'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'L'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'Y'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'P'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'C'" )-  , ( NormalTok , "}, {" )+  , ( OperatorTok , "}," )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   , ( CharTok , "'Z'" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( CharTok , "'M'" )-  , ( NormalTok , "} };" )+  , ( OperatorTok , "}" )+  , ( NormalTok , " " )+  , ( OperatorTok , "};" )   ] , [ ( NormalTok , "    " )   , ( BuiltInTok , "std::" )-  , ( NormalTok , "vector<" )+  , ( NormalTok , "vector" )+  , ( OperatorTok , "<" )   , ( BuiltInTok , "std::" )-  , ( NormalTok , "string> words{" )+  , ( NormalTok , "string" )+  , ( OperatorTok , ">" )+  , ( NormalTok , " words" )+  , ( OperatorTok , "{" )   , ( StringTok , "\"A\"" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( StringTok , "\"BARK\"" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( StringTok , "\"BOOK\"" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( StringTok , "\"TREAT\"" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( StringTok , "\"COMMON\"" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( StringTok , "\"SQUAD\"" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   , ( StringTok , "\"CONFUSE\"" )-  , ( NormalTok , "};" )+  , ( OperatorTok , "};" )   ] , [ ( NormalTok , "    " )   , ( ControlFlowTok , "for" )-  , ( NormalTok , " (" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( AttributeTok , "const" )   , ( NormalTok , " " )   , ( BuiltInTok , "std::" )-  , ( NormalTok , "string& w : words) {" )+  , ( NormalTok , "string" )+  , ( OperatorTok , "&" )+  , ( NormalTok , " w " )+  , ( OperatorTok , ":" )+  , ( NormalTok , " words" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "        " )   , ( BuiltInTok , "std::" )-  , ( NormalTok , "cout << w << " )+  , ( NormalTok , "cout" )+  , ( OperatorTok , " <<" )+  , ( NormalTok , " w " )+  , ( OperatorTok , "<<" )+  , ( NormalTok , " " )   , ( StringTok , "\": \"" )-  , ( NormalTok , " << " )+  , ( NormalTok , " " )+  , ( OperatorTok , "<<" )+  , ( NormalTok , " " )   , ( BuiltInTok , "std::" )-  , ( NormalTok , "boolalpha << can_make_word(w,vals) << " )+  , ( NormalTok , "boolalpha" )+  , ( OperatorTok , " <<" )+  , ( NormalTok , " can_make_word" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "w" )+  , ( OperatorTok , "," )+  , ( NormalTok , "vals" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )+  , ( OperatorTok , "<<" )+  , ( NormalTok , " " )   , ( StringTok , "\"." )   , ( SpecialCharTok , "\\n" )   , ( StringTok , "\"" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "    }" ) ]+, [ ( NormalTok , "    " ) , ( OperatorTok , "}" ) ] , []-, [ ( NormalTok , "}" ) ]+, [ ( OperatorTok , "}" ) ] ]
test/expected/abc.cs.native view
@@ -1,158 +1,227 @@ [ [ ( KeywordTok , "using" )-  , ( NormalTok , " System." )+  , ( NormalTok , " System" )+  , ( OperatorTok , "." )   , ( FunctionTok , "Collections" )-  , ( NormalTok , "." )+  , ( OperatorTok , "." )   , ( FunctionTok , "Generic" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ] , [ ( KeywordTok , "using" )-  , ( NormalTok , " System." )+  , ( NormalTok , " System" )+  , ( OperatorTok , "." )   , ( FunctionTok , "Linq" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ] , [] , [ ( DataTypeTok , "void" )   , ( NormalTok , " " )   , ( FunctionTok , "Main" )-  , ( NormalTok , "()" )+  , ( OperatorTok , "()" )   ]-, [ ( NormalTok , "{" ) ]-, [ ( NormalTok , "        List<" )+, [ ( OperatorTok , "{" ) ]+, [ ( NormalTok , "        List" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "string" )-  , ( NormalTok , "> blocks =" )+  , ( OperatorTok , ">" )+  , ( NormalTok , " blocks " )+  , ( OperatorTok , "=" )   ] , [ ( NormalTok , "        " )   , ( KeywordTok , "new" )-  , ( NormalTok , " List<" )+  , ( NormalTok , " List" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "string" )-  , ( NormalTok , ">() { " )+  , ( OperatorTok , ">()" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )+  , ( NormalTok , " " )   , ( StringTok , "\"bo\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"xk\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"dq\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"cp\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"na\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"gt\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"re\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"tg\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"qd\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"fs\"" )-  , ( NormalTok , "," )+  , ( OperatorTok , "," )   ] , [ ( NormalTok , "                " )   , ( StringTok , "\"jw\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"hu\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"vi\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"an\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"ob\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"er\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"fs\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"ly\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"pc\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"zm\"" )-  , ( NormalTok , " };" )+  , ( NormalTok , " " )+  , ( OperatorTok , "};" )   ]-, [ ( NormalTok , "        List<" )+, [ ( NormalTok , "        List" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "string" )-  , ( NormalTok , "> words = " )+  , ( OperatorTok , ">" )+  , ( NormalTok , " words " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( KeywordTok , "new" )-  , ( NormalTok , " List<" )+  , ( NormalTok , " List" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "string" )-  , ( NormalTok , ">() {" )+  , ( OperatorTok , ">()" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "                " )   , ( StringTok , "\"A\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"BARK\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"BOOK\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"TREAT\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"COMMON\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"SQUAD\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"CONFUSE\"" )-  , ( NormalTok , "};" )+  , ( OperatorTok , "};" )   ] , [ ( NormalTok , "        " ) ] , [ ( NormalTok , "        " )   , ( DataTypeTok , "var" )-  , ( NormalTok , " solver = " )+  , ( NormalTok , " solver " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( KeywordTok , "new" )   , ( NormalTok , " " )   , ( FunctionTok , "ABC" )-  , ( NormalTok , "(blocks);" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "blocks" )+  , ( OperatorTok , ");" )   ] , [ ( NormalTok , "        " ) ] , [ ( NormalTok , "        " )   , ( KeywordTok , "foreach" )-  , ( NormalTok , "( " )+  , ( OperatorTok , "(" )+  , ( NormalTok , " " )   , ( DataTypeTok , "var" )   , ( NormalTok , " word " )   , ( KeywordTok , "in" )-  , ( NormalTok , " words)" )+  , ( NormalTok , " words" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "        {" ) ]-, [ ( NormalTok , "                Console." )+, [ ( NormalTok , "        " ) , ( OperatorTok , "{" ) ]+, [ ( NormalTok , "                Console" )+  , ( OperatorTok , "." )   , ( FunctionTok , "WriteLine" )-  , ( NormalTok , "(" )+  , ( OperatorTok , "(" )   , ( StringTok , "\"{0} :{1}\"" )-  , ( NormalTok , ", word, solver." )+  , ( OperatorTok , "," )+  , ( NormalTok , " word" )+  , ( OperatorTok , "," )+  , ( NormalTok , " solver" )+  , ( OperatorTok , "." )   , ( FunctionTok , "CanMake" )-  , ( NormalTok , "(word));" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "word" )+  , ( OperatorTok , "));" )   ]-, [ ( NormalTok , "        }" ) ]-, [ ( NormalTok , "}" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "}" ) ]+, [ ( OperatorTok , "}" ) ] , [] , [ ( KeywordTok , "class" ) , ( NormalTok , " ABC" ) ]-, [ ( NormalTok , "{" ) ]+, [ ( OperatorTok , "{" ) ] , [ ( NormalTok , "        " )   , ( KeywordTok , "readonly" )-  , ( NormalTok , " Dictionary<" )+  , ( NormalTok , " Dictionary" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "char" )-  , ( NormalTok , ", List<" )+  , ( OperatorTok , "," )+  , ( NormalTok , " List" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "int" )-  , ( NormalTok , ">> _blockDict = " )+  , ( OperatorTok , ">>" )+  , ( NormalTok , " _blockDict " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( KeywordTok , "new" )-  , ( NormalTok , " Dictionary<" )+  , ( NormalTok , " Dictionary" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "char" )-  , ( NormalTok , ", List<" )+  , ( OperatorTok , "," )+  , ( NormalTok , " List" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "int" )-  , ( NormalTok , ">>();" )+  , ( OperatorTok , ">>();" )   ] , [ ( NormalTok , "        " )   , ( DataTypeTok , "bool" )-  , ( NormalTok , "[] _used;" )+  , ( OperatorTok , "[]" )+  , ( NormalTok , " _used" )+  , ( OperatorTok , ";" )   ] , [ ( NormalTok , "        " )   , ( DataTypeTok , "int" )-  , ( NormalTok , " _nextBlock;" )+  , ( NormalTok , " _nextBlock" )+  , ( OperatorTok , ";" )   ] , [] , [ ( NormalTok , "        " )   , ( KeywordTok , "readonly" )-  , ( NormalTok , " List<" )+  , ( NormalTok , " List" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "string" )-  , ( NormalTok , "> _blocks;" )+  , ( OperatorTok , ">" )+  , ( NormalTok , " _blocks" )+  , ( OperatorTok , ";" )   ] , [] , [ ( NormalTok , "        " )@@ -161,30 +230,48 @@   , ( DataTypeTok , "void" )   , ( NormalTok , " " )   , ( FunctionTok , "AddBlockChar" )-  , ( NormalTok , "(" )+  , ( OperatorTok , "(" )   , ( DataTypeTok , "char" )-  , ( NormalTok , " c)" )+  , ( NormalTok , " c" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "        {" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "{" ) ] , [ ( NormalTok , "                " )   , ( KeywordTok , "if" )-  , ( NormalTok , " (!_blockDict." )+  , ( NormalTok , " " )+  , ( OperatorTok , "(!" )+  , ( NormalTok , "_blockDict" )+  , ( OperatorTok , "." )   , ( FunctionTok , "ContainsKey" )-  , ( NormalTok , "(c))" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "c" )+  , ( OperatorTok , "))" )   ]-, [ ( NormalTok , "                {" ) ]-, [ ( NormalTok , "                        _blockDict[c] = " )+, [ ( NormalTok , "                " ) , ( OperatorTok , "{" ) ]+, [ ( NormalTok , "                        _blockDict" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "c" )+  , ( OperatorTok , "]" )+  , ( NormalTok , " " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( KeywordTok , "new" )-  , ( NormalTok , " List<" )+  , ( NormalTok , " List" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "int" )-  , ( NormalTok , ">();" )+  , ( OperatorTok , ">();" )   ]-, [ ( NormalTok , "                }" ) ]-, [ ( NormalTok , "                _blockDict[c]." )+, [ ( NormalTok , "                " ) , ( OperatorTok , "}" ) ]+, [ ( NormalTok , "                _blockDict" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "c" )+  , ( OperatorTok , "]." )   , ( FunctionTok , "Add" )-  , ( NormalTok , "(_nextBlock);" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "_nextBlock" )+  , ( OperatorTok , ");" )   ]-, [ ( NormalTok , "        }" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "}" ) ] , [] , [ ( NormalTok , "        " )   , ( KeywordTok , "private" )@@ -192,51 +279,70 @@   , ( DataTypeTok , "void" )   , ( NormalTok , " " )   , ( FunctionTok , "AddBlock" )-  , ( NormalTok , "(" )+  , ( OperatorTok , "(" )   , ( DataTypeTok , "string" )-  , ( NormalTok , " block)" )+  , ( NormalTok , " block" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "        {" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "{" ) ] , [ ( NormalTok , "                " )   , ( FunctionTok , "AddBlockChar" )-  , ( NormalTok , "(block[" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "block" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "]);" )+  , ( OperatorTok , "]);" )   ] , [ ( NormalTok , "                " )   , ( FunctionTok , "AddBlockChar" )-  , ( NormalTok , "(block[" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "block" )+  , ( OperatorTok , "[" )   , ( DecValTok , "1" )-  , ( NormalTok , "]);" )+  , ( OperatorTok , "]);" )   ]-, [ ( NormalTok , "                _nextBlock++;" ) ]-, [ ( NormalTok , "        }" ) ]+, [ ( NormalTok , "                _nextBlock" )+  , ( OperatorTok , "++;" )+  ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "}" ) ] , [] , [ ( NormalTok , "        " )   , ( KeywordTok , "public" )   , ( NormalTok , " " )   , ( FunctionTok , "ABC" )-  , ( NormalTok , "(List<" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "List" )+  , ( OperatorTok , "<" )   , ( DataTypeTok , "string" )-  , ( NormalTok , "> blocks)" )+  , ( OperatorTok , ">" )+  , ( NormalTok , " blocks" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "        {" ) ]-, [ ( NormalTok , "                _blocks = blocks;" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "{" ) ]+, [ ( NormalTok , "                _blocks " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " blocks" )+  , ( OperatorTok , ";" )+  ] , [ ( NormalTok , "                " )   , ( KeywordTok , "foreach" )-  , ( NormalTok , " (" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( DataTypeTok , "var" )   , ( NormalTok , " block " )   , ( KeywordTok , "in" )-  , ( NormalTok , " blocks)" )+  , ( NormalTok , " blocks" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "                {" ) ]+, [ ( NormalTok , "                " ) , ( OperatorTok , "{" ) ] , [ ( NormalTok , "                        " )   , ( FunctionTok , "AddBlock" )-  , ( NormalTok , "(block);" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "block" )+  , ( OperatorTok , ");" )   ]-, [ ( NormalTok , "                }" ) ]-, [ ( NormalTok , "        }" ) ]+, [ ( NormalTok , "                " ) , ( OperatorTok , "}" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "}" ) ] , [] , [ ( NormalTok , "        " )   , ( KeywordTok , "public" )@@ -244,46 +350,62 @@   , ( DataTypeTok , "bool" )   , ( NormalTok , " " )   , ( FunctionTok , "CanMake" )-  , ( NormalTok , "(" )+  , ( OperatorTok , "(" )   , ( DataTypeTok , "string" )-  , ( NormalTok , " word)" )+  , ( NormalTok , " word" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "        {" ) ]-, [ ( NormalTok , "                word = word." )+, [ ( NormalTok , "        " ) , ( OperatorTok , "{" ) ]+, [ ( NormalTok , "                word " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " word" )+  , ( OperatorTok , "." )   , ( FunctionTok , "ToLower" )-  , ( NormalTok , "();" )+  , ( OperatorTok , "();" )   ] , [ ( NormalTok , "                " )   , ( KeywordTok , "if" )-  , ( NormalTok , " (word." )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "word" )+  , ( OperatorTok , "." )   , ( FunctionTok , "Length" )-  , ( NormalTok , " > _blockDict." )+  , ( NormalTok , " " )+  , ( OperatorTok , ">" )+  , ( NormalTok , " _blockDict" )+  , ( OperatorTok , "." )   , ( FunctionTok , "Count" )-  , ( NormalTok , ")" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "                {" ) ]+, [ ( NormalTok , "                " ) , ( OperatorTok , "{" ) ] , [ ( NormalTok , "                        " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( KeywordTok , "false" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "                }" ) ]-, [ ( NormalTok , "                _used = " )+, [ ( NormalTok , "                " ) , ( OperatorTok , "}" ) ]+, [ ( NormalTok , "                _used " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( KeywordTok , "new" )   , ( NormalTok , " " )   , ( DataTypeTok , "bool" )-  , ( NormalTok , "[_blocks." )+  , ( OperatorTok , "[" )+  , ( NormalTok , "_blocks" )+  , ( OperatorTok , "." )   , ( FunctionTok , "Count" )-  , ( NormalTok , "];" )+  , ( OperatorTok , "];" )   ] , [ ( NormalTok , "                " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( FunctionTok , "TryMake" )-  , ( NormalTok , "(word);" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "word" )+  , ( OperatorTok , ");" )   ]-, [ ( NormalTok , "        }" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "}" ) ] , [] , [ ( NormalTok , "        " )   , ( KeywordTok , "public" )@@ -291,78 +413,117 @@   , ( DataTypeTok , "bool" )   , ( NormalTok , " " )   , ( FunctionTok , "TryMake" )-  , ( NormalTok , "(" )+  , ( OperatorTok , "(" )   , ( DataTypeTok , "string" )-  , ( NormalTok , " word)" )+  , ( NormalTok , " word" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "        {" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "{" ) ] , [ ( NormalTok , "                " )   , ( KeywordTok , "if" )-  , ( NormalTok , " (word == " )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "word " )+  , ( OperatorTok , "==" )+  , ( NormalTok , " " )   , ( DataTypeTok , "string" )-  , ( NormalTok , "." )+  , ( OperatorTok , "." )   , ( FunctionTok , "Empty" )-  , ( NormalTok , ")" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "                {" ) ]+, [ ( NormalTok , "                " ) , ( OperatorTok , "{" ) ] , [ ( NormalTok , "                        " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( KeywordTok , "true" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "                }" ) ]+, [ ( NormalTok , "                " ) , ( OperatorTok , "}" ) ] , [ ( NormalTok , "                " )   , ( DataTypeTok , "var" )-  , ( NormalTok , " blocks = _blockDict[word[" )+  , ( NormalTok , " blocks " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " _blockDict" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "word" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "]]." )+  , ( OperatorTok , "]]." )   , ( FunctionTok , "Where" )-  , ( NormalTok , "(b => !_used[b]);" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "b " )+  , ( OperatorTok , "=>" )+  , ( NormalTok , " " )+  , ( OperatorTok , "!" )+  , ( NormalTok , "_used" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "b" )+  , ( OperatorTok , "]);" )   ] , [ ( NormalTok , "                " )   , ( KeywordTok , "foreach" )-  , ( NormalTok , " (" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( DataTypeTok , "var" )   , ( NormalTok , " block " )   , ( KeywordTok , "in" )-  , ( NormalTok , " blocks)" )+  , ( NormalTok , " blocks" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "                {" ) ]-, [ ( NormalTok , "                        _used[block] = " )+, [ ( NormalTok , "                " ) , ( OperatorTok , "{" ) ]+, [ ( NormalTok , "                        _used" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "block" )+  , ( OperatorTok , "]" )+  , ( NormalTok , " " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( KeywordTok , "true" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ] , [ ( NormalTok , "                        " )   , ( KeywordTok , "if" )-  , ( NormalTok , " (" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( FunctionTok , "TryMake" )-  , ( NormalTok , "(word." )+  , ( OperatorTok , "(" )+  , ( NormalTok , "word" )+  , ( OperatorTok , "." )   , ( FunctionTok , "Substring" )-  , ( NormalTok , "(" )+  , ( OperatorTok , "(" )   , ( DecValTok , "1" )-  , ( NormalTok , ")))" )+  , ( OperatorTok , ")))" )   ]-, [ ( NormalTok , "                        {" ) ]+, [ ( NormalTok , "                        " )+  , ( OperatorTok , "{" )+  ] , [ ( NormalTok , "                                " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( KeywordTok , "true" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "                        }" ) ]-, [ ( NormalTok , "                        _used[block] = " )+, [ ( NormalTok , "                        " )+  , ( OperatorTok , "}" )+  ]+, [ ( NormalTok , "                        _used" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "block" )+  , ( OperatorTok , "]" )+  , ( NormalTok , " " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( KeywordTok , "false" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "                }" ) ]+, [ ( NormalTok , "                " ) , ( OperatorTok , "}" ) ] , [ ( NormalTok , "                " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( KeywordTok , "false" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "        }" ) ]-, [ ( NormalTok , "}" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "}" ) ]+, [ ( OperatorTok , "}" ) ] , [] ]
test/expected/abc.d.native view
@@ -2,180 +2,307 @@   , ( ImportTok     , " std.stdio, std.ascii, std.algorithm, std.array, std.range"     )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ] , [] , [ ( WarningTok , "alias" )-  , ( NormalTok , " Block = " )+  , ( NormalTok , " Block " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( DataTypeTok , "char" )-  , ( NormalTok , "[" )+  , ( OperatorTok , "[" )   , ( DecValTok , "2" )-  , ( NormalTok , "];" )+  , ( OperatorTok , "];" )   ] , [] , [ ( DataTypeTok , "bool" )-  , ( NormalTok , " canMakeWord(" )+  , ( NormalTok , " canMakeWord" )+  , ( OperatorTok , "(" )   , ( FunctionTok , "immutable" )-  , ( NormalTok , " Block[] blocks, " )+  , ( NormalTok , " Block" )+  , ( OperatorTok , "[]" )+  , ( NormalTok , " blocks" )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( AttributeTok , "in" )   , ( NormalTok , " " )   , ( BuiltInTok , "string" )-  , ( NormalTok , " word) " )+  , ( NormalTok , " word" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )   , ( FunctionTok , "pure" )   , ( NormalTok , " " )   , ( FunctionTok , "nothrow" )   ]-, [ ( KeywordTok , "in " ) , ( NormalTok , "{" ) ]+, [ ( KeywordTok , "in " ) , ( OperatorTok , "{" ) ] , [ ( NormalTok , "    " )   , ( AttributeTok , "assert" )-  , ( NormalTok , "(blocks.all!(w => w[].all!isAlpha));" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "blocks.all" )+  , ( OperatorTok , "!(" )+  , ( NormalTok , "w " )+  , ( OperatorTok , "=>" )+  , ( NormalTok , " w" )+  , ( OperatorTok , "[]" )+  , ( NormalTok , ".all" )+  , ( OperatorTok , "!" )+  , ( NormalTok , "isAlpha" )+  , ( OperatorTok , "));" )   ] , [ ( NormalTok , "    " )   , ( AttributeTok , "assert" )-  , ( NormalTok , "(word.all!isAlpha);" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "word.all" )+  , ( OperatorTok , "!" )+  , ( NormalTok , "isAlpha" )+  , ( OperatorTok , ");" )   ]-, [ ( NormalTok , "} " )+, [ ( OperatorTok , "}" )+  , ( NormalTok , " " )   , ( KeywordTok , "body" )-  , ( NormalTok , " {" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "    " )   , ( DataTypeTok , "bool" )-  , ( NormalTok , " inner(" )+  , ( NormalTok , " inner" )+  , ( OperatorTok , "(" )   , ( BuiltInTok , "size_t" )-  , ( NormalTok , "[] indexes, " )+  , ( OperatorTok , "[]" )+  , ( NormalTok , " indexes" )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( AttributeTok , "in" )   , ( NormalTok , " " )   , ( BuiltInTok , "string" )-  , ( NormalTok , " w) " )+  , ( NormalTok , " w" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )   , ( FunctionTok , "pure" )   , ( NormalTok , " " )   , ( FunctionTok , "nothrow" )-  , ( NormalTok , " {" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "        " )   , ( KeywordTok , "if" )-  , ( NormalTok , " (w.empty)" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "w.empty" )+  , ( OperatorTok , ")" )   ] , [ ( NormalTok , "            " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( AttributeTok , "true" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ] , [] , [ ( NormalTok , "        " )   , ( FunctionTok , "immutable" )-  , ( NormalTok , " c = w[" )+  , ( NormalTok , " c " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " w" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "].toUpper;" )+  , ( OperatorTok , "]" )+  , ( NormalTok , ".toUpper" )+  , ( OperatorTok , ";" )   ] , [ ( NormalTok , "        " )   , ( KeywordTok , "foreach" )-  , ( NormalTok , " (" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )   , ( FunctionTok , "ref" )-  , ( NormalTok , " idx; indexes) {" )+  , ( NormalTok , " idx" )+  , ( OperatorTok , ";" )+  , ( NormalTok , " indexes" )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "            " )   , ( KeywordTok , "if" )-  , ( NormalTok , " (blocks[idx][" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "blocks" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "idx" )+  , ( OperatorTok , "][" )   , ( DecValTok , "0" )-  , ( NormalTok , "].toUpper != c &&" )+  , ( OperatorTok , "]" )+  , ( NormalTok , ".toUpper " )+  , ( OperatorTok , "!=" )+  , ( NormalTok , " c " )+  , ( OperatorTok , "&&" )   ]-, [ ( NormalTok , "                blocks[idx][" )+, [ ( NormalTok , "                blocks" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "idx" )+  , ( OperatorTok , "][" )   , ( DecValTok , "1" )-  , ( NormalTok , "].toUpper != c)" )+  , ( OperatorTok , "]" )+  , ( NormalTok , ".toUpper " )+  , ( OperatorTok , "!=" )+  , ( NormalTok , " c" )+  , ( OperatorTok , ")" )   ] , [ ( NormalTok , "                " )   , ( KeywordTok , "continue" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "            indexes[" )+, [ ( NormalTok , "            indexes" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "].swap(idx);" )+  , ( OperatorTok , "]" )+  , ( NormalTok , ".swap" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "idx" )+  , ( OperatorTok , ");" )   ] , [ ( NormalTok , "            " )   , ( KeywordTok , "if" )-  , ( NormalTok , " (inner(indexes[" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "inner" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "indexes" )+  , ( OperatorTok , "[" )   , ( DecValTok , "1" )-  , ( NormalTok , " .. $], w[" )+  , ( NormalTok , " .. $" )+  , ( OperatorTok , "]," )+  , ( NormalTok , " w" )+  , ( OperatorTok , "[" )   , ( DecValTok , "1" )-  , ( NormalTok , " .. $]))" )+  , ( NormalTok , " .. $" )+  , ( OperatorTok , "]))" )   ] , [ ( NormalTok , "                " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( AttributeTok , "true" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "            indexes[" )+, [ ( NormalTok , "            indexes" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "].swap(idx);" )+  , ( OperatorTok , "]" )+  , ( NormalTok , ".swap" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "idx" )+  , ( OperatorTok , ");" )   ]-, [ ( NormalTok , "        }" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "}" ) ] , [] , [ ( NormalTok , "        " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( AttributeTok , "false" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "    }" ) ]+, [ ( NormalTok , "    " ) , ( OperatorTok , "}" ) ] , [] , [ ( NormalTok , "    " )   , ( KeywordTok , "return" )-  , ( NormalTok , " inner(blocks." )+  , ( NormalTok , " inner" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "blocks." )   , ( DataTypeTok , "length" )-  , ( NormalTok , ".iota.array, word);" )+  , ( NormalTok , ".iota.array" )+  , ( OperatorTok , "," )+  , ( NormalTok , " word" )+  , ( OperatorTok , ");" )   ]-, [ ( NormalTok , "}" ) ]+, [ ( OperatorTok , "}" ) ] , []-, [ ( DataTypeTok , "void" ) , ( NormalTok , " main() {" ) ]+, [ ( DataTypeTok , "void" )+  , ( NormalTok , " main" )+  , ( OperatorTok , "()" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )+  ] , [ ( NormalTok , "    " )   , ( WarningTok , "enum" )-  , ( NormalTok , " Block[] blocks = " )+  , ( NormalTok , " Block" )+  , ( OperatorTok , "[]" )+  , ( NormalTok , " blocks " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( StringTok , "\"BO XK DQ CP NA GT RE TG QD FS" )   ] , [ ( StringTok     , "                           JW HU VI AN OB ER FS LY PC ZM\""     )-  , ( NormalTok , ".split;" )+  , ( NormalTok , ".split" )+  , ( OperatorTok , ";" )   ] , [] , [ ( NormalTok , "    " )   , ( KeywordTok , "foreach" )-  , ( NormalTok , " (w; " )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "w" )+  , ( OperatorTok , ";" )+  , ( NormalTok , " " )   , ( StringTok , "\"\"" )-  , ( NormalTok , " ~ " )+  , ( NormalTok , " " )+  , ( OperatorTok , "~" )+  , ( NormalTok , " " )   , ( StringTok , "\"A BARK BoOK TrEAT COmMoN SQUAD conFUsE\"" )-  , ( NormalTok , ".split)" )+  , ( NormalTok , ".split" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "        writefln(" )+, [ ( NormalTok , "        writefln" )+  , ( OperatorTok , "(" )   , ( SpecialStringTok , "`\"%s\" %s`" )-  , ( NormalTok , ", w, blocks.canMakeWord(w));" )+  , ( OperatorTok , "," )+  , ( NormalTok , " w" )+  , ( OperatorTok , "," )+  , ( NormalTok , " blocks.canMakeWord" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "w" )+  , ( OperatorTok , "));" )   ] , [] , [ ( NormalTok , "    " ) , ( CommentTok , "// Extra test." ) ] , [ ( NormalTok , "    " )   , ( FunctionTok , "immutable" )-  , ( NormalTok , " Block[] blocks2 = [" )+  , ( NormalTok , " Block" )+  , ( OperatorTok , "[]" )+  , ( NormalTok , " blocks2 " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )+  , ( OperatorTok , "[" )   , ( StringTok , "\"AB\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"AB\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"AC\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"AC\"" )-  , ( NormalTok , "];" )+  , ( OperatorTok , "];" )   ] , [ ( NormalTok , "    " )   , ( FunctionTok , "immutable" )-  , ( NormalTok , " word = " )+  , ( NormalTok , " word " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( StringTok , "\"abba\"" )-  , ( NormalTok , ";" )+  , ( OperatorTok , ";" )   ]-, [ ( NormalTok , "    writefln(" )+, [ ( NormalTok , "    writefln" )+  , ( OperatorTok , "(" )   , ( SpecialStringTok , "`\"%s\" %s`" )-  , ( NormalTok , ", word, blocks2.canMakeWord(word));" )+  , ( OperatorTok , "," )+  , ( NormalTok , " word" )+  , ( OperatorTok , "," )+  , ( NormalTok , " blocks2.canMakeWord" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "word" )+  , ( OperatorTok , "));" )   ]-, [ ( NormalTok , "}" ) ]+, [ ( OperatorTok , "}" ) ] ]
test/expected/abc.go.native view
@@ -1,153 +1,272 @@ [ [ ( KeywordTok , "package" ) , ( NormalTok , " main" ) ] , []-, [ ( KeywordTok , "import" ) , ( NormalTok , " (" ) ]+, [ ( KeywordTok , "import" )+  , ( NormalTok , " " )+  , ( OperatorTok , "(" )+  ] , [ ( NormalTok , "        " ) , ( StringTok , "\"fmt\"" ) ] , [ ( NormalTok , "        " ) , ( StringTok , "\"strings\"" ) ]-, [ ( NormalTok , ")" ) ]+, [ ( OperatorTok , ")" ) ] , [] , [ ( KeywordTok , "func" )-  , ( NormalTok , " newSpeller(blocks " )+  , ( NormalTok , " newSpeller" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "blocks " )   , ( DataTypeTok , "string" )-  , ( NormalTok , ") " )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )   , ( KeywordTok , "func" )-  , ( NormalTok , "(" )+  , ( OperatorTok , "(" )   , ( DataTypeTok , "string" )-  , ( NormalTok , ") " )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )   , ( DataTypeTok , "bool" )-  , ( NormalTok , " {" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ]-, [ ( NormalTok , "        bl := strings.Fields(blocks)" ) ]+, [ ( NormalTok , "        bl " )+  , ( OperatorTok , ":=" )+  , ( NormalTok , " strings" )+  , ( OperatorTok , "." )+  , ( NormalTok , "Fields" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "blocks" )+  , ( OperatorTok , ")" )+  ] , [ ( NormalTok , "        " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( KeywordTok , "func" )-  , ( NormalTok , "(word " )+  , ( OperatorTok , "(" )+  , ( NormalTok , "word " )   , ( DataTypeTok , "string" )-  , ( NormalTok , ") " )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )   , ( DataTypeTok , "bool" )-  , ( NormalTok , " {" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "                " )   , ( KeywordTok , "return" )-  , ( NormalTok , " r(word, bl)" )+  , ( NormalTok , " r" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "word" )+  , ( OperatorTok , "," )+  , ( NormalTok , " bl" )+  , ( OperatorTok , ")" )   ]-, [ ( NormalTok , "        }" ) ]-, [ ( NormalTok , "}" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "}" ) ]+, [ ( OperatorTok , "}" ) ] , [] , [ ( KeywordTok , "func" )-  , ( NormalTok , " r(word " )+  , ( NormalTok , " r" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "word " )   , ( DataTypeTok , "string" )-  , ( NormalTok , ", bl []" )+  , ( OperatorTok , "," )+  , ( NormalTok , " bl " )+  , ( OperatorTok , "[]" )   , ( DataTypeTok , "string" )-  , ( NormalTok , ") " )+  , ( OperatorTok , ")" )+  , ( NormalTok , " " )   , ( DataTypeTok , "bool" )-  , ( NormalTok , " {" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "        " )   , ( KeywordTok , "if" )-  , ( NormalTok , " word == " )+  , ( NormalTok , " word " )+  , ( OperatorTok , "==" )+  , ( NormalTok , " " )   , ( StringTok , "\"\"" )-  , ( NormalTok , " {" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "                " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( OtherTok , "true" )   ]-, [ ( NormalTok , "        }" ) ]-, [ ( NormalTok , "        c := word[" )+, [ ( NormalTok , "        " ) , ( OperatorTok , "}" ) ]+, [ ( NormalTok , "        c " )+  , ( OperatorTok , ":=" )+  , ( NormalTok , " word" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "] | " )+  , ( OperatorTok , "]" )+  , ( NormalTok , " " )+  , ( OperatorTok , "|" )+  , ( NormalTok , " " )   , ( DecValTok , "32" )   ] , [ ( NormalTok , "        " )   , ( KeywordTok , "for" )-  , ( NormalTok , " i, b := " )+  , ( NormalTok , " i" )+  , ( OperatorTok , "," )+  , ( NormalTok , " b " )+  , ( OperatorTok , ":=" )+  , ( NormalTok , " " )   , ( KeywordTok , "range" )-  , ( NormalTok , " bl {" )+  , ( NormalTok , " bl " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "                " )   , ( KeywordTok , "if" )-  , ( NormalTok , " c == b[" )+  , ( NormalTok , " c " )+  , ( OperatorTok , "==" )+  , ( NormalTok , " b" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "]|" )+  , ( OperatorTok , "]|" )   , ( DecValTok , "32" )-  , ( NormalTok , " || c == b[" )+  , ( NormalTok , " " )+  , ( OperatorTok , "||" )+  , ( NormalTok , " c " )+  , ( OperatorTok , "==" )+  , ( NormalTok , " b" )+  , ( OperatorTok , "[" )   , ( DecValTok , "1" )-  , ( NormalTok , "]|" )+  , ( OperatorTok , "]|" )   , ( DecValTok , "32" )-  , ( NormalTok , " {" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ]-, [ ( NormalTok , "                        bl[i], bl[" )+, [ ( NormalTok , "                        bl" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "i" )+  , ( OperatorTok , "]," )+  , ( NormalTok , " bl" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "] = bl[" )+  , ( OperatorTok , "]" )+  , ( NormalTok , " " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " bl" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "], b" )+  , ( OperatorTok , "]," )+  , ( NormalTok , " b" )   ] , [ ( NormalTok , "                        " )   , ( KeywordTok , "if" )-  , ( NormalTok , " r(word[" )+  , ( NormalTok , " r" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "word" )+  , ( OperatorTok , "[" )   , ( DecValTok , "1" )-  , ( NormalTok , ":], bl[" )+  , ( OperatorTok , ":]," )+  , ( NormalTok , " bl" )+  , ( OperatorTok , "[" )   , ( DecValTok , "1" )-  , ( NormalTok , ":]) == " )+  , ( OperatorTok , ":])" )+  , ( NormalTok , " " )+  , ( OperatorTok , "==" )+  , ( NormalTok , " " )   , ( OtherTok , "true" )-  , ( NormalTok , " {" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "                                " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( OtherTok , "true" )   ]-, [ ( NormalTok , "                        }" ) ]-, [ ( NormalTok , "                        bl[i], bl[" )+, [ ( NormalTok , "                        " )+  , ( OperatorTok , "}" )+  ]+, [ ( NormalTok , "                        bl" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "i" )+  , ( OperatorTok , "]," )+  , ( NormalTok , " bl" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "] = bl[" )+  , ( OperatorTok , "]" )+  , ( NormalTok , " " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " bl" )+  , ( OperatorTok , "[" )   , ( DecValTok , "0" )-  , ( NormalTok , "], bl[i]" )+  , ( OperatorTok , "]," )+  , ( NormalTok , " bl" )+  , ( OperatorTok , "[" )+  , ( NormalTok , "i" )+  , ( OperatorTok , "]" )   ]-, [ ( NormalTok , "                }" ) ]-, [ ( NormalTok , "        }" ) ]+, [ ( NormalTok , "                " ) , ( OperatorTok , "}" ) ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "}" ) ] , [ ( NormalTok , "        " )   , ( KeywordTok , "return" )   , ( NormalTok , " " )   , ( OtherTok , "false" )   ]-, [ ( NormalTok , "}" ) ]+, [ ( OperatorTok , "}" ) ] , []-, [ ( KeywordTok , "func" ) , ( NormalTok , " main() {" ) ]-, [ ( NormalTok , "        sp := newSpeller(" ) ]+, [ ( KeywordTok , "func" )+  , ( NormalTok , " main" )+  , ( OperatorTok , "()" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )+  ]+, [ ( NormalTok , "        sp " )+  , ( OperatorTok , ":=" )+  , ( NormalTok , " newSpeller" )+  , ( OperatorTok , "(" )+  ] , [ ( NormalTok , "                " )   , ( StringTok     , "\"BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM\""     )-  , ( NormalTok , ")" )+  , ( OperatorTok , ")" )   ] , [ ( NormalTok , "        " )   , ( KeywordTok , "for" )-  , ( NormalTok , " _, word := " )+  , ( NormalTok , " _" )+  , ( OperatorTok , "," )+  , ( NormalTok , " word " )+  , ( OperatorTok , ":=" )+  , ( NormalTok , " " )   , ( KeywordTok , "range" )-  , ( NormalTok , " []" )+  , ( NormalTok , " " )+  , ( OperatorTok , "[]" )   , ( DataTypeTok , "string" )-  , ( NormalTok , "{" )+  , ( OperatorTok , "{" )   ] , [ ( NormalTok , "                " )   , ( StringTok , "\"A\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"BARK\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"BOOK\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"TREAT\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"COMMON\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"SQUAD\"" )-  , ( NormalTok , ", " )+  , ( OperatorTok , "," )+  , ( NormalTok , " " )   , ( StringTok , "\"CONFUSE\"" )-  , ( NormalTok , "} {" )+  , ( OperatorTok , "}" )+  , ( NormalTok , " " )+  , ( OperatorTok , "{" )   ]-, [ ( NormalTok , "                fmt.Println(word, sp(word))" ) ]-, [ ( NormalTok , "        }" ) ]-, [ ( NormalTok , "}" ) ]+, [ ( NormalTok , "                fmt" )+  , ( OperatorTok , "." )+  , ( NormalTok , "Println" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "word" )+  , ( OperatorTok , "," )+  , ( NormalTok , " sp" )+  , ( OperatorTok , "(" )+  , ( NormalTok , "word" )+  , ( OperatorTok , "))" )+  ]+, [ ( NormalTok , "        " ) , ( OperatorTok , "}" ) ]+, [ ( OperatorTok , "}" ) ] ]
test/expected/abc.php.native view
@@ -1,9 +1,11 @@ [ [] , [ ( KeywordTok , "<?php" ) ]-, [ ( KeywordTok , "$words" )-  , ( NormalTok , " = " )-  , ( KeywordTok , "array" )-  , ( OtherTok , "(" )+, [ ( VariableTok , "$words" )+  , ( NormalTok , " " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )+  , ( DataTypeTok , "array" )+  , ( NormalTok , "(" )   , ( StringTok , "\"A\"" )   , ( OtherTok , "," )   , ( NormalTok , " " )@@ -23,29 +25,33 @@   , ( OtherTok , "," )   , ( NormalTok , " " )   , ( StringTok , "\"Confuse\"" )-  , ( OtherTok , ");" )+  , ( NormalTok , ")" )+  , ( OtherTok , ";" )   ] , [] , [ ( KeywordTok , "function" )-  , ( NormalTok , " canMakeWord" )-  , ( OtherTok , "(" )-  , ( KeywordTok , "$word" )-  , ( OtherTok , ")" )-  , ( NormalTok , " {" )+  , ( NormalTok , " canMakeWord(" )+  , ( VariableTok , "$word" )+  , ( NormalTok , ") {" )   ] , [ ( NormalTok , "    " )-  , ( KeywordTok , "$word" )-  , ( NormalTok , " = " )+  , ( VariableTok , "$word" )+  , ( NormalTok , " " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )   , ( FunctionTok , "strtoupper" )-  , ( OtherTok , "(" )-  , ( KeywordTok , "$word" )-  , ( OtherTok , ");" )+  , ( NormalTok , "(" )+  , ( VariableTok , "$word" )+  , ( NormalTok , ")" )+  , ( OtherTok , ";" )   ] , [ ( NormalTok , "    " )-  , ( KeywordTok , "$blocks" )-  , ( NormalTok , " = " )-  , ( KeywordTok , "array" )-  , ( OtherTok , "(" )+  , ( VariableTok , "$blocks" )+  , ( NormalTok , " " )+  , ( OperatorTok , "=" )+  , ( NormalTok , " " )+  , ( DataTypeTok , "array" )+  , ( NormalTok , "(" )   ] , [ ( NormalTok , "            " )   , ( StringTok , "\"BO\"" )@@ -111,110 +117,102 @@   , ( StringTok , "\"ZM\"" )   , ( OtherTok , "," )   ]-, [ ( NormalTok , "    " ) , ( OtherTok , ");" ) ]+, [ ( NormalTok , "    )" ) , ( OtherTok , ";" ) ] , [] , [ ( NormalTok , "    " )-  , ( KeywordTok , "foreach" )-  , ( NormalTok , " " )-  , ( OtherTok , "(" )+  , ( ControlFlowTok , "foreach" )+  , ( NormalTok , " (" )   , ( FunctionTok , "str_split" )-  , ( OtherTok , "(" )-  , ( KeywordTok , "$word" )-  , ( OtherTok , ")" )-  , ( NormalTok , " " )+  , ( NormalTok , "(" )+  , ( VariableTok , "$word" )+  , ( NormalTok , ") " )   , ( KeywordTok , "as" )   , ( NormalTok , " " )-  , ( KeywordTok , "$char" )-  , ( OtherTok , ")" )-  , ( NormalTok , " {" )+  , ( VariableTok , "$char" )+  , ( NormalTok , ") {" )   ] , [ ( NormalTok , "        " )-  , ( KeywordTok , "foreach" )-  , ( NormalTok , " " )-  , ( OtherTok , "(" )-  , ( KeywordTok , "$blocks" )+  , ( ControlFlowTok , "foreach" )+  , ( NormalTok , " (" )+  , ( VariableTok , "$blocks" )   , ( NormalTok , " " )   , ( KeywordTok , "as" )   , ( NormalTok , " " )-  , ( KeywordTok , "$k" )+  , ( VariableTok , "$k" )   , ( NormalTok , " => " )-  , ( KeywordTok , "$block" )-  , ( OtherTok , ")" )-  , ( NormalTok , " {" )+  , ( VariableTok , "$block" )+  , ( NormalTok , ") {" )   ] , [ ( NormalTok , "            " )-  , ( KeywordTok , "if" )-  , ( NormalTok , " " )-  , ( OtherTok , "(" )+  , ( ControlFlowTok , "if" )+  , ( NormalTok , " (" )   , ( FunctionTok , "strpos" )-  , ( OtherTok , "(" )-  , ( KeywordTok , "$block" )+  , ( NormalTok , "(" )+  , ( VariableTok , "$block" )   , ( OtherTok , "," )   , ( NormalTok , " " )-  , ( KeywordTok , "$char" )-  , ( OtherTok , ")" )-  , ( NormalTok , " !== " )+  , ( VariableTok , "$char" )+  , ( NormalTok , ") " )+  , ( OperatorTok , "!==" )+  , ( NormalTok , " " )   , ( KeywordTok , "FALSE" )-  , ( OtherTok , ")" )-  , ( NormalTok , " {" )+  , ( NormalTok , ") {" )   ] , [ ( NormalTok , "                " )   , ( KeywordTok , "unset" )-  , ( OtherTok , "(" )-  , ( KeywordTok , "$blocks" )-  , ( OtherTok , "[" )-  , ( KeywordTok , "$k" )-  , ( OtherTok , "]);" )+  , ( NormalTok , "(" )+  , ( VariableTok , "$blocks" )+  , ( NormalTok , "[" )+  , ( VariableTok , "$k" )+  , ( NormalTok , "])" )+  , ( OtherTok , ";" )   ] , [ ( NormalTok , "                " )-  , ( KeywordTok , "continue" )-  , ( OtherTok , "(" )+  , ( ControlFlowTok , "continue" )+  , ( NormalTok , "(" )   , ( DecValTok , "2" )-  , ( OtherTok , ");" )+  , ( NormalTok , ")" )+  , ( OtherTok , ";" )   ] , [ ( NormalTok , "            }" ) ] , [ ( NormalTok , "        }" ) ] , [ ( NormalTok , "        " )-  , ( KeywordTok , "return" )+  , ( ControlFlowTok , "return" )   , ( NormalTok , " " )   , ( KeywordTok , "false" )   , ( OtherTok , ";" )   ] , [ ( NormalTok , "    }" ) ] , [ ( NormalTok , "    " )-  , ( KeywordTok , "return" )+  , ( ControlFlowTok , "return" )   , ( NormalTok , " " )   , ( KeywordTok , "true" )   , ( OtherTok , ";" )   ] , [ ( NormalTok , "}" ) ] , []-, [ ( KeywordTok , "foreach" )-  , ( NormalTok , " " )-  , ( OtherTok , "(" )-  , ( KeywordTok , "$words" )+, [ ( ControlFlowTok , "foreach" )+  , ( NormalTok , " (" )+  , ( VariableTok , "$words" )   , ( NormalTok , " " )   , ( KeywordTok , "as" )   , ( NormalTok , " " )-  , ( KeywordTok , "$word" )-  , ( OtherTok , ")" )-  , ( NormalTok , " {" )+  , ( VariableTok , "$word" )+  , ( NormalTok , ") {" )   ] , [ ( NormalTok , "    " )   , ( KeywordTok , "echo" )   , ( NormalTok , " " )-  , ( KeywordTok , "$word" )-  , ( NormalTok , "." )+  , ( VariableTok , "$word" )+  , ( OperatorTok , "." )   , ( StringTok , "': '" )   , ( OtherTok , ";" )   ] , [ ( NormalTok , "    " )   , ( KeywordTok , "echo" )-  , ( NormalTok , " canMakeWord" )-  , ( OtherTok , "(" )-  , ( KeywordTok , "$word" )-  , ( OtherTok , ")" )-  , ( NormalTok , " " )+  , ( NormalTok , " canMakeWord(" )+  , ( VariableTok , "$word" )+  , ( NormalTok , ") " )   , ( OtherTok , "?" )   , ( NormalTok , " " )   , ( StringTok , "\"True\"" )@@ -228,7 +226,7 @@   , ( KeywordTok , "echo" )   , ( NormalTok , " " )   , ( StringTok , "\"" )-  , ( KeywordTok , "\\r\\n" )+  , ( SpecialCharTok , "\\r\\n" )   , ( StringTok , "\"" )   , ( OtherTok , ";" )   ]
test/test-skylighting.hs view
@@ -151,11 +151,11 @@       , testCase "cpp floats" $ Right            [ [ (FloatTok,"0.1") , (BuiltInTok,"f")]            , [ (FloatTok,"1.0") , (BuiltInTok,"f")]-           , [ (NormalTok,"-") , (FloatTok,"0.1") , (BuiltInTok,"f")]-           , [ (NormalTok,"-") , (FloatTok,"1.0") , (BuiltInTok,"F")]-           , [ (NormalTok,"-") , (FloatTok,"1.0") , (BuiltInTok,"L")]+           , [ (OperatorTok,"-") , (FloatTok,"0.1") , (BuiltInTok,"f")]+           , [ (OperatorTok,"-") , (FloatTok,"1.0") , (BuiltInTok,"F")]+           , [ (OperatorTok,"-") , (FloatTok,"1.0") , (BuiltInTok,"L")]            , [ (FloatTok,"1e3")]-           , [ (NormalTok,"-") , (FloatTok,"15e+3")]+           , [ (OperatorTok,"-") , (FloatTok,"15e+3")]            , [ (FloatTok,"0.") , (BuiltInTok,"f")]            , [ (FloatTok,"1.") , (BuiltInTok,"F")]            , [ (FloatTok,"1.E3")]
xml/actionscript.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="ActionScript 2.0" version="8" kateversion="5.62" section="Sources" extensions="*.as" mimetype="text/x-actionscript" license="LGPL" author="Aaron Miller (armantic101@gmail.com)">+<language name="ActionScript 2.0" version="9" kateversion="5.62" section="Sources" extensions="*.as" mimetype="text/x-actionscript" license="LGPL" author="Aaron Miller (armantic101@gmail.com)">   <highlighting>          <list name="properties">@@ -308,7 +308,7 @@       <itemData name="String"       defStyleNum="dsString"/>       <itemData name="String Char"  defStyleNum="dsSpecialString"/>       <itemData name="Comment"      defStyleNum="dsComment"/>-      <itemData name="Symbol"       defStyleNum="dsNormal"/>+      <itemData name="Symbol"       defStyleNum="dsOperator"/>       <itemData name="Properties"   defStyleNum="dsAttribute" bold="1"/>       <itemData name="Global Functions"   defStyleNum="dsFunction" bold="1"/>       <itemData name="Classes"   defStyleNum="dsBuiltIn" bold="1"/>
xml/ada.xml view
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"> <language name="Ada"-          version="5"+          version="6"           kateversion="5.0"           section="Sources"           extensions="*.adb;*.ads;*.ada;*.a"@@ -189,7 +189,7 @@       <itemData name="Char"        defStyleNum="dsChar" />       <itemData name="String"      defStyleNum="dsString" />       <itemData name="Comment"     defStyleNum="dsComment" />-      <itemData name="Symbol"      defStyleNum="dsNormal"/>+      <itemData name="Symbol"      defStyleNum="dsOperator"/>       <itemData name="Region Marker" defStyleNum="dsRegionMarker" />     </itemDatas>   </highlighting>
xml/asp.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE  language SYSTEM "language.dtd">-<language name="ASP" version="7" kateversion="5.44" section="Markup" extensions="*.asp;" mimetype="text/x-asp-src;text/x-asp-src" author="Antonio Salazar (savedfastcool@gmail.com)" license="LGPL">+<language name="ASP" version="8" kateversion="5.44" section="Markup" extensions="*.asp;" mimetype="text/x-asp-src;text/x-asp-src" author="Antonio Salazar (savedfastcool@gmail.com)" license="LGPL">     <highlighting>         <list name="control structures">             <item>select</item>@@ -246,7 +246,6 @@                 <RegExpr attribute="HTML Tag" context="#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="true" />                 <DetectChar attribute="Comment" context="asp_onelinecomment" char="'" />                 <DetectChar attribute="String" context="doublequotestring" char="&quot;" />-                <DetectChar attribute="String" context="singlequotestring" char="&#39;" />                 <DetectChar attribute="Keyword" context="#stay" char="&amp;" />                 <RegExpr attribute="String" context="#stay" String="[0123456789]*\.\.\.[0123456789]*" />                 <HlCOct attribute="Octal" context="#stay" />
xml/awk.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="AWK" version="5" kateversion="5.0" section="Scripts"+<language name="AWK" version="6" kateversion="5.0" section="Scripts"   extensions="*.awk" mimetype="text/x-awk" indenter="cstyle"   license="LGPL"> <!-- patched by igli#kate@irc:chat.freenode.net -->@@ -271,8 +271,8 @@       <itemData name="Error"    defStyleNum="dsError"/>       <itemData name="Special"  defStyleNum="dsControlFlow" bold="0"/>       <itemData name="Operator" defStyleNum="dsOperator"/>-      <itemData name="Symbol"   defStyleNum="dsNormal"/>-      <itemData name="Separator Symbol" defStyleNum="dsNormal"/>+      <itemData name="Symbol"   defStyleNum="dsOperator"/>+      <itemData name="Separator Symbol" defStyleNum="dsOperator"/>       <itemData name="Regex"    defStyleNum="dsSpecialString" spellChecking="false"/>       <itemData name="Regex Op" defStyleNum="dsOthers"/>       <itemData name="CharClass" defStyleNum="dsExtension" spellChecking="false"/>
xml/bash.xml view
@@ -2,7 +2,7 @@ <!DOCTYPE language SYSTEM "language.dtd" [         <!ENTITY tab      "&#009;">-        <!ENTITY funcname "([^&_fragpathseps;{}=#$]|[+!@](?!\())([^&_fragpathseps;{}=$]*+([+!@](?!\())?+)*+">+        <!ENTITY funcname "([^&_fragpathseps;}=#$]|[+!@](?!\())([^&_fragpathseps;}=$]*+([+!@](?!\())?+)*+">         <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">         <!ENTITY eos      "(?=$|[ &tab;])">                 <!-- eol or space following -->         <!ENTITY eoexpr   "(?=$|[ &tab;&lt;>|&amp;;])">@@ -12,23 +12,25 @@         <!ENTITY wordseps   " &tab;&symbolseps;"> <!-- see man bash -->          <!ENTITY _fragpathseps  "*?+!@&wordseps;&substseps;">-        <!ENTITY _fragpathnosep "(?:[+!@](?!\()|\\.)?+">+        <!ENTITY _fragpathnosep "(?:[+!@](?!\()|\\.|&_brace_noexpansion;)?+">         <!ENTITY path       "(?:[^&_fragpathseps;]*+&_fragpathnosep;)*+">         <!ENTITY fragpath   "(?:[^&_fragpathseps;/]*+&_fragpathnosep;)*+">         <!ENTITY opt        "(?:[^&_fragpathseps;=/]*+&_fragpathnosep;)*+">         <!ENTITY pathpart   "(?:~|\.\.?|&fragpath;)(?:/&path;|(?=[*?]|[+!@]\(|&fragpath;(?:[/*?]|[+!@]\()))|(?:~|\.\.?)(?=[&wordseps;]|$)"> -        <!ENTITY _braceexpansion_spe     " &tab;{}\\`'&quot;$">-        <!ENTITY brace_noexpansion       "\{[^&_braceexpansion_spe;,]*+\}">+        <!ENTITY _braceexpansion_spe     " &tab;&lt;>|&amp;;{}\\`'&quot;$">+        <!ENTITY _brace_noexpansion       "\{[^&_braceexpansion_spe;,]*+\}">         <!ENTITY _braceexpansion_var     "\$(?:\{[^\[\]&_braceexpansion_spe;]*+(?:\[[*@a-zA-Z0-9]\])\})?">         <!ENTITY _braceexpansion_string  "'[^']*'|&quot;([^&quot;\`]*+|`[^`]*`)*+&quot;">-        <!ENTITY _braceexpansion_consume "\\.|`[^`]*`|&_braceexpansion_string;|&_braceexpansion_var;|&brace_noexpansion;|(?R)?+">-        <!ENTITY braceexpansion "{(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_consume;)+?,(?:[^&_braceexpansion_spe;]++|&_braceexpansion_consume;)+?}">+        <!ENTITY _braceexpansion_elems   "\\.|`[^`]*`|&_braceexpansion_string;|&_braceexpansion_var;|&_brace_noexpansion;">+        <!ENTITY _braceexpansion_consume "&_braceexpansion_elems;|{(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_elems;)*?}|(?R)?+">+        <!ENTITY _braceexpansion "(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_consume;)*?,(?:[^&_braceexpansion_spe;]++|&_braceexpansion_consume;)*?}">+        <!ENTITY braceexpansion "{&_braceexpansion;">          <!ENTITY heredocq "(?|&quot;([^&quot;]+)&quot;|'([^']+)'|\\(.[^&wordseps;&substseps;]*))"> ]> -<language name="Bash" version="17" kateversion="5.62" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;*.nix;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">+<language name="Bash" version="24" kateversion="5.62" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;*.nix;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">  <!-- (c) 2004 by Wilbert Berendsen (wilbert@kde.nl)     Changes by Matthew Woehlke (mw_triad@users.sourceforge.net)@@ -71,6 +73,7 @@       <item>command</item>       <item>compgen</item>       <item>complete</item>+      <item>coproc</item>       <item>dirs</item>       <item>disown</item>       <item>echo</item>@@ -492,12 +495,14 @@         <AnyChar context="CommandMaybeRedirection" String="&lt;&gt;0123456789" lookAhead="1"/>          <AnyChar attribute="Error" context="#stay" String=")}"/>++        <LineContinue attribute="Escape" context="#stay"/>       </context>       <context attribute="Normal Text" lineEndContext="#pop" name="MaybeBracketExpression" fallthroughContext="#pop!Command">         <!-- start expression in double brackets -->-        <RegExpr attribute="Keyword" context="ExprDblBracket" String="\[\[(?=$|[ &tab;(])" beginRegion="expression"/>+        <RegExpr attribute="Keyword" context="#pop!ExprDblBracket" String="\[\[(?=$|[ &tab;(])" beginRegion="expression"/>         <!-- start expression in single brackets -->-        <RegExpr attribute="Builtin" context="ExprBracket" String="\[&eos;" beginRegion="expression"/>+        <RegExpr attribute="Builtin" context="#pop!ExprBracket" String="\[&eos;" beginRegion="expression"/>       </context>       <context attribute="Normal Text" lineEndContext="#pop" name="MaybeGroup">         <!-- start a group command with { -->@@ -561,14 +566,13 @@       </context>       <context attribute="OtherCommand" lineEndContext="#pop#pop" name="CommandName">         <DetectSpaces attribute="Normal Text" context="#pop#pop!CommandArgs"/>+        <DetectIdentifier attribute="OtherCommand" context="#stay"/>         <DetectChar context="CommandVariables" char="$" lookAhead="1"/>         <IncludeRules context="FindStrings"/>-        <DetectChar context="#pop#pop" char="`" lookAhead="1"/>         <Detect2Chars attribute="Control" context="#pop#pop" char="&amp;" char1="&amp;"/>         <Detect2Chars attribute="Control" context="#pop#pop" char="|" char1="|"/>         <DetectChar attribute="Control" context="#pop#pop" char="|"/>-        <DetectChar attribute="Control" context="#pop#pop" char=";"/>-        <DetectChar context="#pop#pop" char=")" lookAhead="1"/>+        <AnyChar context="#pop#pop" String=";)`" lookAhead="1"/>         <AnyChar context="#pop#pop!CommandArgs" String="&amp;&lt;>" lookAhead="1"/>         <!-- start expression in double parentheses -->         <Detect2Chars attribute="Error" context="#pop#pop!ExprDblParen" char="(" char1="(" beginRegion="expression"/>@@ -604,9 +608,6 @@         <!-- handle &, |, ;, ` -->         <AnyChar context="#pop" String="&amp;|;`" lookAhead="1"/> -        <!-- handle process subst -->-        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&lt;" char1="("/>-        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&gt;" char1="("/>         <!-- handle redirection -->         <AnyChar context="CommandArgMaybeRedirection" String="&lt;&gt;0123456789" lookAhead="1"/> @@ -626,7 +627,6 @@        <context attribute="Option" lineEndContext="#pop" name="ShortOption" fallthroughContext="#pop">         <DetectChar attribute="Path" context="PathThenPop" char="/"/>-        <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>         <IncludeRules context="LongOption"/>       </context>       <context attribute="Option" lineEndContext="#pop" name="LongOption" fallthroughContext="#pop">@@ -674,6 +674,7 @@         <!-- Only highlighting closed braces. The "BraceExpansion" context corrects              the closure of braces and allows recursive braces (bug #387915). -->         <RegExpr context="#pop!BraceExpansion" String="&braceexpansion;" lookAhead="1"/>+        <RegExpr attribute="Escape" context="#pop!SequenceExpression" String="{(?=([-+]?[0-9]+\.\.[-+]?[0-9]+|[a-zA-Z]\.\.[a-zA-Z])(\.\.[-+]?[0-9]+)?\})"/>       </context>        <!-- FindPathThenPop consumes path -->@@ -701,20 +702,18 @@         <IncludeRules context="IncExtGlob"/>       </context>       <context attribute="Path" lineEndContext="#stay" name="IncExtGlob">-        <DetectChar attribute="Glob" context="#stay" char="|"/>         <Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="?" char1="("/>         <Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="*" char1="("/>         <Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="+" char1="("/>         <Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="@" char1="("/>         <Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="!" char1="("/>-        <AnyChar attribute="Glob" context="#stay" String="?*"/>+        <AnyChar attribute="Glob" context="#stay" String="|?*"/>         <IncludeRules context="FindWord"/>         <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>       </context>       <context attribute="Path" lineEndContext="#pop#pop" name="PathThenPop">         <AnyChar context="#pop#pop" String="&wordseps;`" lookAhead="1"/>         <IncludeRules context="FindWord"/>-        <LineContinue attribute="Escape" context="#stay"/>         <IncludeRules context="FindExtGlobAndPop"/>         <AnyChar attribute="Glob" context="#stay" String="?*"/>         <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>@@ -742,16 +741,19 @@        <context attribute="Normal Text" lineEndContext="#pop" name="VarAssign" fallthroughContext="#pop">         <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>-        <DetectChar attribute="Variable" context="Assign" char="="/>-        <Detect2Chars attribute="Variable" context="Assign" char="+" char1="="/>+        <DetectChar attribute="Operator" context="#pop!Assign" char="="/>+        <Detect2Chars attribute="Operator" context="#pop!Assign" char="+" char1="="/>       </context>        <context attribute="Normal Text" lineEndContext="#pop" name="DispatchKeyword">         <!-- match do and if blocks -->-        <Detect2Chars attribute="Control Flow" context="#pop" char="i" char1="f" beginRegion="if"/>+        <Detect2Chars attribute="Control Flow" context="#pop!NotCond" char="i" char1="f" beginRegion="if"/>         <Detect2Chars attribute="Control Flow" context="#pop" char="f" char1="i" endRegion="if"/>         <StringDetect attribute="Control Flow" context="#pop" String="done" endRegion="do"/>         <Detect2Chars attribute="Control Flow" context="#pop" char="d" char1="o" beginRegion="do"/>+        <!-- handle while/until as a special case -->+        <StringDetect attribute="Control Flow" context="#pop!NotCond" String="while"/>+        <StringDetect attribute="Control Flow" context="#pop!NotCond" String="until"/>         <!-- handle for as a special case -->         <StringDetect attribute="Control Flow" context="#pop!For" String="for"/>         <!-- handle select as a special case -->@@ -767,6 +769,17 @@         <!-- handle keywords -->         <DetectIdentifier attribute="Control Flow" context="#pop"/>       </context>++      <!-- if ! ..., while ! ... and until ! ... -->+      <context attribute="Normal Text" lineEndContext="#pop" name="NotCond" fallthroughContext="#pop">+        <DetectSpaces attribute="Normal Text" context="#pop!NotCond2"/>+      </context>+      <context attribute="Normal Text" lineEndContext="#pop" name="NotCond2" fallthroughContext="#pop">+        <Detect2Chars attribute="Expression" context="#pop" char="!" char1="&tab;"/>+        <Detect2Chars attribute="Expression" context="#pop" char="!" char1=" "/>+        <LineContinue attribute="Expression" context="#pop" char="!"/>+      </context>+       <context attribute="Normal Text" lineEndContext="#pop" name="For" fallthroughContext="#pop">         <LineContinue attribute="Escape" context="#stay"/>         <DetectSpaces attribute="Normal Text" context="#stay"/>@@ -790,6 +803,7 @@         <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1=">"/>         <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="|"/>         <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char=">" char1="&amp;"/>+        <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char=">" char1="("/>         <DetectChar attribute="Redirection" context="#pop!WordRedirection" char=">"/>         <StringDetect attribute="Redirection" context="#pop!StringRedirection" String="&lt;&lt;&lt;"/>         <!-- handle here document -->@@ -797,6 +811,7 @@         <!-- handle input redirection -->         <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char="&lt;" char1="&amp;"/>         <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char="&lt;" char1=">"/>+        <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char="&lt;" char1="("/>         <DetectChar attribute="Redirection" context="#pop!WordRedirection" char="&lt;"/>       </context>       <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection" fallthroughContext="#pop!FdRedirection2">@@ -926,7 +941,8 @@         <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>       </context>       <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQDispatchVariables">-        <IncludeRules context="DispatchVariables"/>+        <IncludeRules context="DispatchSubstVariables"/>+        <IncludeRules context="DispatchVarnameVariables"/>         <DetectChar attribute="String DoubleQ" context="#pop" char="$"/>       </context>       <context attribute="String DoubleQ" lineEndContext="#pop" name="StringDQEscape">@@ -975,16 +991,19 @@        <!-- VarBraceStart is called as soon as ${ is encoutered -->       <context attribute="Variable" lineEndContext="#pop!VarBrace" name="VarBraceStart" fallthroughContext="#pop!VarBrace">-        <DetectChar attribute="Parameter Expansion" context="#pop!VarBracePrefix" char="!"/>-        <DetectChar attribute="Parameter Expansion" context="#pop!VarBrace" char="#"/>+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBracePrefix" char="!"/>+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBrace" char="#"/>       </context>        <!-- VarBracePrefix called as soon as ${! is encoutered -->       <context attribute="Variable" lineEndContext="#pop" name="VarBracePrefix">         <RegExpr attribute="Variable" context="#pop!VarBracePrefixSuffix" String="&varname;"/>       </context>-      <context attribute="Variable" lineEndContext="#pop" name="VarBracePrefixSuffix">-        <DetectChar attribute="Variable" context="#pop" char="}"/>+      <context attribute="Variable" lineEndContext="#pop" name="VarBracePrefixSuffix" fallthroughContext="#pop!VarError">+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>+        <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="@*"/>+        <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[@]"/>+        <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[*]"/>       </context>        <!-- VarBrace is called as soon as ${ or ${# are encoutered -->@@ -1006,14 +1025,14 @@         <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=":" char1="+"/>         <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="#" char1="#"/>         <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="%" char1="%"/>-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="^" char1="^"/>-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="," char1=","/>+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="^" char1="^"/>+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="," char1=","/>         <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarSub" char=":"/>         <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="%"/>         <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="#"/>         <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarSubst" char="/"/>-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="^"/>-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=","/>+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="^"/>+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char=","/>         <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarTransformation" char="@"/>       </context> @@ -1033,13 +1052,20 @@         <DetectChar attribute="Error" context="#pop" char="$"/>       </context> -      <!-- called as soon as ${xxx:- ${xxx:= ${xxx:? ${xxx:+ ${xxx^ ${xxx ${xxx# and ${xxx% are encoutered -->+      <!-- called as soon as ${xxx:- ${xxx:= ${xxx:? ${xxx:+ ${xxx# ${xxx% and ${xxx are encoutered -->       <context attribute="Normal Text" lineEndContext="#stay" name="AlternateValue">         <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>         <IncludeRules context="FindWord"/>         <IncludeRules context="FindPattern"/>       </context> +      <!-- called as soon as ${xxx^ are ${xxx, are encoutered -->+      <context attribute="Pattern" lineEndContext="#stay" name="AlternatePatternValue">+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>+        <IncludeRules context="FindWord"/>+        <IncludeRules context="FindPattern"/>+      </context>+       <!-- called as soon as ${xxx/ is encoutered -->       <context attribute="Normal Text" lineEndContext="#stay" name="VarSubst" fallthroughContext="#pop!VarSubstPat">         <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarSubstPat" String="/#%"/>@@ -1070,14 +1096,19 @@       </context>       <context attribute="Escape" lineEndContext="#pop" name="EscapeMaybeBraceExpansion">         <IncludeRules context="DispatchBraceExpansion"/>-        <RegExpr attribute="Escape" context="#pop" String="&brace_noexpansion;"/>-        <DetectChar attribute="Escape" context="#pop" char="{"/>+        <DetectChar attribute="Escape" context="#pop!BraceExpansion2" char="{"/>       </context>       <context attribute="Escape" lineEndContext="#pop" name="BraceExpansionVariables">         <IncludeRules context="DispatchVariables"/>         <DetectChar attribute="Escape" context="#pop" char="$"/>       </context> +      <context attribute="Normal Text" lineEndContext="#pop" name="SequenceExpression">+        <AnyChar attribute="Decimal" context="#stay" String="0123456789-+"/>+        <Detect2Chars attribute="Escape" context="#stay" char="." char1="."/>+        <DetectChar attribute="Escape" context="#pop" char="}"/>+      </context>+ <!-- ====== These are the contexts that can be branched to ======= -->        <!-- ExprDblParen consumes an expression started in command mode till )) -->@@ -1131,7 +1162,7 @@         <RegExpr attribute="BaseN" context="#pop" String="[0-9a-zA-Z@_]+"/>       </context>       <context attribute="Error" lineEndContext="#pop" name="NumberError" fallthroughContext="#pop">-        <AnyChar attribute="Error" context="NumberError" String="8901234567"/>+        <AnyChar attribute="Error" context="#stay" String="8901234567"/>       </context>        <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable -->@@ -1190,7 +1221,7 @@        <context attribute="Normal Text" lineEndContext="#stay" name="FindExprBracketEnd">         <LineContinue attribute="Escape" context="#stay"/>-        <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[ &tab;;|&amp;&lt;>]))" endRegion="expression"/>+        <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[ &tab;;|&amp;&lt;>)]))" endRegion="expression"/>       </context>        <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary" fallthroughContext="#pop!ExprBracketValue">@@ -1271,7 +1302,7 @@         <LineContinue attribute="Escape" context="#stay"/>         <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="&amp;" char1="&amp;"/>         <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="|" char1="|"/>-        <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[ &tab;;|&amp;]))" endRegion="expression"/>+        <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[ &tab;;|&amp;)]))" endRegion="expression"/>       </context>        <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketRegex">@@ -1300,7 +1331,6 @@         <IncludeRules context="FindStrings"/>         <DetectChar context="RegexDispatchVariables" char="$" lookAhead="1"/>         <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>       </context>       <context attribute="Normal Text" lineEndContext="#stay" name="RegexDispatchVariables">         <IncludeRules context="DispatchVariables"/>@@ -1368,7 +1398,7 @@        <!-- Assign consumes an expression till EOL or whitespace -->       <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthroughContext="#pop!Assign2">-        <DetectChar attribute="Variable" context="AssignArray" char="("/>+        <DetectChar attribute="Variable" context="#pop!AssignArray" char="("/>       </context>       <context attribute="Normal Text" lineEndContext="#pop" name="Assign2" fallthroughContext="#pop">         <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>@@ -1378,6 +1408,7 @@       <!-- AssignArray consumes everything till ), marking assignments -->       <context attribute="Normal Text" lineEndContext="#stay" name="AssignArray" fallthroughContext="NormalOption">         <DetectSpaces attribute="Normal Text" context="#stay"/>+        <DetectChar attribute="Comment" context="Comment" char="#"/>         <DetectChar attribute="Variable" context="#pop!Assign2" char=")"/>         <DetectChar context="AssignArrayKey" char="[" lookAhead="1"/>         <DetectChar attribute="Backquote" context="AssignArrayBackq" char="`"/>@@ -1422,6 +1453,7 @@       <context attribute="Normal Text" lineEndContext="#stay" name="CaseIn" fallthroughContext="CasePattern">         <DetectSpaces attribute="Normal Text" context="#stay"/>         <DetectChar attribute="Keyword" context="CasePattern" char="("/>+        <DetectChar attribute="Comment" context="Comment" char="#"/>       </context>       <context attribute="Pattern" lineEndContext="#stay" name="CasePattern">         <DetectSpaces attribute="Normal Text" context="#stay"/>@@ -1465,7 +1497,7 @@       <itemData name="Variable"       defStyleNum="dsVariable"/>       <itemData name="Expression"     defStyleNum="dsOthers"/>       <itemData name="Function"       defStyleNum="dsFunction"/>-      <itemData name="Pattern"        defStyleNum="dsNormal"/>+      <itemData name="Pattern"        defStyleNum="dsSpecialString"/>       <itemData name="Path"           defStyleNum="dsNormal"/>       <itemData name="Glob"           defStyleNum="dsPreprocessor"/>       <itemData name="Option"         defStyleNum="dsAttribute"/>
xml/bibtex.xml view
@@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd" 	  [-	  <!ENTITY stringVariable   	"[a-zA-Z0-9\-]+">+	  <!ENTITY stringVariable   "[a-zA-Z0-9\-]+"> 	  <!ENTITY fieldFormat    	"[a-zA-Z0-9\-_\.]+"> 	  <!ENTITY latexCmd	  	"\\([a-zA-Z@]+|[^ ])"> 	  <!ENTITY refKeyFormat  	"[a-zA-Z0-9_@\\-\\:]+"> <!--taken from kile 2.0.3--> 	  ]>-<language name="BibTeX" version="2" kateversion="5.0" extensions="*.bib" section="Markup" mimetype="text/x-bib" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL">+<language name="BibTeX" version="3" kateversion="5.0" extensions="*.bib" section="Markup" mimetype="text/x-bib" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL">   <highlighting>     <list name="kw_entry">       <item>@article</item> @@ -61,18 +61,16 @@       </context>        <context name="Field" attribute="Normal Text" lineEndContext="#stay">-	      <RegExpr String="&fieldFormat;" attribute="Field" firstNonSpace="true"/>+          <RegExpr String="&fieldFormat;" attribute="Field" firstNonSpace="true"/> 	      <DetectSpaces/> 	      <DetectChar char="=" context="#stay"/>-	      <DetectSpaces/> 	      <DetectChar char="{" context="CurlyBracket"/> 	      <DetectChar char="}" context="#pop" lookAhead="true"/> 	      <DetectChar char="&quot;"  attribute="Normal Text" context="QuotedText"/> 	      <DetectChar char="," context="#stay"/> 	      <DetectChar char="#" context="#stay"/> <!-- the bibtex string concatenate character -->-	      <RegExpr String="[0-9]+" context="#stay"/>-	      <RegExpr String="&stringVariable;" attribute="String" /> <!-- assume this is a variable created with @String -->-	      <DetectSpaces/>+          <RegExpr String="[0-9]+" context="#stay"/>+          <RegExpr String="&stringVariable;" attribute="String" /> <!-- assume this is a variable created with @String --> 	      <RegExpr String="." attribute="Error" context="#stay"/> <!--this rule catches all errors-->       </context> 
xml/boo.xml view
@@ -2,7 +2,7 @@ <!DOCTYPE language> <!-- Based on Python syntax highlighting v1.99 by Primoz Anzur, Paul Giannaros, Michael Bueker, Per Wigren --> <!-- Also based on boo.lang from gtksourceview -->-<language name="Boo" version="8" kateversion="5.0" section="Sources" extensions="*.boo" mimetype="text/x-boo" casesensitive="1" author="Marc Dassonneville" license="LGPL">+<language name="Boo" version="9" kateversion="5.0" section="Sources" extensions="*.boo" mimetype="text/x-boo" casesensitive="1" author="Marc Dassonneville" license="LGPL"> 	<highlighting> 		<list name="namespace"> 			<item>import</item>@@ -188,7 +188,6 @@ 				<Detect2Chars attribute="Operator" char="|" char1="]" context="#pop" endRegion="qq"/>  				<AnyChar attribute="Operator" String="+*/%|=;!&lt;&gt;!^&amp;~-" context="#stay"/>-				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/> 			</context>  			<context name="parenthesised" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
xml/c.xml view
@@ -10,7 +10,7 @@     <!ENTITY pphash "&ispphash;\s*"> ]> <language name="C" section="Sources"-          version="12" kateversion="5.0"+          version="13" kateversion="5.0"           indenter="cstyle"           extensions="*.c;*.C;*.h"           mimetype="text/x-csrc;text/x-c++src;text/x-chdr"@@ -269,7 +269,7 @@       <itemData name="String"       defStyleNum="dsString"/>       <itemData name="String Char"  defStyleNum="dsSpecialChar"/>       <itemData name="Comment"      defStyleNum="dsComment"/>-      <itemData name="Symbol"       defStyleNum="dsNormal" spellChecking="false"/>+      <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false"/>       <itemData name="Preprocessor" defStyleNum="dsPreprocessor" spellChecking="false"/>       <itemData name="Prep. Lib"    defStyleNum="dsImport" spellChecking="false"/>       <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
xml/cmake.xml view
@@ -16,7 +16,7 @@  <language     name="CMake"-    version="28"+    version="29"     kateversion="5.0"     section="Other"     extensions="CMakeLists.txt;*.cmake;*.cmake.in"@@ -1345,6 +1345,7 @@       <item>CMAKE_ANDROID_STL_TYPE</item>       <item>CMAKE_ANSI_CXXFLAGS</item>       <item>CMAKE_APPBUNDLE_PATH</item>+      <item>CMAKE_APPLE_SILICON_PROCESSOR</item>       <item>CMAKE_AR</item>       <item>CMAKE_ARCHIVE_OUTPUT_DIRECTORY</item>       <item>CMAKE_ARGC</item>@@ -1566,6 +1567,9 @@       <item>CMAKE_INSTALL_UCRT_LIBRARIES</item>       <item>CMAKE_INTERPROCEDURAL_OPTIMIZATION</item>       <item>CMAKE_IOS_INSTALL_COMBINED</item>+      <item>CMAKE_ISPC_HEADER_DIRECTORY</item>+      <item>CMAKE_ISPC_HEADER_SUFFIX</item>+      <item>CMAKE_ISPC_INSTRUCTION_SETS</item>       <item>CMAKE_JOB_POOLS</item>       <item>CMAKE_JOB_POOL_COMPILE</item>       <item>CMAKE_JOB_POOL_LINK</item>@@ -2225,6 +2229,7 @@       <item>CC</item>       <item>CFLAGS</item>       <item>CMAKE_APPBUNDLE_PATH</item>+      <item>CMAKE_APPLE_SILICON_PROCESSOR</item>       <item>CMAKE_BUILD_PARALLEL_LEVEL</item>       <item>CMAKE_CONFIG_TYPE</item>       <item>CMAKE_EXPORT_COMPILE_COMMANDS</item>@@ -2467,6 +2472,9 @@       <item>INTERFACE_SYSTEM_INCLUDE_DIRECTORIES</item>       <item>INTERPROCEDURAL_OPTIMIZATION</item>       <item>IOS_INSTALL_COMBINED</item>+      <item>ISPC_HEADER_DIRECTORY</item>+      <item>ISPC_HEADER_SUFFIX</item>+      <item>ISPC_INSTRUCTION_SETS</item>       <item>JOB_POOL_COMPILE</item>       <item>JOB_POOL_LINK</item>       <item>LABELS</item>
xml/cpp.xml view
@@ -11,7 +11,7 @@ <language     name="C++"     section="Sources"-    version="9"+    version="12"     kateversion="5.0"     indenter="cstyle"     style="C++"@@ -38,6 +38,8 @@     <item>SLOT</item>     <!-- http://doc.qt.io/qt-5/qapplication.html#macros -->     <item>qApp</item>+    <!-- https://doc.qt.io/qt-5/qguiapplication.html#qGuiApp -->+    <item>qGuiApp</item>     <!-- http://doc.qt.io/qt-5/qcoreapplication.html#macros -->     <item>Q_COREAPP_STARTUP_FUNCTION</item>     <item>Q_DECLARE_TR_FUNCTIONS</item>@@ -584,6 +586,8 @@     <item>qmlRegisterUncreatableType</item>     <!-- http://doc.qt.io/qt-5/qextensionmanager.html#related-non-members -->     <item>qt_extension</item>+    <!-- https://doc.qt.io/qt-5/qvariant.html#related-non-members -->+    <item>qvariant_cast</item>     <!-- http://doc.qt.io/qt-5/qdbusargument.html#related-non-members -->     <item>qDBusRegisterMetaType</item>     <item>qdbus_cast</item>@@ -2176,6 +2180,9 @@     <item>QValueAxis</item>     <item>QVariant</item>     <item>QVariantAnimation</item>+    <item>QVariantHash</item>+    <item>QVariantList</item>+    <item>QVariantMap</item>     <item>QVarLengthArray</item>     <item>QVBarModelMapper</item>     <item>QVBoxLayout</item>@@ -2352,6 +2359,11 @@     <item>QTouchEventSequence</item>                      <!-- QTest -->     <item>QStringListIterator</item>     <item>QStringBuilder</item>+    <!-- Helper classes for C++11-only code, where qOverload (requires C++14) can't be used+         https://doc.qt.io/qt-5/qtglobal.html#qOverload -->+    <item>QOverload</item>+    <item>QConstOverload</item>+    <item>QNonConstOverload</item>   </list>    <contexts>
xml/cs.xml view
@@ -1,5 +1,5 @@ <!DOCTYPE language SYSTEM "language.dtd">-<language name="C#" version="9" kateversion="5.0" section="Sources" extensions="*.cs" mimetype="text/x-csharp-src;text/x-csharp-hde" indenter="cstyle" style="C++">+<language name="C#" version="10" kateversion="5.0" section="Sources" extensions="*.cs" mimetype="text/x-csharp-src;text/x-csharp-hde" indenter="cstyle" style="C++">   <highlighting>     <list name="keywords">       <item>abstract</item>@@ -158,7 +158,7 @@       <itemData name="String"       defStyleNum="dsString"/>       <itemData name="String Char"  defStyleNum="dsSpecialChar"/>       <itemData name="Comment"      defStyleNum="dsComment"/>-      <itemData name="Symbol"       defStyleNum="dsNormal"/>+      <itemData name="Symbol"       defStyleNum="dsOperator"/>     </itemDatas>   </highlighting>   <general>
xml/d.xml view
@@ -99,7 +99,7 @@    ======================================================================== --> -<language name="D" version="9" kateversion="5.0" section="Sources" extensions="*.d;*.D;*.di;*.DI;" mimetype="text/x-dsrc" casesensitive="true" author="Diggory Hardy (diggory.hardy@gmail.com), Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm)" license="LGPL">+<language name="D" version="10" kateversion="5.0" section="Sources" extensions="*.d;*.D;*.di;*.DI;" mimetype="text/x-dsrc" casesensitive="true" author="Diggory Hardy (diggory.hardy@gmail.com), Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm)" license="LGPL">   <highlighting>     <!-- User-defined keywords (add identifiers you'd like highlighted here) -->     <list name="userkeywords">@@ -860,7 +860,7 @@     </contexts>     <itemDatas>       <itemData name="Normal Text"    defStyleNum="dsNormal"/>-      <itemData name="Symbol"         defStyleNum="dsNormal"/>+      <itemData name="Symbol"         defStyleNum="dsOperator"/>              <!-- keywords -->       <itemData name="Statement"      defStyleNum="dsKeyword"/>
xml/elm.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Elm" version="6" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">+<language name="Elm" version="7" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">   <highlighting>     <list name="declarations">       <item>type</item>@@ -40,7 +40,6 @@       <context attribute="Normal" lineEndContext="#stay" name="code">         <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="BlockComment" />         <Detect2Chars attribute="Comment" context="comment" char="-" char1="-" />-        <StringDetect attribute="Comment" context="documentation" String="{-|" beginRegion="Documentation" />          <keyword attribute="Keyword"          context="#stay" String="declarations" />         <keyword attribute="Keyword"          context="#stay" String="letExpressions" />@@ -65,8 +64,8 @@         <RegExpr    attribute="Float"   context="#stay" String="\d+\.\d+(e[+-]?\d+)?" insensitive="true" />          <RegExpr    attribute="Char"    context="#stay" String="'(.|\\'|\\n|\\r|\\t|\\&quot;|\\\\|\\u\{(10|0?[0-9])[0-9a-fA-F]{4}\})'" />-        <DetectChar attribute="String"  context="string" char="&quot;" />         <StringDetect attribute="String"     context="multilineString" String="&quot;&quot;&quot;"/>+        <DetectChar attribute="String"  context="string" char="&quot;" />       </context>       <context attribute="Comment" lineEndContext="#pop" name="comment">         <DetectSpaces />@@ -109,10 +108,6 @@         <RegExpr attribute="Name"         context="#stay" String="\b[a-z][\w]*" />         <RegExpr attribute="Type"             context="#stay" String="\b[A-Z][\w]*" />         <DetectChar attribute="Normal" context="#pop" char=")" />-      </context>-      <context attribute="Comment" lineEndContext="#stay" name="documentation">-        <WordDetect attribute="Comment" context="#stay" String="@docs" />-        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Documentation" />       </context>     </contexts> 
xml/email.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Email" version="5" kateversion="5.0" extensions="*.eml;*.email;*.emlx;*.mbox;*.mbx" section="Other" mimetype="message/rfc822" casesensitive="0" author="Volker Krause (vkrause@kde.org)" license="MIT">+<language name="Email" version="6" kateversion="5.0" extensions="*.eml;*.email;*.emlx;*.mbox;*.mbx" section="Other" mimetype="message/rfc822" casesensitive="0" author="Volker Krause (vkrause@kde.org)" license="MIT">     <highlighting>         <list name="header-names">             <item>Authentication-Results:</item>@@ -73,14 +73,20 @@             </context>              <context name="string-context" attribute="String" lineEndContext="#stay">-                <HlCStringChar/>+                <IncludeRules context="quoted-pair"/>                 <DetectChar attribute="String" context="#pop" char="&quot;"/>             </context>              <context name="comment-context" attribute="Comment" lineEndContext="#stay">+                <DetectChar attribute="Comment" context="comment-context" char="("/>                 <DetectChar attribute="Comment" context="#pop" char=")"/>+                <IncludeRules context="quoted-pair"/>             </context> +            <context name="quoted-pair" attribute="Escaped Character" lineEndContext="#stay">+                <RegExpr attribute="Escaped Character" context="#stay" String="\\[\x00-\x7F]"/>+            </context>+             <context name="body-context" attribute="Normal Text" lineEndContext="#stay">                 <RegExpr attribute="Content Boundary" context="#pop!header" String="--[0-9a-zA-Z._=-]{10,}(--)?$" column="0"/>             </context>@@ -92,6 +98,7 @@             <itemData name="String" defStyleNum="dsString" spellChecking="false"/>             <itemData name="Address" defStyleNum="dsVariable" spellChecking="false"/>             <itemData name="Comment" defStyleNum="dsComment" spellChecking="false"/>+            <itemData name="Escaped Character" defStyleNum="dsSpecialChar" spellChecking="false"/>             <itemData name="Content Boundary" defStyleNum="dsRegionMarker" spellChecking="false"/>         </itemDatas>     </highlighting>
xml/fasm.xml view
@@ -8,11 +8,10 @@     <!ENTITY hex "[0-9]&hex_cont;">     <!ENTITY oct_hex "[0-7]&oct_hex_cont;">     <!ENTITY bin_oct_hex "[01]*+(?:&oct_hex_cont;|(?=[byoqh]))">-    <!ENTITY baseN "0x[0-9a-f]*+|&bin_oct_hex;|&oct_hex;|&hex;">      <!ENTITY number "[0-9]*+(?:to[0-9]+|(?=d?))"> ]>-<language name="Intel x86 (FASM)" section="Assembler" version="5" kateversion="5.62" extensions="*.asm;*.inc;*.fasm" mimetype="" author="rCX (rCX12@yahoo.com)" license="GPL">+<language name="Intel x86 (FASM)" section="Assembler" version="6" kateversion="5.62" extensions="*.asm;*.inc;*.fasm" mimetype="" author="rCX (rCX12@yahoo.com)" license="GPL">   <highlighting>     <list name="registers">       <!-- General purpose registers -->@@ -1663,7 +1662,7 @@         <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="x"/>         <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="X"/>         <RegExpr attribute="Float" context="#pop!FloatSuffix" insensitive="1" String="&float;"/>-        <RegExpr attribute="BaseN" context="#pop!BaseSuffix" insensitive="1" String="&baseN;"/>+        <RegExpr attribute="BaseN" context="#pop!BaseSuffix" insensitive="1" String="&bin_oct_hex;|&oct_hex;|&hex;"/>         <RegExpr attribute="Number" context="#pop!NumberSuffix" insensitive="1" String="&number;"/>       </context>       <context name="FloatSuffix" attribute="Float" lineEndContext="#pop" fallthroughContext="#pop!CheckNumberSuffix">
xml/fsharp.xml view
@@ -9,7 +9,7 @@ <!ENTITY ESC    "(\\[ntbr'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- OCaml character code escapes. --> <!ENTITY DEC    "[0-9][0-9_]*">                                     <!-- Decimal digits with underscores. --> ]>-<language name="FSharp" version="8" kateversion="5.0" section="Sources" extensions="*.fs;*.fsi;*.fsx" mimetype="" priority="10" author="Bas Bossink (bas.bossink@gmail.com)" license="LGPL">+<language name="FSharp" version="9" kateversion="5.0" section="Sources" extensions="*.fs;*.fsi;*.fsx" mimetype="" priority="10" author="Bas Bossink (bas.bossink@gmail.com)" license="LGPL">    <highlighting>     <list name="keywords">@@ -256,7 +256,7 @@     <itemDatas>       <itemData name="Normal Text" defStyleNum="dsNormal"/>       <itemData name="Identifier" defStyleNum="dsNormal"/>-      <itemData name="Symbol" defStyleNum="dsNormal"/>+      <itemData name="Symbol" defStyleNum="dsOperator"/>       <itemData name="Keyword"  defStyleNum="dsKeyword"/>       <itemData name="Core Data Type"  defStyleNum="dsDataType"/>       <itemData name="Decimal"  defStyleNum="dsDecVal"/>
xml/glsl.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="GLSL" section="3D" extensions="*.glsl;*.vert;*.vs;*.frag;*.fs;*.geom;*.gs;*.tcs;*.tes" mimetype="text/x-glslsrc" version="7" kateversion="5.0" author="Oliver Richers (o.richers@tu-bs.de)" license="LGPL">+<language name="GLSL" section="3D" extensions="*.glsl;*.vert;*.vs;*.frag;*.fs;*.geom;*.gs;*.tcs;*.tes" mimetype="text/x-glslsrc" version="8" kateversion="5.0" author="Oliver Richers (o.richers@tu-bs.de)" license="LGPL"> 	<highlighting> 		<list name="keywords"> 			<item>break</item>@@ -1198,7 +1198,7 @@ 			<itemData name="Octal"          defStyleNum="dsBaseN"/> 			<itemData name="Hex"            defStyleNum="dsBaseN"/> 			<itemData name="Float"          defStyleNum="dsFloat"/>-			<itemData name="Symbol"         defStyleNum="dsNormal"/>+			<itemData name="Symbol"         defStyleNum="dsOperator"/> 			<itemData name="Preprocessor"   defStyleNum="dsPreprocessor"/> 			<itemData name="Comment"        defStyleNum="dsComment"/> 		</itemDatas>
xml/gnuassembler.xml view
@@ -43,7 +43,7 @@  --> -<language name="GNU Assembler" version="5" kateversion="5.0" section="Assembler" extensions="*.s;*.S" mimetype="text/x-asm" author="John Zaitseff (J.Zaitseff@zap.org.au), Roland Pabel (roland@pabel.name), Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">+<language name="GNU Assembler" version="7" kateversion="5.0" section="Assembler" extensions="*.s;*.S" mimetype="text/x-asm" author="John Zaitseff (J.Zaitseff@zap.org.au), Roland Pabel (roland@pabel.name), Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">   <highlighting>     <list name="keywords">       <item>.abort</item>@@ -235,7 +235,7 @@      <contexts>       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">-        <RegExpr      attribute="Label" context="#stay" String="[_\w\d-]*\s*:" />+        <RegExpr      attribute="Label" context="#stay" String="[\.]?[_\w\d-]*\s*:" />         <keyword      attribute="Keyword" context="#stay" String="keywords"/>         <HlCOct       attribute="Octal" context="#stay" />         <HlCHex       attribute="Hex" context="#stay" />@@ -287,7 +287,7 @@       <itemData name="Char"         defStyleNum="dsChar"     />       <itemData name="String"       defStyleNum="dsString"   />       <itemData name="String Char"  defStyleNum="dsSpecialChar" />-      <itemData name="Symbol"       defStyleNum="dsNormal"   />+      <itemData name="Symbol"       defStyleNum="dsOperator" />       <itemData name="Comment"      defStyleNum="dsComment"  />       <itemData name="Preprocessor" defStyleNum="dsPreprocessor" />     </itemDatas>
xml/go.xml view
@@ -26,7 +26,7 @@ -->  -<language name="Go" version="6" kateversion="5.0" section="Sources" indenter="cstyle" extensions="*.go" author="Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">+<language name="Go" version="7" kateversion="5.0" section="Sources" indenter="cstyle" extensions="*.go" author="Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">     <highlighting>     <list name="keywords"> <!-- Keywords have been taken from The Go Programming Language Specification -> Keywords section -->@@ -162,7 +162,7 @@       <itemData name="Hex"          defStyleNum="dsBaseN" spellChecking="false"/>       <itemData name="Float"        defStyleNum="dsFloat" spellChecking="false"/>       <itemData name="Char"         defStyleNum="dsChar"   spellChecking="false"/>-      <itemData name="Symbol"       defStyleNum="dsNormal" spellChecking="false"/>+      <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false"/>     </itemDatas>     </highlighting>   <general>
xml/haskell.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Haskell" version="16" kateversion="5.53" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">+<language name="Haskell" version="17" kateversion="5.53" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">   <highlighting>   <list name="keywords">     <item>case</item>@@ -484,12 +484,12 @@       <RegExpr    attribute="Octal"   context="#stay" String="0[Oo][0-7]+"/>       <RegExpr    attribute="Hex"     context="#stay" String="0[Xx][0-9A-Fa-f]+"/>       <Int        attribute="Decimal" context="#stay" />-      <DetectChar attribute="Char"    context="char" char="'" />+      <DetectChar attribute="Char"    context="#stay" String="'(\\'|\\[^']+|[^\\\n])'" /> <!-- see https://github.com/jgm/skylighting/pull/40 -->       <DetectChar attribute="String"  context="string" char="&quot;" />        <DetectChar attribute="Function Infix" context="infix" char="`"/>       <Detect2Chars attribute="EnumFromTo" context="#stay" char ="." char1="." />-      <AnyChar      attribute="EnumFromTo" context="#stay" String="‥" />+      <DetectChar attribute="EnumFromTo" context="#stay" char="‥" />        <RegExpr attribute="Normal" context="Hamlet" String="\[[wxs]?hamlet\|" />       <StringDetect attribute="Normal" context="Julius" String="[julius|" />
+ xml/haskell.xml.patch view
@@ -0,0 +1,13 @@+diff --git a/skylighting-core/xml/haskell.xml b/skylighting-core/xml/haskell.xml+index 9c6cf4a..bdb65b5 100644+--- a/skylighting-core/xml/haskell.xml++++ b/skylighting-core/xml/haskell.xml+@@ -484,7 +484,7 @@+       <RegExpr    attribute="Octal"   context="#stay" String="0[Oo][0-7]+"/>+       <RegExpr    attribute="Hex"     context="#stay" String="0[Xx][0-9A-Fa-f]+"/>+       <Int        attribute="Decimal" context="#stay" />+-      <DetectChar attribute="Char"    context="char" char="'" />++      <DetectChar attribute="Char"    context="#stay" String="'(\\'|\\[^']+|[^\\\n])'" /> <!-- see https://github.com/jgm/skylighting/pull/40 -->+       <DetectChar attribute="String"  context="string" char="&quot;" />+ +       <DetectChar attribute="Function Infix" context="infix" char="`"/>
xml/idris.xml view
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"> <!-- Based on haskell.xml and idris.vim (https://github.com/idris-hackers/idris-vim/blob/6bdb44b85406b75e3b3a4fa265deab1dbe8c6ff1/syntax/idris.vim) -->-<language name="Idris" version="5" kateversion="5.0" section="Sources" extensions="*.idr" author="Alexander Shabalin" license="LGPL">+<language name="Idris" version="6" kateversion="5.0" section="Sources" extensions="*.idr" author="Alexander Shabalin" license="LGPL">   <highlighting>   <list name="keywords">     <item>abstract</item>@@ -109,7 +109,6 @@         <DetectChar attribute="String" context="string" char="&quot;" />         <Int attribute="Decimal" context="#stay" />         <RegExpr attribute="Hex" context="#stay" String="0[Xx][0-9A-Fa-f]+"/>-        <RegExpr attribute="Octal" context="#stay" String="0[Xx][0-9A-Fa-f]+"/>         <RegExpr attribute="Float" context="#stay" String="\d+\.\d+([eE][-+]?\d+)?" />         <RegExpr attribute="Type" context="#stay" String="([A-Z][a-zA-Z0-9_]*'*|_\|_)" />         <RegExpr attribute="Normal" context="#stay" String="[a-z][a-zA-Z0-9_]*'*" />@@ -159,7 +158,6 @@     <itemData name="String" defStyleNum="dsString" spellChecking="true" />     <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />     <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false" />-    <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false" />     <itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />     <itemData name="Type" defStyleNum="dsDataType" spellChecking="false" />     <itemData name="MetaVar" defStyleNum="dsOthers" spellChecking="false" />
xml/isocpp.xml view
@@ -24,7 +24,7 @@ <language     name="ISO C++"     section="Sources"-    version="21"+    version="23"     kateversion="5.0"     indenter="cstyle"     style="C++"@@ -410,7 +410,7 @@       </context>        <context name="IntSuffixPattern" attribute="Error" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="NumericSuffixError">-        <RegExpr attribute="Standard Suffix" context="NumericSuffixError" String="[Uu][Ll]{0,2}|[Ll]{0,2}[Uu]?" />+        <RegExpr attribute="Standard Suffix" context="NumericSuffixError" String="([Uu][Ll]{0,2}|[Ll]{0,2}[Uu]?)\b" />         <!-- https://en.cppreference.com/w/cpp/language/user_literal#Standard_library -->         <RegExpr attribute="Standard Classes" context="NumericSuffixError" String="(?:i[fl]?|min|[mun]?s|[hyd])\b" />         <DetectChar attribute="Error" context="#pop!NumericUserSuffixPattern" char="_" lookAhead="true" />@@ -806,8 +806,8 @@       <itemData name="String"             defStyleNum="dsString"    spellChecking="true"  />       <itemData name="String Char"        defStyleNum="dsSpecialChar" spellChecking="false" />       <itemData name="Comment"            defStyleNum="dsComment"   spellChecking="true"  />-      <itemData name="Symbol"             defStyleNum="dsNormal"    spellChecking="false" />-      <itemData name="Separator Symbol"   defStyleNum="dsNormal"    spellChecking="false" />+      <itemData name="Symbol"             defStyleNum="dsOperator"  spellChecking="false" />+      <itemData name="Separator Symbol"   defStyleNum="dsOperator"  spellChecking="false" />       <itemData name="Data Members (m_*)" defStyleNum="dsVariable"  spellChecking="false" />       <itemData name="Globals (g_*)"      defStyleNum="dsVariable"  spellChecking="false" />       <itemData name="Statics (s_*)"      defStyleNum="dsVariable"  spellChecking="false" />
xml/javascript.xml view
@@ -17,7 +17,7 @@    * QML    * CoffeeScript (embedded) -->-<language name="JavaScript" version="17" kateversion="5.53" section="Scripts" extensions="*.js;*.kwinscript;*.julius"+<language name="JavaScript" version="18" kateversion="5.53" section="Scripts" extensions="*.js;*.kwinscript;*.julius"           mimetype="text/x-javascript;application/x-javascript;application/javascript;text/javascript" indenter="cstyle"           author="Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net)" license=""> @@ -1791,7 +1791,6 @@         <RegExpr attribute="Object Member" context="#stay" String="&identifier;(?=\s*\.)" />         <RegExpr attribute="Object Member" context="#pop!NoRegExp" String="&identifier;" />         <IncludeRules context="NoRegExp" />-        <DetectSpaces />          <!-- Generic Functions -->         <keyword attribute="Function Name" context="#pop!NoRegExp" String="functions" />
xml/julia.xml view
@@ -33,7 +33,7 @@   <!ENTITY hex "[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?"> ]> -<language name="Julia" section="Sources" version="9" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">+<language name="Julia" section="Sources" version="10" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">    <highlighting>     <list name="block_begin">@@ -535,7 +535,7 @@         <RegExpr context="_adjoint" attribute="Variable" String="[a-zA-Z]\w*(?=')" />         <RegExpr context="_adjoint" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?(?=')" />         <RegExpr context="_adjoint" attribute="Delimiter" String="[\)\]}](?=')" />-        <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" />+        <!-- <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" /> -->          <!-- If ' is not the adjoint operator, it starts a character or an unterminated char -->         <RegExpr context="#stay" attribute="Char" String="'[^']*(''[^']*)*'(?=[^']|$)" />
xml/latex.xml view
@@ -4,7 +4,7 @@     <!ENTITY bullet "&#xd7;">     <!ENTITY envname "[a-zA-Z]+\*?"> ]>-<language name="LaTeX" version="16" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >+<language name="LaTeX" version="17" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >   <highlighting>     <!-- NOTE: Keywords of kind "\something" do not need a delimiter before "\".          Using a DetectChar rule with lookAhead to detect "\" at the beginning
xml/lilypond.xml view
@@ -43,11 +43,11 @@   <!ENTITY engraver0 "Accidental|Ambitus|Arpeggio|Auto_beam|Axis_group|Balloon|Bar|Bar_number|Beam|Bend|Break_align|Breathing_sign|Chord_name|Chord_tremolo|Clef|Cluster_spanner|Collision|Completion_heads|Custos|Default_bar_line|Dot_column|Dots|Drum_notes|Dynami_align|Dynamic|Episema|Extender|Figured_bass|Figured_bass_position|Fingering|Font_size|Forbid_line_break|Fretboard|Glissando|Grace_beam|Grace|Grace_spacing|Grid_line_span|Grid_point|Grob_pq|Hara_kiri|Horizontal_bracket">   <!ENTITY engraver1 "Hyphen|Instrument_name|Instrument_switch|Key|Laissez_vibrer|Ledger_line|Ligature_bracket|Lyric|Mark|Measure_grouping|Melody|Mensural_ligature|Metronome_mark|Multi_measure_rest|New_dynamic|New_fingering|Note_head_line|Note_heads|Note_name|Note_spacing|Ottava_spanner|Output_property|Page_turn|Paper_column|Parenthesis|Part_combine|Percent_repeat|Phrasing_slur|Piano_pedal_align|Piano_pedal|Pitch_squash|Pitched_trill|Repeat_acknowledge|Repeat_tie|Rest_collision|Rest|Rhythmic_column|Scheme|Script_column|Script|Script_row">   <!ENTITY engraver2 "Separating_line_group|Slash_repeat|Slur|Spacing|Span_arpeggio|Span_bar|Spanner_break_forbid|Staff_collecting|Staff_symbol|Stanza_number_align|Stanza_number|Stem|String_number|Swallow|System_start_delimiter|Tab_harmonic|Tab_note_heads|Tab_staff_symbol|Text|Text_spanner|Tie|Time_signature|Trill_spanner|Tuplet|Tweak|Vaticana_ligature|Vertical_align|Vertically_spaced_contexts|Volta">-  <!ENTITY engravers00 "(&engraver0;)_engraver">-  <!ENTITY engravers01 "(&engraver1;)_engraver">-  <!ENTITY engravers02 "(&engraver2;)_engraver">-  <!ENTITY engravers1 "(&performer;)_performer">-  <!ENTITY engravers2 "(&translator;)_translator">+  <!ENTITY engravers00 "(?:&engraver0;)_engraver">+  <!ENTITY engravers01 "(?:&engraver1;)_engraver">+  <!ENTITY engravers02 "(?:&engraver2;)_engraver">+  <!ENTITY engravers1 "(?:&performer;)_performer">+  <!ENTITY engravers2 "(?:&translator;)_translator">    <!ENTITY schemename "[a-zA-Z#][^\s(){}[\];$&quot;]*">   <!ENTITY schemefunc0 "\b(define|defined\?|define\*(-public)?|define-(\*|builtin-markup-(list-)?command|class|(extra-)?display-method|fonts?|grob-property|ly-syntax(-loc|-simple)?|macro(-public)?|markup-(list-)command|method|module|music-function|post-event-display-method|public(-macro|-toplevel)?|safe-public|span-event-display-method)|defmacro(\*(-public)?)?|lambda\*?|and|or|if|cond|case|let\*?|letrec|begin|do|delay|set!|else|(quasi)?quote|unquote(-splicing)?|(define|let|letrec)-syntax|syntax-rules)(?=($|\s|\)))">@@ -56,7 +56,7 @@ ]> <language name="LilyPond" section="Other"           style="lilypond" indenter="lilypond"-          version="8" kateversion="5.0"+          version="9" kateversion="5.0"           extensions="*.ly;*.LY;*.ily;*.ILY;*.lyi;*.LYI"           mimetype="text/x-lilypond"           author="Wilbert Berendsen (info@wilbertberendsen.nl)" license="LGPL">@@ -1087,11 +1087,11 @@         <DetectChar char="{" attribute="Keyword" context="sectionrules" beginRegion="section"/>         <keyword String="contexts" attribute="Context"/>         <keyword String="deprecatedcontexts" attribute="Deprecated Context"/>-        <RegExpr String="(&quot;?)\b(&engravers00;)\b\1" attribute="Engraver"/>-        <RegExpr String="(&quot;?)\b(&engravers01;)\b\1" attribute="Engraver"/>-        <RegExpr String="(&quot;?)\b(&engravers02;)\b\1" attribute="Engraver"/>-        <RegExpr String="(&quot;?)\b(&engravers1;)\b\1" attribute="Engraver"/>-        <RegExpr String="(&quot;?)\b(&engravers2;)\b\1" attribute="Engraver"/>+        <RegExpr String="(&quot;?)\b(?:&engravers00;)\b\1" attribute="Engraver"/>+        <RegExpr String="(&quot;?)\b(?:&engravers01;)\b\1" attribute="Engraver"/>+        <RegExpr String="(&quot;?)\b(?:&engravers02;)\b\1" attribute="Engraver"/>+        <RegExpr String="(&quot;?)\b(?:&engravers1;)\b\1" attribute="Engraver"/>+        <RegExpr String="(&quot;?)\b(?:&engravers2;)\b\1" attribute="Engraver"/>         <keyword String="layoutobjects" attribute="Layout Object"/>         <keyword String="properties" attribute="Property"/>         <RegExpr String="\b(&headervars;|&papervars;|&layoutvars;)\b" attribute="Variable"/>
xml/makefile.xml view
@@ -12,7 +12,7 @@ <!-- v10 by Peter J. Mello <admin@petermello.net>      Add recognition of POSIX 2013 '::=' operator for variable assignment --> <language name="Makefile" section="Other"-          version="11" kateversion="5.0"+          version="12" kateversion="5.0"           extensions="GNUmakefile;Makefile;makefile;GNUmakefile.*;Makefile.*;makefile.*;*.mk"           mimetype="text/x-makefile" priority="11"           author="Per Wigren (wigren@home.se)" license="">@@ -384,6 +384,8 @@           TODO :[range]         -->         <!--  Modifiers without arguments:-->+        <!-- :Ox  Randomize words in variable. -->+        <Detect2Chars attribute="Builtin" context="#pop!expect}" char="O" char1="x"/>         <!--           :E Replaces each word in the variable with its suffix.           :H Replaces each word in the variable with everything but the last component.@@ -398,8 +400,6 @@         <AnyChar    attribute="Builtin" context="#pop!expect}" String="EHOQRTuLP"/>         <!-- :sh  If the variable is non-empty it is run as a command and the output becomes the new value. -->         <Detect2Chars attribute="Builtin" context="#pop!expect}" char="s" char1="h"/>-        <!-- :Ox  Randomize words in variable. -->-        <Detect2Chars attribute="Builtin" context="#pop!expect}" char="O" char1="x"/>         <!-- :tA  Attempt to convert variable to an absolute path using realpath(3),-->         <Detect2Chars attribute="Builtin" context="#pop!expect}" char="t" char1="A"/>         <!-- :tl  Converts variable to lower-case letters.-->
xml/mediawiki.xml view
@@ -7,7 +7,7 @@   <!ENTITY wikiLinkWithDescription "\[\[[^]|]*\|[^]]*\]\]">   <!ENTITY wikiLinkWithoutDescription "\[\[[^]|]*\]\]"> ]>-<language name="MediaWiki" section="Markup" version="10" kateversion="5.53" extensions="*.mediawiki" mimetype="" license="FDL" >+<language name="MediaWiki" section="Markup" version="11" kateversion="5.53" extensions="*.mediawiki" mimetype="" license="FDL" >   <highlighting>     <contexts>       <context attribute="Normal" lineEndContext="#stay" name="normal" >@@ -82,7 +82,6 @@         <RegExpr String="={6,} *$" context="#pop" attribute="Normal" />         <RegExpr String="={5,5} *$" context="#pop" attribute="Section" />         <RegExpr String="={1,4} *$" context="#pop" attribute="Normal" />-        <RegExpr String="={1,4} *$" context="#pop" attribute="Normal" />         <RegExpr String="=*[^=]+$" context="#pop" attribute="Normal" />       </context>       <context attribute="Section" lineEndContext="#pop" name="Section4" >@@ -484,7 +483,6 @@       <context name="UnderlinedItalic" attribute="ItalicUnderlined" lineEndContext="#pop" >         <IncludeRules context="FindTemplate" />         <Detect2Chars char="'" char1="'" context="#pop" attribute="WikiTag" />-        <StringDetect String="'''" context="ItalicUnderlinedBold" attribute="WikiTag" />         <IncludeRules context="FindWikiLinkBeingItalicUnderlined" />       </context>       <context name="BoldItalicUnderlined" attribute="BoldItalicUnderlined" lineEndContext="#pop" >
xml/metafont.xml view
@@ -6,7 +6,7 @@ -->  <!DOCTYPE language SYSTEM "language.dtd">-<language name="Metapost/Metafont" section="Markup" version="9" kateversion="5.0"+<language name="Metapost/Metafont" section="Markup" version="10" kateversion="5.0" extensions="*.mp;*.mps;*.mpost;*.mf" mimetype="text/x-metapost"  author="Yedvilun (yedvilun@gmail.com)" license="LGPL">   <highlighting>@@ -900,10 +900,9 @@       <!--TeX mode : we just define generic TeX commands-->       <!--syntax from highlighting file latex.xml-->       <context name="TeXMode" attribute="TeX" lineEndContext="#stay">+        <Detect2Chars char="\" char1="(" attribute="Math" context="MathMode" beginRegion="mathMode" />         <DetectChar char="\" attribute="Keyword" context="ContrSeq"/>         <DetectChar char="$" attribute="Math" context="MathMode" beginRegion="mathMode" />--        <Detect2Chars char="\" char1="(" attribute="Math" context="MathMode" beginRegion="mathMode" />         <RegExpr String="\betex\b" insensitive="1" attribute="Identifier" context="#pop" endRegion="TeXblock"/>       </context>       <context name="ContrSeq" attribute="Keyword" lineEndContext="#pop">@@ -926,11 +925,9 @@       <!-- math mode: starting with $ or \( -->       <context name="MathMode" attribute="Math" lineEndContext="#stay">         <Detect2Chars char="$" char1="$" attribute="Error" context="#stay" />+        <Detect2Chars char="\" char1=")" attribute="Math" context="#pop" endRegion="mathMode" />         <DetectChar char="\" attribute="Keyword Mathmode" context="MathContrSeq"/>         <DetectChar char="$" attribute="Math" context="#pop" endRegion="mathMode" />-        <Detect2Chars char="\" char1=")" attribute="Math" context="#pop" endRegion="mathMode" />--        <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />       </context>       <context name="MathContrSeq" attribute="Keyword Mathmode" lineEndContext="#pop">         <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
xml/mustache.xml view
@@ -43,7 +43,7 @@      * v1 [2019-02-10]: Initial version --> -<language name="Mustache/Handlebars (HTML)" version="6" kateversion="5.53"+<language name="Mustache/Handlebars (HTML)" version="7" kateversion="5.53"           section="Markup" priority="1" mimetype=""           extensions="*.mustache;*.handlebars;*.hbs;*.ractive;*.hogan;*.hulk;*.html.mst;*.html.mu;*.html.rac"           author="Nibaldo González (nibgonz@gmail.com), based on the HTML highlighter by Wilbert Berendsen (wilbert@kde.nl)"@@ -277,7 +277,6 @@ 			<StringDetect context="#pop" attribute="Comment" String="--&gt;" endRegion="Comment" /> 			<RegExpr context="#stay" attribute="Error" String="-(?:-(?!-&gt;))+" /> 			<IncludeRules context="MustacheVariables" />-			<DetectSpaces /> 			<IncludeRules context="##Comments" /> 		</context> 
xml/objectivec.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Objective-C" version="6" kateversion="5.0" section="Sources" extensions="*.m;*.h" mimetype="text/x-objc-src;text/x-c-hdr">+<language name="Objective-C" version="7" kateversion="5.0" section="Sources" extensions="*.m;*.h" mimetype="text/x-objc-src;text/x-c-hdr">   <highlighting>     <list name="keywords">       <item>break</item>@@ -121,7 +121,7 @@       <itemData name="String"  defStyleNum="dsString"/>       <itemData name="String Char"  defStyleNum="dsSpecialChar" spellChecking="false"/>       <itemData name="Comment"  defStyleNum="dsComment"/>-      <itemData name="Symbol"  defStyleNum="dsNormal" spellChecking="false"/>+      <itemData name="Symbol"  defStyleNum="dsOperator" spellChecking="false"/>       <itemData name="Preprocessor"  defStyleNum="dsPreprocessor" spellChecking="false"/>       <itemData name="Prep. Lib"  defStyleNum="dsImport" spellChecking="false"/>     </itemDatas>
xml/objectivecpp.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Objective-C++" version="8" kateversion="5.0" section="Sources" extensions="*.mm;*.M;*.h" mimetype="text/x-objcpp-src;text/x-c-hdr" author="Gennady Telegin (gepo@lvk.cs.msu.su">+<language name="Objective-C++" version="10" kateversion="5.0" section="Sources" extensions="*.mm;*.M;*.h" mimetype="text/x-objcpp-src;text/x-c-hdr" author="Gennady Telegin (gepo@lvk.cs.msu.su">   <highlighting>     <list name="keywords">       <item>break</item>@@ -184,8 +184,6 @@          <keyword attribute="Extensions" context="#stay" String="extensions" /> -        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />-        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]{|}~^&#59;"/>       </context> @@ -276,7 +274,7 @@       <itemData name="String"        defStyleNum="dsString"/>       <itemData name="String Char"   defStyleNum="dsSpecialChar" spellChecking="false"/>       <itemData name="Comment"       defStyleNum="dsComment"/>-      <itemData name="Symbol"        defStyleNum="dsNormal" spellChecking="false"/>+      <itemData name="Symbol"        defStyleNum="dsOperator" spellChecking="false"/>       <itemData name="Preprocessor"  defStyleNum="dsPreprocessor" spellChecking="false"/>       <itemData name="Prep. Lib"     defStyleNum="dsImport" spellChecking="false"/>       <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
xml/octave.xml view
@@ -21,7 +21,7 @@ -->  <!-- low priority to let Objective-C win for .m files per default -->-<language name="Octave" version="10" kateversion="5.0" section="Scientific" extensions="*.octave;*.m;*.M" priority="-9" mimetype="text/octave" casesensitive="1" license="GPL" author="Luis Silvestre and Federico Zenith">+<language name="Octave" version="11" kateversion="5.0" section="Scientific" extensions="*.octave;*.m;*.M" priority="-9" mimetype="text/octave" casesensitive="1" license="GPL" author="Luis Silvestre and Federico Zenith">    <highlighting> @@ -2784,8 +2784,8 @@         <Detect2Chars context="#stay" attribute="Operator" char="+" char1="+"/>         <Detect2Chars context="#stay" attribute="Operator" char="-" char1="-"/>         <Detect2Chars context="#stay" attribute="Operator" char="*" char1="*"/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="*"/>         <StringDetect context="#stay" attribute="Operator" String=".**"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="*"/>         <Detect2Chars context="#stay" attribute="Operator" char="." char1="^"/>         <Detect2Chars context="#stay" attribute="Operator" char="." char1="/"/>         <Detect2Chars context="#stay" attribute="Operator" char="." char1="'"/>
xml/opencl.xml view
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"> <language name="OpenCL" section="Sources"-          version="7" kateversion="5.0"+          version="8" kateversion="5.0"           indenter="cstyle"           extensions="*.cl"           mimetype="text/x-clsrc"@@ -242,7 +242,7 @@       <itemData name="String"       defStyleNum="dsString"/>       <itemData name="String Char"  defStyleNum="dsChar"/>       <itemData name="Comment"      defStyleNum="dsComment"/>-      <itemData name="Symbol"       defStyleNum="dsNormal" spellChecking="false"/>+      <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false"/>       <itemData name="Preprocessor" defStyleNum="dsOthers" spellChecking="false"/>       <itemData name="Prep. Lib"    defStyleNum="dsOthers" spellChecking="false"/> <!--,Qt::darkYellow,Qt::yellow,false,false)); -->       <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
xml/perl.xml view
@@ -39,7 +39,7 @@     Enhance tr/// and y/// support. -->-<language name="Perl" version="15" kateversion="5.0" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">+<language name="Perl" version="16" kateversion="5.0" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">   <highlighting>     <list name="keywords">       <item>if</item>@@ -629,7 +629,6 @@         <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=%1)" dynamic="true" />         <RegExpr attribute="Operator" context="#pop#pop" String="%1[cgimosx]*" dynamic="true" endRegion="Pattern" />         <IncludeRules context="regex_pattern_internal_ip" />-        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=\%1)" dynamic="true" />       </context>       <context name="pattern_brace" attribute="Pattern" lineEndContext="#stay">         <RegExpr attribute="Operator" context="#pop#pop" String="\}[cgimosx]*" endRegion="Pattern" />
xml/php.xml view
@@ -70,63 +70,78 @@  --> <!DOCTYPE language SYSTEM "language.dtd" [-  <!ENTITY types "int|integer|bool|boolean|float|double|real|string|array|object">+  <!ENTITY types "integer|bool|boolean|float|double|real|string|array|object">+  <!ENTITY varid "[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*">+  <!ENTITY LNUM  "[0-9]++(_[0-9]++)*+">+  <!ENTITY EXPONENT "[eE][+-]?&LNUM;">+  <!ENTITY float "\b&LNUM;(\.(&LNUM;)?(&EXPONENT;)?|&EXPONENT;)|\.&LNUM;(&EXPONENT;)?"> ]> -<language name="PHP/PHP" indenter="cstyle" version="17" kateversion="5.53" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">+<language name="PHP/PHP" indenter="cstyle" version="19" kateversion="5.53" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">   <highlighting>+     <!-- https://secure.php.net/manual/en/reserved.keywords.php -->     <list name="control structures">       <!-- PHP 5.6 -->+      <item>break</item>       <item>case</item>+      <item>catch</item>+      <item>continue</item>       <item>default</item>-      <item>if</item>+      <item>die</item>+      <item>do</item>       <item>else</item>       <item>elseif</item>-      <item>while</item>-      <item>do</item>-      <item>for</item>-      <item>foreach</item>-      <item>break</item>-      <item>continue</item>-      <item>switch</item>-      <item>return</item>-      <item>require</item>-      <item>include</item>-      <item>endif</item>-      <item>endwhile</item>       <item>endfor</item>       <item>endforeach</item>+      <item>endif</item>       <item>endswitch</item>+      <item>endwhile</item>+      <item>exit</item>+      <item>finally</item>+      <item>for</item>+      <item>foreach</item>+      <item>goto</item>+      <item>if</item>+      <item>return</item>+      <item>switch</item>+      <item>throw</item>+      <item>try</item>+      <item>while</item>+      <item>yield</item>++      <!-- PHP 8.0 -->+      <item>match</item>     </list>      <!-- https://secure.php.net/manual/en/reserved.keywords.php -->+    <list name="operators">+      <item>and</item>+      <item>or</item>+      <item>xor</item>+    </list>++    <!-- https://secure.php.net/manual/en/reserved.keywords.php -->     <!-- https://secure.php.net/manual/en/reserved.other-reserved-words.php -->+    <!-- + self + parent + clone (also reserved) -->     <list name="keywords">       <!-- PHP 5.6 -->       <item>__halt_compiler</item>       <item>abstract</item>-      <item>and</item>-      <item>array</item>       <item>as</item>       <item>callable</item>-      <item>catch</item>       <item>class</item>       <item>clone</item>       <item>const</item>       <item>declare</item>-      <item>die</item>       <item>echo</item>       <item>empty</item>       <item>enddeclare</item>       <item>eval</item>-      <item>exit</item>       <item>extends</item>       <item>final</item>-      <item>finally</item>       <item>function</item>       <item>global</item>-      <item>goto</item>       <item>implements</item>       <item>include</item>       <item>include_once</item>@@ -137,7 +152,6 @@       <item>list</item>       <item>namespace</item>       <item>new</item>-      <item>or</item>       <item>print</item>       <item>private</item>       <item>protected</item>@@ -145,31 +159,42 @@       <item>require</item>       <item>require_once</item>       <item>static</item>-      <item>throw</item>       <item>trait</item>-      <item>try</item>       <item>unset</item>       <item>use</item>       <item>var</item>-      <item>xor</item>-      <item>yield</item> +      <item>parent</item>+      <item>self</item>+       <!-- PHP 7.0 -->-      <item>bool</item>       <item>false</item>+      <item>numeric</item>+      <item>null</item>+      <item>resource</item>+      <item>true</item>++      <!-- PHP 7.4 -->+      <item>fn</item>+    </list>++    <list name="types">+      <!-- PHP 5.6 -->+      <item>array</item>++      <!-- PHP 7.0 -->+      <item>bool</item>       <item>float</item>       <item>int</item>       <item>mixed</item>-      <item>null</item>-      <item>numeric</item>-      <item>object</item>-      <item>resource</item>       <item>string</item>-      <item>true</item>        <!-- PHP 7.1 -->       <item>iterable</item>       <item>void</item>++      <!-- PHP 7.2 -->+      <item>object</item>     </list>      <!-- https://secure.php.net/manual/en/reserved.keywords.php -->@@ -177,7 +202,6 @@     <list name="constants">       <!-- PHP 5.6 (Compile-Time Constants) -->       <item>__CLASS__</item>-      <item>__COMPILER_HALT_OFFSET__</item>       <item>__DIR__</item>       <item>__FILE__</item>       <item>__FUNCTION__</item>@@ -228,13 +252,12 @@       <item>E_USER_ERROR</item>       <item>E_USER_WARNING</item>       <item>E_USER_NOTICE</item>+      <item>E_RECOVERABLE_ERROR</item>       <item>E_DEPRECATED</item>       <item>E_USER_DEPRECATED</item>       <item>E_ALL</item>       <item>E_STRICT</item>-      <item>E_COMPILE_ERROR</item>-      <item>E_COMPILE_WARNING</item>-      <item>E_RECOVERABLE_ERROR</item>+      <item>__COMPILER_HALT_OFFSET__</item>        <!-- PHP 7.0 (Core Pre-Defined Constants) -->       <item>PHP_INT_MIN</item>@@ -246,6 +269,10 @@       <item>PHP_FLOAT_MIN</item>       <item>PHP_FLOAT_MAX</item> +      <!-- PHP 7.4 (Core Pre-Defined Constants) -->+      <item>PHP_WINDOWS_EVENT_CTRL_C</item>+      <item>PHP_WINDOWS_EVENT_CTRL_BREAK</item>+       <!-- Undocumented, badly documented or outdated constants -->       <item>ALT_DIGITS</item>       <item>CIT_CALL_TOSTRING</item>@@ -654,9 +681,12 @@       <item>CRYPT_MD5</item>       <item>CRYPT_SALT_LENGTH</item>       <item>CRYPT_STD_DES</item>+      <item>CRYPT_SHA256</item>+      <item>CRYPT_SHA512</item>       <item>CURLAUTH_ANY</item>       <item>CURLAUTH_ANYSAFE</item>       <item>CURLAUTH_BASIC</item>+      <item>CURLAUTH_BEARER</item>       <item>CURLAUTH_DIGEST</item>       <item>CURLAUTH_GSSAPI</item>       <item>CURLAUTH_GSSNEGOTIATE</item>@@ -747,7 +777,9 @@       <item>CURLFTP_CREATE_DIR_RETRY</item>       <item>CURLHEADER_SEPARATE</item>       <item>CURLHEADER_UNIFIED</item>+      <item>CURLINFO_APPCONNECT_TIME_T</item>       <item>CURLINFO_CONNECT_TIME</item>+      <item>CURLINFO_CONNECT_TIME_T</item>       <item>CURLINFO_CONTENT_LENGTH_DOWNLOAD</item>       <item>CURLINFO_CONTENT_LENGTH_DOWNLOAD_T</item>       <item>CURLINFO_CONTENT_LENGTH_UPLOAD</item>@@ -755,6 +787,7 @@       <item>CURLINFO_CONTENT_TYPE</item>       <item>CURLINFO_EFFECTIVE_URL</item>       <item>CURLINFO_FILETIME</item>+      <item>CURLINFO_FILETIME_T</item>       <item>CURLINFO_HEADER_OUT</item>       <item>CURLINFO_HEADER_SIZE</item>       <item>CURLINFO_HTTP_CODE</item>@@ -762,7 +795,9 @@       <item>CURLINFO_LOCAL_IP</item>       <item>CURLINFO_LOCAL_PORT</item>       <item>CURLINFO_NAMELOOKUP_TIME</item>+      <item>CURLINFO_NAMELOOKUP_TIME_T</item>       <item>CURLINFO_PRETRANSFER_TIME</item>+      <item>CURLINFO_PRETRANSFER_TIME_T</item>       <item>CURLINFO_PRIMARY_IP</item>       <item>CURLINFO_PRIMARY_PORT</item>       <item>CURLINFO_PRIVATE</item>@@ -770,6 +805,7 @@       <item>CURLINFO_PROXY_SSL_VERIFYRESULT</item>       <item>CURLINFO_REDIRECT_COUNT</item>       <item>CURLINFO_REDIRECT_TIME</item>+      <item>CURLINFO_REDIRECT_TIME_T</item>       <item>CURLINFO_REDIRECT_URL</item>       <item>CURLINFO_REQUEST_SIZE</item>       <item>CURLINFO_RESPONSE_CODE</item>@@ -784,7 +820,9 @@       <item>CURLINFO_SPEED_UPLOAD_T</item>       <item>CURLINFO_SSL_VERIFYRESULT</item>       <item>CURLINFO_STARTTRANSFER_TIME</item>+      <item>CURLINFO_STARTTRANSFER_TIME_T</item>       <item>CURLINFO_TOTAL_TIME</item>+      <item>CURLINFO_TOTAL_TIME_T</item>       <item>CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</item>       <item>CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</item>       <item>CURLMOPT_MAXCONNECTS</item>@@ -815,14 +853,17 @@       <item>CURLOPT_COOKIE</item>       <item>CURLOPT_COOKIEFILE</item>       <item>CURLOPT_COOKIEJAR</item>+      <item>CURLOPT_COOKIELIST</item>       <item>CURLOPT_COOKIESESSION</item>       <item>CURLOPT_CRLF</item>       <item>CURLOPT_CUSTOMREQUEST</item>       <item>CURLOPT_DEFAULT_PROTOCOL</item>+      <item>CURLOPT_DISALLOW_USERNAME_IN_URL</item>       <item>CURLOPT_DNS_CACHE_TIMEOUT</item>       <item>CURLOPT_DNS_INTERFACE</item>       <item>CURLOPT_DNS_LOCAL_IP4</item>       <item>CURLOPT_DNS_LOCAL_IP6</item>+      <item>CURLOPT_DNS_SHUFFLE_ADDRESSES</item>       <item>CURLOPT_DNS_USE_GLOBAL_CACHE</item>       <item>CURLOPT_EGDSOCKET</item>       <item>CURLOPT_ENCODING</item>@@ -843,9 +884,12 @@       <item>CURLOPT_FTP_SSL</item>       <item>CURLOPT_FTP_USE_EPRT</item>       <item>CURLOPT_FTP_USE_EPSV</item>+      <item>CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS</item>+      <item>CURLOPT_HAPROXYPROTOCOL</item>       <item>CURLOPT_HEADER</item>       <item>CURLOPT_HEADERFUNCTION</item>       <item>CURLOPT_HEADEROPT</item>+      <item>CURLOPT_HTTP09_ALLOWED</item>       <item>CURLOPT_HTTP200ALIASES</item>       <item>CURLOPT_HTTPAUTH</item>       <item>CURLOPT_HTTPGET</item>@@ -905,6 +949,7 @@       <item>CURLOPT_PROXY_SSL_OPTIONS</item>       <item>CURLOPT_PROXY_SSL_VERIFYHOST</item>       <item>CURLOPT_PROXY_SSL_VERIFYPEER</item>+      <item>CURLOPT_PROXY_TLS13_CIPHERS</item>       <item>CURLOPT_PROXY_TLSAUTH_PASSWORD</item>       <item>CURLOPT_PROXY_TLSAUTH_TYPE</item>       <item>CURLOPT_PROXY_TLSAUTH_USERNAME</item>@@ -925,6 +970,7 @@       <item>CURLOPT_SHARE</item>       <item>CURLOPT_SOCKS5_AUTH</item>       <item>CURLOPT_SSH_AUTH_TYPES</item>+      <item>CURLOPT_SSH_COMPRESSION</item>       <item>CURLOPT_SSH_HOST_PUBLIC_KEY_MD5</item>       <item>CURLOPT_SSH_PRIVATE_KEYFILE</item>       <item>CURLOPT_SSH_PUBLIC_KEYFILE</item>@@ -949,12 +995,17 @@       <item>CURLOPT_STREAM_WEIGHT</item>       <item>CURLOPT_SUPPRESS_CONNECT_HEADERS</item>       <item>CURLOPT_TCP_FASTOPEN</item>+      <item>CURLOPT_TCP_KEEPALIVE</item>+      <item>CURLOPT_TCP_KEEPIDLE</item>+      <item>CURLOPT_TCP_KEEPINTVL</item>       <item>CURLOPT_TCP_NODELAY</item>       <item>CURLOPT_TFTP_NO_OPTIONS</item>       <item>CURLOPT_TIMECONDITION</item>       <item>CURLOPT_TIMEOUT</item>       <item>CURLOPT_TIMEOUT_MS</item>       <item>CURLOPT_TIMEVALUE</item>+      <item>CURLOPT_TIMEVALUE_LARGE</item>+      <item>CURLOPT_TLS13_CIPHERS</item>       <item>CURLOPT_TRANSFERTEXT</item>       <item>CURLOPT_UNIX_SOCKET_PATH</item>       <item>CURLOPT_UNRESTRICTED_AUTH</item>@@ -967,6 +1018,25 @@       <item>CURLOPT_WRITEFUNCTION</item>       <item>CURLOPT_WRITEHEADER</item>       <item>CURLOPT_XOAUTH2_BEARER</item>+      <item>CURLSSH_AUTH_GSSAPI</item>+      <item>CURL_HTTP_VERSION_2_0</item>+      <item>CURL_LOCK_DATA_CONNECT</item>+      <item>CURL_LOCK_DATA_PSL</item>+      <item>CURL_VERSION_ALTSVC</item>+      <item>CURL_VERSION_ASYNCHDNS</item>+      <item>CURL_VERSION_BROTLI</item>+      <item>CURL_VERSION_CONV</item>+      <item>CURL_VERSION_CURLDEBUG</item>+      <item>CURL_VERSION_DEBUG</item>+      <item>CURL_VERSION_GSSAPI</item>+      <item>CURL_VERSION_GSSNEGOTIATE</item>+      <item>CURL_VERSION_IDN</item>+      <item>CURL_VERSION_MULTI_SSL</item>+      <item>CURL_VERSION_NTLM</item>+      <item>CURL_VERSION_NTLM_WB</item>+      <item>CURL_VERSION_SPNEGO</item>+      <item>CURL_VERSION_SSPI</item>+      <item>CURL_VERSION_TLSAUTH_SRP</item>       <item>CURLPAUSE_ALL</item>       <item>CURLPAUSE_CONT</item>       <item>CURLPAUSE_RECV</item>@@ -1428,6 +1498,8 @@       <item>FILTER_FLAG_ENCODE_AMP</item>       <item>FILTER_FLAG_ENCODE_HIGH</item>       <item>FILTER_FLAG_ENCODE_LOW</item>+      <item>FILTER_FLAG_HOSTNAME</item>+      <item>FILTER_FLAG_HOST_REQUIRED</item>       <item>FILTER_FLAG_IPV4</item>       <item>FILTER_FLAG_IPV6</item>       <item>FILTER_FLAG_NONE</item>@@ -1436,12 +1508,15 @@       <item>FILTER_FLAG_NO_RES_RANGE</item>       <item>FILTER_FLAG_PATH_REQUIRED</item>       <item>FILTER_FLAG_QUERY_REQUIRED</item>+      <item>FILTER_FLAG_SCHEME_REQUIRED</item>+      <item>FILTER_FLAG_STRIP_BACKTICK</item>       <item>FILTER_FLAG_STRIP_HIGH</item>       <item>FILTER_FLAG_STRIP_LOW</item>       <item>FILTER_FORCE_ARRAY</item>       <item>FILTER_NULL_ON_FAILURE</item>       <item>FILTER_REQUIRE_ARRAY</item>       <item>FILTER_REQUIRE_SCALAR</item>+      <item>FILTER_SANITIZE_ADD_SLASHES</item>       <item>FILTER_SANITIZE_EMAIL</item>       <item>FILTER_SANITIZE_ENCODED</item>       <item>FILTER_SANITIZE_MAGIC_QUOTES</item>@@ -1453,6 +1528,7 @@       <item>FILTER_SANITIZE_URL</item>       <item>FILTER_UNSAFE_RAW</item>       <item>FILTER_VALIDATE_BOOLEAN</item>+      <item>FILTER_VALIDATE_DOMAIN</item>       <item>FILTER_VALIDATE_EMAIL</item>       <item>FILTER_VALIDATE_FLOAT</item>       <item>FILTER_VALIDATE_INT</item>@@ -1807,6 +1883,7 @@       <item>IMG_COLOR_STYLEDBRUSHED</item>       <item>IMG_COLOR_TILED</item>       <item>IMG_COLOR_TRANSPARENT</item>+      <item>IMG_COLOR_TRANSLATE</item>       <item>IMG_EFFECT_ALPHABLEND</item>       <item>IMG_EFFECT_MULTIPLY</item>       <item>IMG_EFFECT_NORMAL</item>@@ -1824,6 +1901,7 @@       <item>IMG_FILTER_PIXELATE</item>       <item>IMG_FILTER_SELECTIVE_BLUR</item>       <item>IMG_FILTER_SMOOTH</item>+      <item>IMG_FILTER_SCATTER</item>       <item>IMG_FLIP_BOTH</item>       <item>IMG_FLIP_HORIZONTAL</item>       <item>IMG_FLIP_VERTICAL</item>@@ -2320,6 +2398,7 @@       <item>MYSQLI_NUM</item>       <item>MYSQLI_NUM_FLAG</item>       <item>MYSQLI_OPT_CONNECT_TIMEOUT</item>+      <item>MYSQLI_OPT_READ_TIMEOUT</item>       <item>MYSQLI_OPT_INT_AND_FLOAT_NATIVE</item>       <item>MYSQLI_OPT_LOCAL_INFILE</item>       <item>MYSQLI_OPT_NET_CMD_BUFFER_SIZE</item>@@ -3103,21 +3182,32 @@       <item>PGSQL_BAD_RESPONSE</item>       <item>PGSQL_BOTH</item>       <item>PGSQL_COMMAND_OK</item>+      <item>PGSQL_CONNECTION_AUTH_OK</item>+      <item>PGSQL_CONNECTION_AWAITING_RESPONSE</item>       <item>PGSQL_CONNECTION_BAD</item>+      <item>PGSQL_CONNECTION_MADE</item>       <item>PGSQL_CONNECTION_OK</item>+      <item>PGSQL_CONNECTION_SETENV</item>+      <item>PGSQL_CONNECTION_SSL_STARTUP</item>+      <item>PGSQL_CONNECTION_STARTED</item>       <item>PGSQL_CONNECT_ASYNC</item>+      <item>PGSQL_CONNECT_ASYNC</item>       <item>PGSQL_CONNECT_FORCE_NEW</item>       <item>PGSQL_CONV_FORCE_NULL</item>       <item>PGSQL_CONV_IGNORE_DEFAULT</item>       <item>PGSQL_CONV_IGNORE_NOT_NULL</item>       <item>PGSQL_COPY_IN</item>       <item>PGSQL_COPY_OUT</item>+      <item>PGSQL_DIAG_COLUMN_NAME</item>+      <item>PGSQL_DIAG_CONSTRAINT_NAME</item>       <item>PGSQL_DIAG_CONTEXT</item>+      <item>PGSQL_DIAG_DATATYPE_NAME</item>       <item>PGSQL_DIAG_INTERNAL_POSITION</item>       <item>PGSQL_DIAG_INTERNAL_QUERY</item>       <item>PGSQL_DIAG_MESSAGE_DETAIL</item>       <item>PGSQL_DIAG_MESSAGE_HINT</item>       <item>PGSQL_DIAG_MESSAGE_PRIMARY</item>+      <item>PGSQL_DIAG_SCHEMA_NAME</item>       <item>PGSQL_DIAG_SEVERITY</item>       <item>PGSQL_DIAG_SEVERITY_NONLOCALIZED</item>       <item>PGSQL_DIAG_SOURCE_FILE</item>@@ -3125,6 +3215,7 @@       <item>PGSQL_DIAG_SOURCE_LINE</item>       <item>PGSQL_DIAG_SQLSTATE</item>       <item>PGSQL_DIAG_STATEMENT_POSITION</item>+      <item>PGSQL_DIAG_TABLE_NAME</item>       <item>PGSQL_DML_ASYNC</item>       <item>PGSQL_DML_ESCAPE</item>       <item>PGSQL_DML_EXEC</item>@@ -3137,6 +3228,7 @@       <item>PGSQL_FATAL_ERROR</item>       <item>PGSQL_LIBPQ_VERSION</item>       <item>PGSQL_LIBPQ_VERSION_STR</item>+      <item>PGSQL_LIBPQ_VERSION_STR</item>       <item>PGSQL_NONFATAL_ERROR</item>       <item>PGSQL_NOTICE_ALL</item>       <item>PGSQL_NOTICE_CLEAR</item>@@ -5201,31 +5293,17 @@       <item>__get</item>       <item>__invoke</item>       <item>__isset</item>+      <item>__serialize</item>       <item>__set</item>       <item>__set_state</item>       <item>__sleep</item>       <item>__toString</item>+      <item>__unserialize</item>       <item>__unset</item>       <item>__wakeup</item>     </list>      <list name="functions">-      <!-- keyword functions -->-      <item>array</item>-      <item>die</item>-      <item>echo</item>-      <item>empty</item>-      <item>eval</item>-      <item>exit</item>-      <item>include</item>-      <item>include_once</item>-      <item>isset</item>-      <item>list</item>-      <item>print</item>-      <item>require</item>-      <item>require_once</item>-      <item>unset</item>-       <!-- standard functions -->       <item>_</item>       <item>abs</item>@@ -10143,6 +10221,7 @@       <item>xdebug_var_dump</item>     </list> +    <!-- https://www.php.net/manual/en/reserved.variables.php -->     <list name="special-variables">         <item>$GLOBALS</item>         <item>$_COOKIE</item>@@ -10155,6 +10234,7 @@         <item>$_SESSION</item>         <item>$php_errormsg</item>         <item>$this</item>+        <item>$http_response_header</item>     </list>      <list name="predefined-classes">@@ -10832,100 +10912,72 @@      <contexts>       <!-- JGM:  Added fallthrough so it will handle snippets that don't begin with <?php -->-      <context name="start" lineEndContext="#stay" attribute="Normal Text" fallthrough="true" fallthroughContext="phpsource">-        <RegExpr context="phpsource" attribute="Keyword" String="&lt;\?(?:=|php)?" insensitive="true" />+       <context name="start" lineEndContext="#stay" attribute="Normal Text" fallthrough="true" fallthroughContext="phpsource">+        <StringDetect context="phpsource" attribute="Keyword" String="&lt;?php" insensitive="true" />+        <Detect2Chars context="phpsource" attribute="Keyword" char="&lt;" char1="?" />         <Detect2Chars attribute="Keyword" context="#pop" char="?" char1="&gt;" />       </context>       <context name="phpsource" attribute="PHP Text" lineEndContext="#stay">         <DetectSpaces />++        <Detect2Chars attribute="Symbol" context="#stay" char="-" char1=">"/>+        <Detect2Chars attribute="Operator" context="#stay" char="?" char1="?"/>+        <Detect2Chars attribute="Scope Resolution" context="#stay" char=":" char1=":" />+        <DetectChar attribute="Scope Resolution" context="#stay" char="\" />         <Detect2Chars attribute="Keyword" context="#pop" char="?" char1="&gt;" lookAhead="true" />+        <AnyChar attribute="Other" context="#stay" String=";,?:" /> -        <!-- Alternate PHP Block Syntax-          -  http://www.php.net/manual/en/control-structures.alternative-syntax.php-          --          -  We must treat the ternary and case/default statements specially so that the : in those can be-          -  ignored.  Then otherwise we treat the : as a block start, and the 5 different end statements as-          -  a block end.-          --          -  The ternary and case/default switch to a context which short-circuits the : detection and-          -  just pops back to this context instead of starting a block.-          --          -  We can not use case/default as starting a block because they can be terminated by break. return-          -  or not at all, making it impossible to determine where the block should end.-          --          -  Additionally the paamayim nekudotayim (::) must not start a subcontext that is never terminated.-          -->+        <IncludeRules context="FindComment"/> -        <DetectChar attribute="Other" context="ternary" char="?" />-        <RegExpr attribute="Keyword" context="case"  String="(case|default)(\s|:|$)" />-        <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />-        <DetectChar attribute="Normal Text" context="#stay" char=":" beginRegion="Alternate Block" />-        <RegExpr attribute="Control Structures" context="#stay" String="(endif|endwhile|endfor|endforeach|endswitch)\b" endRegion="Alternate Block" />-        <!--/ Alternate PHP Block Syntax -->+        <StringDetect attribute="Operator" context="#stay" String="&lt;=>" />+        <Detect2Chars attribute="Symbol" context="#stay" char="=" char1=">"/>+        <StringDetect context="heredocstart" String="&lt;&lt;&lt;" lookAhead="1" />+        <AnyChar attribute="Operator" context="#stay" String="=&lt;>&amp;|!+-*/%^~"/> -        <DetectChar attribute="Comment" context="onelinecomment" char="#" />-        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>-        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />-        <keyword attribute="Error" context="#stay" String="deprecated"/>-        <keyword attribute="Control Structures" context="#stay" String="control structures" />+        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />+        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />++        <keyword attribute="Control Structures" context="control" String="control structures" lookAhead="1"/>         <keyword attribute="Keyword" context="#stay" String="keywords" />         <keyword attribute="Classes" context="#stay" String="predefined-classes"/>-        <DetectChar attribute="Error" context="#stay" char="@" />         <keyword attribute="Function" context="#stay" String="functions" />         <keyword attribute="Special method" context="#stay" String="special_methods" />         <keyword attribute="Library Constant" context="#stay" String="constants"/>+        <keyword attribute="Operator" context="#stay" String="operators"/>+        <keyword attribute="Types" context="#stay" String="types"/>+        <keyword attribute="Error" context="#stay" String="deprecated"/>         <RegExpr attribute="Constant" context="#stay" String="\b[A-Z_][A-Z_0-9]*\b"/> -        <!-- Type casts -->-        <RegExpr attribute="Types" context="#stay" String="\(\s*(&types;)\s*\)"/>-         <DetectIdentifier />++        <StringDetect attribute="Symbol" context="#stay" String="..." />+        <DetectChar context="dot" char="." lookAhead="1"/>+        <AnyChar context="number" String="0123456789" lookAhead="1"/>++        <keyword attribute="Special Variable" context="#stay" String="special-variables"/>+        <RegExpr attribute="Variable" context="#stay" String="\$+&varid;" />+         <DetectChar attribute="String" context="doublequotestring" char="&quot;" />         <DetectChar attribute="String" context="backquotestring" char="`" />         <DetectChar attribute="String" context="singlequotestring" char="'" />-        <RegExpr attribute="Backslash Code" context="htmlheredoc" String="&lt;&lt;&lt;&quot;((EO)?HTML)&quot;" beginRegion="Heredoc" />-        <RegExpr attribute="Backslash Code" context="cssheredoc" String="&lt;&lt;&lt;&quot;((EO)?CSS)&quot;" beginRegion="Heredoc" />-        <RegExpr attribute="Backslash Code" context="javascriptheredoc" String="&lt;&lt;&lt;&quot;((EO)?JAVASCRIPT)&quot;" beginRegion="Heredoc" />-        <RegExpr attribute="Backslash Code" context="mysqlheredoc" String="&lt;&lt;&lt;&quot;((EO)?MYSQL)&quot;" beginRegion="Heredoc" />-        <RegExpr attribute="Backslash Code" context="heredoc" String="&lt;&lt;&lt;&quot;([A-Za-z_][A-Za-z0-9_]*)&quot;" beginRegion="Heredoc" />-        <RegExpr attribute="Backslash Code" context="htmlheredoc" String="&lt;&lt;&lt;((EO)?HTML)\b" beginRegion="Heredoc" />-        <RegExpr attribute="Backslash Code" context="cssheredoc" String="&lt;&lt;&lt;((EO)?CSS)\b" beginRegion="Heredoc" />-        <RegExpr attribute="Backslash Code" context="javascriptheredoc" String="&lt;&lt;&lt;((EO)?JAVASCRIPT)\b" beginRegion="Heredoc" />-        <RegExpr attribute="Backslash Code" context="mysqlheredoc" String="&lt;&lt;&lt;((EO)?MYSQL)\b" beginRegion="Heredoc" />-        <RegExpr attribute="Backslash Code" context="heredoc" String="&lt;&lt;&lt;([A-Za-z_][A-Za-z0-9_]*)" beginRegion="Heredoc" />-        <RegExpr attribute="Backslash Code" context="htmlnowdoc" String="&lt;&lt;&lt;'((EO)?HTML)'" beginRegion="Nowdoc" />-        <RegExpr attribute="Backslash Code" context="cssnowdoc" String="&lt;&lt;&lt;'((EO)?CSS)'" beginRegion="Nowdoc" />-        <RegExpr attribute="Backslash Code" context="javascriptnowdoc" String="&lt;&lt;&lt;'((EO)?JAVASCRIPT)'" beginRegion="Nowdoc" />-        <RegExpr attribute="Backslash Code" context="mysqlnowdoc" String="&lt;&lt;&lt;'((EO)?MYSQL)'" beginRegion="Nowdoc" />-        <RegExpr attribute="Backslash Code" context="nowdoc" String="&lt;&lt;&lt;'([A-Za-z_][A-Za-z0-9_]*)'" beginRegion="Nowdoc" />-        <keyword attribute="Special Variable" context="#stay" String="special-variables"/>-        <RegExpr attribute="Variable" context="#stay" String="\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" />-        <RegExpr attribute="String" context="#stay" String="[0123456789]*\.\.\.[0123456789]*" />-        <RegExpr attribute="Binary" context="#stay" String="0[bB][01]+" />-        <HlCOct attribute="Octal" context="#stay" />-        <HlCHex attribute="Hex" context="#stay" />-        <Float attribute="Float" context="#stay" />-        <Int attribute="Decimal" context="#stay" />-        <DetectChar attribute="Normal Text" context="#stay" char="{" beginRegion="Brace1" />-        <DetectChar attribute="Normal Text" context="#stay" char="}" endRegion="Brace1" />-        <AnyChar attribute="Other" context="#stay" String=";(),[]" />-      </context> -      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">-        <IncludeRules context="##Doxygen" />-        <Detect2Chars attribute="Comment" context="#pop!onelinecomment" char="/" char1="/" />-        <Detect2Chars attribute="Comment" context="#pop!twolinecomment" char="/" char1="*" beginRegion="Comment" />+        <DetectChar attribute="Error Control Operator" context="#stay" char="@" />++        <!-- Type casts -->+        <RegExpr attribute="Cast" context="#stay" String="\(\s*(&types;)\s*\)" insensitive="true"/>+        <AnyChar attribute="Symbol" context="#stay" String="()[]"/>       </context> -      <context name="ternary" attribute="PHP Text" lineEndContext="#stay">-        <!-- the paamayim nekudotayim (::) must not start a subcontext that is never terminated. -->-        <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />-        <DetectChar attribute="Other" char=":" context="#pop" />-        <IncludeRules context="phpsource" />+      <context name="FindComment" attribute="PHP Text" lineEndContext="#pop">+        <DetectChar attribute="Comment" context="onelinecomment" char="#" />+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />       </context> -      <context name="case" attribute="PHP Text" lineEndContext="#stay">-        <IncludeRules context="ternary" />+      <context name="MatchComment" attribute="PHP Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+        <IncludeRules context="##Doxygen" />+        <Detect2Chars attribute="Comment" context="#pop!onelinecomment" char="/" char1="/" />+        <Detect2Chars attribute="Comment" context="#pop!twolinecomment" char="/" char1="*" beginRegion="Comment" />       </context>        <context name="onelinecomment" attribute="Comment" lineEndContext="#pop">@@ -10938,116 +10990,244 @@         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />         <IncludeRules context="##Comments" />       </context>-      <context name="doublebackquotestringcommon" attribute="String" lineEndContext="#stay">-        <!-- Common rules for double quoted strings and backticks (execution operator) URL:-              http://de3.php.net/manual/en/language.types.string.php#language.types.string.syntax.double -->-        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="\" />-        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="n" />-        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="r" />-        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="t" />-        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="v" />-        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="f" />-        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="$" />-        <RegExpr attribute="Backslash Code" context="#stay" String="\\[0-7]{1,3}" />-        <RegExpr attribute="Backslash Code" context="#stay" String="\\x[0-9A-Fa-f]{1,2}" />-        <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*" />-        <RegExpr attribute="Variable" context="#stay" String="\$\{[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*\}" />-        <RegExpr attribute="Variable" context="#stay" String="\{\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[([0-9]*|&quot;[^&quot;]*&quot;|\$[a-zA-Z]*)|'[^']*'|\])*(-&gt;[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*(\[([0-9]*|&quot;[a-zA-Z_]*&quot;)|'[a-zA-Z_]*'|\]|\[.*\])*)*\}" />++      <context name="doublestringvariablecommon" attribute="String" lineEndContext="#stay">+        <keyword attribute="Special Variable" context="dqaftervarname" String="special-variables"/>+        <RegExpr attribute="Variable" context="dqaftervarname" String="\$&varid;" />+        <Detect2Chars attribute="Variable" context="dqcomplexvariable" char="{" char1="$" lookAhead="1"/>+        <Detect2Chars attribute="Variable" context="dqvarnamebrace" char="$" char1="{" lookAhead="1"/>       </context>++      <!--+        $var->xxx+        $var[-1]+        $var[1]+        $var[ident]++        $var[$ident]+             ^_ error+      -->+      <context name="dqaftervarname" attribute="String" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+        <DetectChar attribute="Symbol" context="#pop!dqarray" char="["/>+        <Detect2Chars context="#pop!dqobject" char="-" char1=">" lookAhead="1"/>+      </context>+      <context name="dqarray" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">+        <DetectIdentifier attribute="String" context="#pop!dqarrayclose"/>+        <Int attribute="Decimal" context="#pop!dqarrayclose"/>+        <DetectChar attribute="Operator" context="#stay" char="-"/>+        <keyword attribute="Special Variable" context="#pop!dqarrayclose" String="special-variables"/>+        <RegExpr attribute="Variable" context="#pop!dqarrayclose" String="\$&varid;"/>+        <IncludeRules context="finddqarraycharerror"/>+      </context>+      <context name="dqarrayclose" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">+        <DetectChar attribute="Symbol" context="#pop" char="]"/>+        <IncludeRules context="finddqarraycharerror"/>+      </context>+      <context name="dqobject" attribute="String" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+        <RegExpr attribute="Symbol" context="#pop!dqobjectmem" String="->(?=&varid;)"/>+      </context>+      <context name="dqobjectmem" attribute="Variable" lineEndContext="#pop">+        <DetectIdentifier attribute="PHP Text" context="#pop"/>+      </context>+      <context name="finddqarraycharerror" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">+        <RegExpr attribute="Error" context="#pop" String="[^&quot;`]"/>+      </context>++      <context name="dqcomplexvariable" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!finddqarraycharerror">+        <DetectChar attribute="Symbol" context="#stay" char="{"/>+        <DetectChar attribute="Variable" context="#pop!dqcomplexvariable2" char="$"/>+      </context>+      <context name="dqcomplexvariable2" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!finddqarraycharerror">+        <DetectIdentifier attribute="Variable" context="#pop!dqaftercomplexvariable"/>+        <DetectChar attribute="Variable" context="#stay" char="$"/>+        <IncludeRules context="finddqarraycharerror"/>+      </context>+      <context name="dqaftercomplexvariable" attribute="PHP Text" lineEndContext="#stay">+        <DetectChar attribute="Symbol" context="#pop" char="}"/>+        <DetectChar attribute="Symbol" context="dqaftercomplexvariable" char="{"/>+        <IncludeRules context="phpsource"/>+      </context>++      <context name="dqvarnamebrace" attribute="Variable" lineEndContext="#stay">+        <DetectChar attribute="Symbol" context="#pop!dqcomplexvariable2" char="{"/>+        <DetectChar attribute="Variable" context="#stay" char="$"/>+      </context>+       <context name="backquotestring" attribute="String" lineEndContext="#stay">-        <IncludeRules context="doublebackquotestringcommon" />-        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="`" />+        <DetectChar context="backquotestringescaped" char="\" lookAhead="1"/>+        <IncludeRules context="doublestringvariablecommon"/>         <DetectChar attribute="String" context="#pop" char="`" />       </context>+      <context name="backquotestringescaped" attribute="String" lineEndContext="#stay">+        <!-- Common rules for double quoted strings and backticks (execution operator) URL:+              https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double -->+        <RegExpr attribute="Backslash Code" context="#pop" String="\\([\\nrtvef$`]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u\{[0-9A-Fa-f]+\})"/>+        <DetectChar attribute="String" context="#pop" char="\"/>+      </context>+       <context name="doublequotestring" attribute="String" lineEndContext="#stay">-        <IncludeRules context="doublebackquotestringcommon" />-        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="&quot;" />+        <DetectChar context="doublequotestringescaped" char="\" lookAhead="1"/>+        <IncludeRules context="doublestringvariablecommon"/>         <DetectChar attribute="String" context="#pop" char="&quot;" />       </context>+      <context name="doublequotestringescaped" attribute="String" lineEndContext="#stay">+        <!-- Common rules for double quoted strings and backticks (execution operator) URL:+              https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double -->+        <RegExpr attribute="Backslash Code" context="#pop" String="\\([\\nrtvef$&quot;]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u\{[0-9A-Fa-f]+\})"/>+        <DetectChar attribute="String" context="#pop" char="\"/>+      </context>+       <context name="singlequotestring" attribute="String" lineEndContext="#stay">         <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="'" />         <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="\" />         <DetectChar attribute="String" context="#pop" char="'" />       </context>++      <context name="heredocstart" attribute="Normal Text" lineEndContext="#pop">+        <RegExpr attribute="Heredoc" context="htmlheredoc" String="&lt;&lt;&lt;(?|&quot;((?:EO)?HTML)&quot;|((?:EO)?HTML)\b)" beginRegion="Heredoc" />+        <RegExpr attribute="Heredoc" context="cssheredoc" String="&lt;&lt;&lt;(?|&quot;((?:EO)?CSS)&quot;|((?:EO)?CSS)\b)" beginRegion="Heredoc" />+        <RegExpr attribute="Heredoc" context="javascriptheredoc" String="&lt;&lt;&lt;(?|&quot;((?:EO)?JAVASCRIPT)&quot;|((?:EO)?JAVASCRIPT)\b)" beginRegion="Heredoc" />+        <RegExpr attribute="Heredoc" context="mysqlheredoc" String="&lt;&lt;&lt;(?|&quot;((?:EO)?MYSQL)&quot;|((?:EO)?MYSQL)\b)" beginRegion="Heredoc" />+        <RegExpr attribute="Heredoc" context="heredoc" String="&lt;&lt;&lt;(?|&quot;([A-Za-z_][A-Za-z0-9_]*)&quot;|([A-Za-z_][A-Za-z0-9_]*))" beginRegion="Heredoc" />+        <RegExpr attribute="Nowdoc" context="htmlnowdoc" String="&lt;&lt;&lt;'((?:EO)?HTML)'" beginRegion="Nowdoc" />+        <RegExpr attribute="Nowdoc" context="cssnowdoc" String="&lt;&lt;&lt;'((?:EO)?CSS)'" beginRegion="Nowdoc" />+        <RegExpr attribute="Nowdoc" context="javascriptnowdoc" String="&lt;&lt;&lt;'((?:EO)?JAVASCRIPT)'" beginRegion="Nowdoc" />+        <RegExpr attribute="Nowdoc" context="mysqlnowdoc" String="&lt;&lt;&lt;'((?:EO)?MYSQL)'" beginRegion="Nowdoc" />+        <RegExpr attribute="Nowdoc" context="nowdoc" String="&lt;&lt;&lt;'([A-Za-z_][A-Za-z0-9_]*)'" beginRegion="Nowdoc" />+        <StringDetect attribute="Error" context="#pop" String="&lt;&lt;&lt;" />+      </context>+       <context name="htmlheredoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Heredoc" column="0" />-        <IncludeRules context="commonheredoc" />+        <IncludeRules context="heredoc" />         <IncludeRules context="##HTML" />       </context>       <context name="cssheredoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Heredoc" column="0" />-        <IncludeRules context="commonheredoc" />+        <IncludeRules context="heredoc" />         <IncludeRules context="##CSS" />       </context>       <context name="mysqlheredoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Heredoc" column="0" />-        <IncludeRules context="commonheredoc" />+        <IncludeRules context="heredoc" />         <IncludeRules context="##SQL (MySQL)" />       </context>       <context name="javascriptheredoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Heredoc" column="0" />-        <IncludeRules context="commonheredoc" />+        <IncludeRules context="heredoc" />         <IncludeRules context="Normal##JavaScript" />       </context>       <context name="heredoc" attribute="String" lineEndContext="#stay" dynamic="true">-        <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Heredoc" column="0" />-        <IncludeRules context="commonheredoc" />-      </context>-      <context name="commonheredoc" attribute="String" lineEndContext="#stay">-        <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*" />-        <RegExpr attribute="Variable" context="#stay" String="\$\{[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*\}" />-        <RegExpr attribute="Variable" context="#stay" String="\{\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[([0-9]*|&quot;[a-zA-Z_]*&quot;)|'[a-zA-Z_]*'|\])*(-&gt;[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*(\[([0-9]*|&quot;[a-zA-Z_]*&quot;)|'[a-zA-Z_]*'|\])*)*\}" />+        <IncludeRules context="doublestringvariablecommon" />+        <RegExpr attribute="Heredoc" context="#pop" String="^%1(?=;?$)" dynamic="true" endRegion="Heredoc" column="0" />       </context>+       <context name="htmlnowdoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Nowdoc" column="0" />-        <IncludeRules context="commonnowdoc" />+        <IncludeRules context="nowdoc" />         <IncludeRules context="##HTML" />       </context>       <context name="cssnowdoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Nowdoc" column="0" />-        <IncludeRules context="commonnowdoc" />+        <IncludeRules context="nowdoc" />         <IncludeRules context="##CSS" />       </context>       <context name="mysqlnowdoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Nowdoc" column="0" />-        <IncludeRules context="commonnowdoc" />+        <IncludeRules context="nowdoc" />         <IncludeRules context="##SQL (MySQL)" />       </context>       <context name="javascriptnowdoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Nowdoc" column="0" />-        <IncludeRules context="commonnowdoc" />+        <IncludeRules context="nowdoc" />         <IncludeRules context="Normal##JavaScript" />       </context>       <context name="nowdoc" attribute="String" lineEndContext="#stay" dynamic="true">-        <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Nowdoc" column="0" />-        <IncludeRules context="commonnowdoc" />+        <RegExpr attribute="Nowdoc" context="#pop" String="^%1(?=;?$)" dynamic="true" endRegion="Nowdoc" column="0" />       </context>-      <context name="commonnowdoc" attribute="String" lineEndContext="#stay">++      <context name="number" attribute="PHP Text" lineEndContext="#stay">+        <IncludeRules context="findfloat"/>+        <RegExpr attribute="Hex" context="#pop" String="\b0[xX][0-9a-fA-F]++(_[0-9a-fA-F]++)*+\b"/>+        <RegExpr attribute="Binary" context="#pop" String="\b0[bB][01]++(_[01]++)*+\b"/>+        <RegExpr attribute="Octal" context="#pop" String="\b0_*+[0-7]++(_[0-7]++)*+\b"/>+        <RegExpr attribute="Decimal" context="#pop" String="\b(0|[1-9][0-9]*+(_[0-9]++)*+)\b"/>+        <AnyChar attribute="Error" context="#pop" String="0123456789"/>       </context>+      <context name="findfloat" attribute="PHP Text" lineEndContext="#stay">+        <RegExpr attribute="Float" context="#pop" String="&float;"/>+      </context>++      <context name="dot" attribute="PHP Text" lineEndContext="#stay">+        <IncludeRules context="findfloat"/>+        <DetectChar attribute="Operator" context="#pop" char="."/>+      </context>++      <context name="control" attribute="Control Structures" lineEndContext="#stay">+        <StringDetect attribute="Control Structures" context="#pop!yield" String="yield"/>+        <!-- Alternate PHP Block Syntax+          -  http://www.php.net/manual/en/control-structures.alternative-syntax.php+        -->+        <Detect2Chars attribute="Control Structures" context="#pop!MaybeAlternateBlock" char="i" char1="f"/>+        <StringDetect attribute="Control Structures" context="#pop!MaybeAlternateBlock" String="switch"/>+        <StringDetect attribute="Control Structures" context="#pop!MaybeAlternateBlock" String="foreach"/>+        <StringDetect attribute="Control Structures" context="#pop!MaybeAlternateBlock" String="for"/>+        <StringDetect attribute="Control Structures" context="#pop!MaybeAlternateBlock" String="while"/>+        <!-- end statements as a block end -->+        <StringDetect attribute="Control Structures" context="#pop!AlternateBlockEnd" String="end" lookAhead="1"/>+        <!--/ Alternate PHP Block Syntax -->+        <DetectIdentifier attribute="Control Structures" context="#pop"/>+      </context>+      <context name="yield" attribute="PHP Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">+        <DetectSpaces attribute="PHP Text" context="#stay"/>+        <WordDetect attribute="Control Structures" context="#pop" String="from"/>+      </context>+      <context name="AlternateBlockEnd" attribute="Control Structures" lineEndContext="#stay">+        <DetectIdentifier attribute="Control Structures" context="#pop" endRegion="Alternate Block"/>+      </context>++      <context name="MaybeAlternateBlock" attribute="PHP Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">+        <DetectChar attribute="Symbol" context="#pop!MaybeAlternateBlockOpen" char="("/>+        <DetectSpaces attribute="PHP Text"/>+        <IncludeRules context="FindComment"/>+      </context>+      <context name="MaybeAlternateBlockOpen" attribute="PHP Text" lineEndContext="#stay">+        <DetectChar attribute="Symbol" context="ParenOpen" char="("/>+        <DetectChar attribute="Symbol" context="#pop!MaybeAlternateBlockClose" char=")"/>+        <IncludeRules context="phpsource"/>+      </context>+      <context name="ParenOpen" attribute="PHP Text" lineEndContext="#stay">+        <DetectChar attribute="Symbol" context="ParenOpen" char="("/>+        <DetectChar attribute="Symbol" context="#pop" char=")"/>+        <IncludeRules context="phpsource"/>+      </context>+      <context name="MaybeAlternateBlockClose" attribute="PHP Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+        <DetectChar attribute="Other" context="#pop" char=":" beginRegion="Alternate Block"/>+        <DetectSpaces attribute="PHP Text"/>+      </context>+     </contexts>     <itemDatas>       <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false" />       <itemData name="PHP Text" defStyleNum="dsNormal" spellChecking="false" />       <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />-      <itemData name="Classes" defStyleNum="dsKeyword" spellChecking="false" />+      <itemData name="Classes" defStyleNum="dsBuiltIn" spellChecking="false" />       <itemData name="Function" defStyleNum="dsFunction" spellChecking="false" />-      <itemData name="Special method" defStyleNum="dsFunction" spellChecking="false" />+      <itemData name="Special method" defStyleNum="dsBuiltIn" spellChecking="false" />       <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />       <itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false" />       <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false" />       <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false" />       <itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />       <itemData name="String" defStyleNum="dsString" />+      <itemData name="Heredoc" defStyleNum="dsSpecialString" />+      <itemData name="Nowdoc" defStyleNum="dsVerbatimString" />       <itemData name="Comment" defStyleNum="dsComment" />-      <itemData name="Special Variable" defStyleNum="dsKeyword" color="#5555FF" selColor="#ffffff" bold="1" italic="0" spellChecking="false" />-      <itemData name="Variable" defStyleNum="dsKeyword" color="#5555FF" selColor="#ffffff" bold="0" italic="0" spellChecking="false" />-      <itemData name="Library Constant" defStyleNum="dsKeyword" bold="1" spellChecking="false" />-      <itemData name="Constant" defStyleNum="dsKeyword" bold="0" spellChecking="false" />-      <itemData name="Control Structures" defStyleNum="dsKeyword" color="#A1A100" selColor="#ffffff" bold="0" italic="0" spellChecking="false" />-      <itemData name="Backslash Code" defStyleNum="dsKeyword" color="#0F0F8F" selColor="#ffffff" bold="1" italic="0" spellChecking="false" />+      <itemData name="Special Variable" defStyleNum="dsVariable" bold="1" spellChecking="false" />+      <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false" />+      <itemData name="Library Constant" defStyleNum="dsConstant" bold="1" spellChecking="false" />+      <itemData name="Constant" defStyleNum="dsConstant" spellChecking="false" />+      <itemData name="Control Structures" defStyleNum="dsControlFlow" spellChecking="false" />+      <itemData name="Backslash Code" defStyleNum="dsSpecialChar" spellChecking="false" />+      <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false" />+      <itemData name="Symbol" defStyleNum="dsNormal" spellChecking="false" />+      <itemData name="Scope Resolution" defStyleNum="dsNormal" spellChecking="false" />       <itemData name="Other" defStyleNum="dsOthers" spellChecking="false" />-       <itemData name="Types" defStyleNum="dsDataType" spellChecking="false" />+      <itemData name="Cast" defStyleNum="dsDataType" spellChecking="false" />+      <itemData name="Error Control Operator" defStyleNum="dsPreprocessor" spellChecking="false" />       <itemData name="Error" defStyleNum="dsError" spellChecking="false" />     </itemDatas>   </highlighting>
xml/php.xml.patch view
@@ -1,11 +1,14 @@---- a/xml/php.xml-+++ b/xml/php.xml-@@ -5412,6 +5412,7 @@+diff --git a/skylighting-core/xml/php.xml b/skylighting-core/xml/php.xml+index 063bb96..87a1fdd 100644+--- a/skylighting-core/xml/php.xml++++ b/skylighting-core/xml/php.xml+@@ -10911,7 +10911,8 @@      </list>        <contexts>-+      <!-- JGM:  Added fallthrough so it will handle snippets that don't begin with <?php -->-+      <context name="start" lineEndContext="#stay" attribute="Normal Text" fallthrough="true" fallthroughContext="phpsource"> -      <context name="start" lineEndContext="#stay" attribute="Normal Text">-         <RegExpr context="phpsource" attribute="Keyword" String="&lt;\?(?:=|php)?" insensitive="true" />-         <StringDetect attribute="Keyword" context="#pop" String="?&gt;" />++      <!-- JGM:  Added fallthrough so it will handle snippets that don't begin with <?php -->++       <context name="start" lineEndContext="#stay" attribute="Normal Text" fallthrough="true" fallthroughContext="phpsource">+         <StringDetect context="phpsource" attribute="Keyword" String="&lt;?php" insensitive="true" />+         <Detect2Chars context="phpsource" attribute="Keyword" char="&lt;" char1="?" />+         <Detect2Chars attribute="Keyword" context="#pop" char="?" char1="&gt;" />
xml/powershell.xml view
@@ -1,7 +1,7 @@ <!DOCTYPE language SYSTEM "language.dtd"> <language   name="PowerShell"-  version="9"+  version="10"   kateversion="5.0"   extensions="*.ps1;*.psm1;*.psd1"   section="Scripts"@@ -929,7 +929,7 @@       <itemData name="HereString"       defStyleNum="dsVerbatimString"/>       <itemData name="Comment"      defStyleNum="dsComment"/>       <itemData name="Cmdlets"      defStyleNum="dsBuiltIn" spellChecking="false"/>-      <itemData name="Symbol"       defStyleNum="dsNormal" spellChecking="false"/>+      <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false"/>       <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>       <itemData name="Special Variable" defStyleNum="dsVariable" bold="1" spellChecking="false"/>     </itemDatas>
xml/prolog.xml view
@@ -101,11 +101,11 @@     <!ENTITY comma	",">     <!ENTITY cut        "!">     <!ENTITY bar        "|">-    <!ENTITY tab	"	">+    <!ENTITY tab	"&#x9;">     <!ENTITY bs         "\"> ]> <language name="Prolog" section="Sources"-	  version="13" kateversion="5.62"+	  version="14" kateversion="5.62" 	  mimetype="text/x-prolog" 	  extensions="*.prolog;*.dcg;*.pro" 	  author="Torsten Eichstädt (torsten.eichstaedt@web.de)"
xml/purebasic.xml view
@@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="PureBasic" version="9" kateversion="5.0" section="Sources" extensions="*.pb;*.pbi" mimetype="text/x-purebasic" author="Alexander Clay (Tuireann@EpicBasic.org);Sven Langenkamp (ace@kylixforum.de)" license="LGPL" priority="1" >+<language name="PureBasic" version="10" kateversion="5.0" section="Sources" extensions="*.pb;*.pbi" mimetype="text/x-purebasic" author="Alexander Clay (Tuireann@EpicBasic.org);Sven Langenkamp (ace@kylixforum.de)" license="LGPL" priority="1" >   <highlighting>     <list name="keywords">       <item>Break</item>@@ -1744,7 +1744,7 @@     </contexts>     <itemDatas>       <itemData name="Normal Text" defStyleNum="dsNormal"/>-      <itemData name="Operator" defStyleNum="dsNormal"/>+      <itemData name="Operator" defStyleNum="dsOperator"/>       <itemData name="Separator" defStyleNum="dsNormal"/>       <itemData name="Keyword" defStyleNum="dsKeyword"/>       <itemData name="Debug Keyword" defStyleNum="dsKeyword"/>
+ xml/raku.xml view
@@ -0,0 +1,1782 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language SYSTEM "language.dtd"+[+  <!--+  identifier:+    Alphabetic characters include characters with the Unicode General Category value Letter (L), and the underscore _.+    Alphanumeric characters additionally include characters with the Unicode General Category value Number, Decimal Digit (Nd).+  -->+  <!-- Large values -->+  <!ENTITY _rangealphabetic "A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\x{2c1}\x{2C6}-\x{2D1}\x{2E0}-\x{2EE}\x{370}-\x{588}\x{5d0}-\x{17dc}\x{1820}-\x{1aa7}\x{1b05}-\x{2139}\x{2c00}-\x{31ff}\x{3400}\x{4db5}\x{4db5}\x{4e00}-\x{ac00}\x{d7a3}-\x{d7fb}\x{f900}-\x{FD3D}\x{FF64}\x{100fa}\x{10000}-\x{100fa}\x{10280}-\x{20000}\x{2a6d6}-\x{2fa1d}">+  <!ENTITY rangealphabetic "_&_rangealphabetic;">+  <!ENTITY rangenumeric "0-9">+  <!ENTITY alphabetic "[&rangealphabetic;]">+  <!ENTITY numeric "[&rangenumeric;]">+  <!ENTITY alnum "[&rangealphabetic;&rangenumeric;]">+  <!ENTITY ident "(?:&alphabetic;(?:&alnum;+|[-']&alphabetic;)*)">++  <!ENTITY prefixdollarvarname "(?:[&rangealphabetic;0-9/!]|\(\))">+  <!ENTITY dollarvarname "(?:&ident;|[0-9]+|[/!]|\(\))">+  <!ENTITY twigils "*?!.&lt;^:=~">++  <!ENTITY podfmt "BCEIKLMNPRTUVXZ">+  <!ENTITY allnopodfmt "(?:[^&podfmt;]+|[&podfmt;](?![&lt;«]))+">+  <!ENTITY allnopodfmt1 "(?:[^&podfmt;&lt;>]+|[&podfmt;](&lt;(?:&lt;*(?=&lt;))|(?![&lt;«])))+">+  <!ENTITY allnopodfmt2 "(?:[^&podfmt;«»]+|[&podfmt;](?![&lt;«]))+">+  <!ENTITY allnopodfmt3 "(?:[^&podfmt;&lt;>]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+">++  <!ENTITY quotingform_q "(?:q?(?::?[xsahfcb]|:?ww?|:(?:v|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)|)(?::[xsahfcbv]|ww?|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)*)">+  <!ENTITY quotingform_q_assert "(?:\s+(?=\()|\s*(?=[^()>」\]}a-zA-Z0-9]|$))">+  <!ENTITY quotingconstruct "q&quotingform_q;&quotingform_q_assert;">++  <!ENTITY int10 "(?:[0-9]+(?:_[0-9]+)*)">+  <!ENTITY intN "(?:[0-9a-zA-Z]+(?:_[0-9a-zA-Z]+)*)">++  <!-- <!ENTITY operators "(?:\b(?:X[*~]|Z=|xx=)|\((?:[&lt;>][+=]|[-&amp;+.&lt;>|^]|cont|elem)\)|\+[&amp;+&lt;=>^|]?|~[&amp;&lt;>^|~]?|\.(?::&lt;[^>]+>|\.\.?\^?|[=?^*+.])?|\^(?:fff?\b|\.\.)?\^?|(?:[?…]|f?ff)\^|\[[*+]\]|=(?:==?|=>>?|>|~=)?|&lt;(?:&lt;==|=[=>]?)?|\*\*=?|\?[?|]?|!(?:[=]|eqv\b)?|&#37;&#37;?|&amp;&amp;?|//?|\|\|?|>=?|-[-=]?|::|[−∈∉∋∌∘∩∪≅≠≤≥≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖×÷∖*…])"> -->+  <!-- <!ENTITY hyperoperators "(?:[«»]|&lt;&lt;|&gt;&gt;)"> -->+  <!ENTITY safesymboloperators "−∈∉∋∌∘∩∪≅≠≤≥≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖×÷∖*…?.+-/=!~&amp;|^&#37;">+  <!ENTITY unsafesymboloperators "&lt;>«»">+  <!ENTITY symboloperators "&safesymboloperators;&unsafesymboloperators;">+  <!ENTITY bracehyperoperator "(?:\[[^\s]+\]|\([^\s]+\))">+  <!ENTITY prefixoperator "R?(?:[XZ]|xx)?">+  <!ENTITY extrasymboloperators "(?:\^fff?\b\^?|\bf?ff\^|\((?:[&lt;>][+=]|[-&amp;+.&lt;>|^]|cont|elem)\))">+  <!ENTITY hyperoperators1 "[«»]&prefixoperator;(?:&amp;&ident;|[&safesymboloperators;&lt;>]+|&bracehyperoperator;)[«»]">+  <!ENTITY hyperoperators2 "(?:&lt;&lt;|&gt;&gt;)&prefixoperator;(?:&amp;&ident;|[&safesymboloperators;«»]+|&bracehyperoperator;)(?:&lt;&lt;|&gt;&gt;)">+  <!ENTITY hyperoperators "&hyperoperators1;|&hyperoperators2;">+  <!ENTITY startstringasoperator "&prefixoperator;&lt;[&symboloperators;]*(?=\s|$)">+  <!ENTITY funcoperator "\[\[\&amp;&ident;\]\]">+  <!ENTITY reductionoperator "\[&prefixoperator;[&symboloperators;]+\]">+  <!ENTITY innerbraceoperator "[&symboloperators;'&quot;]+">+  <!ENTITY operators "&prefixoperator;(?:(?:[&safesymboloperators;>]|&extrasymboloperators;)[&symboloperators;]*|\(&innerbraceoperator;\)|\[&innerbraceoperator;\]|&lt;[&safesymboloperators;'&quot;]+>)">++  <!-- <!ENTITY regadverb "(?!\()\s*(?::\w+\s*)*(?=[^\w\s])"> -->+  <!ENTITY regadverb "(?!\()\s*(?=[^\w\s])">+]>+<language name="Raku" version="8" kateversion="5.53" section="Scripts" extensions="*.raku;*.rakumod;*.rakudoc;*.rakutest;*.pl6;*.PL6;*.p6;*.pm6;*.pod6" priority="6" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">+  <highlighting>++    <list name="pod">+      <item>begin</item>+      <item>end</item>+      <item>finish</item>+      <item>for</item>+      <include>podtypename</include>+    </list>++    <list name="podblocktypename">+      <item>pod</item>+      <include>podtypename</include>+    </list>++    <list name="podvalue">+      <item>True</item>+      <item>False</item>+    </list>++    <list name="podtypename">+      <item>head1</item>+      <item>head2</item>+      <item>head3</item>+      <item>head4</item>+      <item>head5</item>+      <item>head6</item>+      <item>item</item>+      <item>item1</item>+      <item>item2</item>+      <item>item3</item>+      <item>item4</item>+      <item>item5</item>+      <item>item6</item>+      <item>para</item>+      <item>code</item>+      <item>defn</item>+      <item>comment</item>+      <item>table</item>+      <item>input</item>+      <item>output</item>+    </list>++    <list name="quoting">+      <item>exec</item>+      <item>words</item>+      <item>quotewords</item>+      <item>scalar</item>+      <item>array</item>+      <item>hash</item>+      <item>function</item>+      <item>closure</item>+      <item>backslash</item>+      <item>heredoc</item>+      <item>val</item>+    </list>++    <list name="declareRoutine">+      <item>macro</item>+      <item>sub</item>+      <item>submethod</item>+      <item>method</item>+      <item>multi</item>+      <item>proto</item>+      <item>only</item>+      <item>category</item>+    </list>++    <list name="regexKeyword">+      <item>rule</item>+      <item>token</item>+      <item>regex</item>+    </list>++    <list name="value">+      <include>podvalue</include>+      <item>self</item>+    </list>++    <list name="varStorage">+      <item>let</item>+      <item>my</item>+      <item>our</item>+      <item>state</item>+      <item>temp</item>+      <item>has</item>+      <item>constant</item>+    </list>++    <list name="controlFlow">+      <!-- conditional -->+      <item>if</item>+      <item>else</item>+      <item>elsif</item>+      <item>unless</item>+      <!-- repeat -->+      <item>for</item>+      <item>loop</item>+      <item>repeat</item>+      <item>while</item>+      <item>until</item>+      <item>gather</item>+      <item>given</item>+      <!-- control flow -->+      <item>take</item>+      <item>do</item>+      <item>when</item>+      <item>next</item>+      <item>last</item>+      <item>redo</item>+      <item>return</item>+      <item>contend</item>+      <item>maybe</item>+      <item>defer</item>+      <item>default</item>+      <item>exit</item>+      <item>make</item>+      <item>continue</item>+      <item>break</item>+      <item>goto</item>+      <item>leave</item>+      <item>async</item>+      <item>lift</item>+      <!-- exception -->+      <item>die</item>+      <item>fail</item>+      <item>try</item>+      <item>warn</item>+    </list>++    <list name="keyword">+      <!-- include -->+      <item>no</item>+      <item>use</item>+      <item>require</item>+      <!-- typeConstraint -->+      <item>is</item>+      <item>as</item>+      <item>but</item>+      <item>trusts</item>+      <item>of</item>+      <item>returns</item>+      <item>handles</item>+      <item>where</item>+      <item>augment</item>+      <item>supersede</item>+      <!-- module -->+      <item>module</item>+      <item>class</item>+      <item>role</item>+      <item>package</item>+      <item>enum</item>+      <item>grammar</item>+      <item>slang</item>+      <item>subset</item>+      <!-- closure trait -->+      <item>BEGIN</item>+      <item>CHECK</item>+      <item>INIT</item>+      <item>START</item>+      <item>FIRST</item>+      <item>ENTER</item>+      <item>LEAVE</item>+      <item>KEEP</item>+      <item>UNDO</item>+      <item>NEXT</item>+      <item>LAST</item>+      <item>PRE</item>+      <item>POST</item>+      <item>END</item>+      <item>CATCH</item>+      <item>CONTROL</item>+      <item>TEMP</item>+    </list>++    <list name="property">+      <item>prec</item>+      <item>irs</item>+      <item>ofs</item>+      <item>ors</item>+      <item>export</item>+      <item>deep</item>+      <item>binary</item>+      <item>unary</item>+      <item>reparsed</item>+      <item>rw</item>+      <item>parsed</item>+      <item>cached</item>+      <item>readonly</item>+      <item>defequiv</item>+      <item>will</item>+      <item>ref</item>+      <item>copy</item>+      <item>inline</item>+      <item>tighter</item>+      <item>looser</item>+      <item>equiv</item>+      <item>assoc</item>+      <item>required</item>+    </list>++    <list name="isProperty">+      <include>property</include>+      <item>signature</item>+      <item>context</item>+      <item>also</item>+      <item>shape</item>+    </list>++    <list name="Number">+      <item>NaN</item>+      <item>Inf</item>+    </list>++    <list name="type">+      <item>Object</item>+      <item>Any</item>+      <item>Junction</item>+      <item>Whatever</item>+      <item>Capture</item>+      <item>Match</item>+      <item>Signature</item>+      <item>Proxy</item>+      <item>Matcher</item>+      <item>Package</item>+      <item>Module</item>+      <item>Class</item>+      <item>Grammar</item>+      <item>Scalar</item>+      <item>Array</item>+      <item>Hash</item>+      <item>KeyHash</item>+      <item>KeySet</item>+      <item>KeyBag</item>+      <item>Pair</item>+      <item>List</item>+      <item>Seq</item>+      <item>Range</item>+      <item>Set</item>+      <item>Bag</item>+      <item>Mapping</item>+      <item>Void</item>+      <item>Undef</item>+      <item>Failure</item>+      <item>Exception</item>+      <item>Code</item>+      <item>Block</item>+      <item>Routine</item>+      <item>Sub</item>+      <item>Macro</item>+      <item>Method</item>+      <item>Submethod</item>+      <item>Regex</item>+      <item>Str</item>+      <item>Blob</item>+      <item>Char</item>+      <item>Byte</item>+      <item>Codepoint</item>+      <item>Grapheme</item>+      <item>StrPos</item>+      <item>StrLen</item>+      <item>Version</item>+      <item>Num</item>+      <item>Complex</item>+      <item>num</item>+      <item>complex</item>+      <item>Bit</item>+      <item>bit</item>+      <item>bool</item>+      <item>True</item>+      <item>False</item>+      <item>Increasing</item>+      <item>Decreasing</item>+      <item>Ordered</item>+      <item>Callable</item>+      <item>AnyChar</item>+      <item>Positional</item>+      <item>Associative</item>+      <item>Ordering</item>+      <item>KeyExtractor</item>+      <item>Comparator</item>+      <item>OrderingPair</item>+      <item>IO</item>+      <item>KitchenSink</item>+      <item>Role</item>+      <item>Int</item>+      <item>int</item>+      <item>int1</item>+      <item>int2</item>+      <item>int4</item>+      <item>int8</item>+      <item>int16</item>+      <item>int32</item>+      <item>int64</item>+      <item>Rat</item>+      <item>rat</item>+      <item>rat1</item>+      <item>rat2</item>+      <item>rat4</item>+      <item>rat8</item>+      <item>rat16</item>+      <item>rat32</item>+      <item>rat64</item>+      <item>Buf</item>+      <item>buf</item>+      <item>buf1</item>+      <item>buf2</item>+      <item>buf4</item>+      <item>buf8</item>+      <item>buf16</item>+      <item>buf32</item>+      <item>buf64</item>+      <item>UInt</item>+      <item>uint</item>+      <item>uint1</item>+      <item>uint2</item>+      <item>uint4</item>+      <item>uint8</item>+      <item>uint16</item>+      <item>uint32</item>+      <item>uint64</item>+      <item>Abstraction</item>+      <item>utf8</item>+      <item>utf16</item>+      <item>utf32</item>+    </list>++    <list name="operator">+      <item>X</item>+      <item>gcd</item>+      <item>ge</item>+      <item>gt</item>+      <item>lcm</item>+      <item>le</item>+      <item>leg</item>+      <item>let</item>+      <item>lt</item>+      <item>map</item>+      <item>max</item>+      <item>min</item>+      <item>minmax</item>+      <item>mod</item>+      <item>ne</item>+      <item>not</item>+      <item>notandthen</item>+      <item>o</item>+      <item>or</item>+      <item>orelse</item>+      <item>print</item>+      <item>push</item>+      <item>say</item>+      <item>so</item>+      <item>substr</item>+      <item>temp</item>+      <item>unicmp</item>+      <item>x</item>+      <item>xor</item>+      <item>xx</item>+      <item>Xeqv</item>+      <item>Z</item>+      <item>and</item>+      <item>andthen</item>+      <item>any</item>+      <item>but</item>+      <item>cmp</item>+      <item>coll</item>+      <item>die</item>+      <item>div</item>+      <item>does</item>+      <item>eq</item>+      <item>eqv</item>+      <item>ff</item>+      <item>fff</item>+    </list>++    <list name="unicodeGeneralCategories">+      <item>L</item>  <item>Letter</item>+      <item>LC</item> <item>Cased_Letter</item>+      <item>Lu</item> <item>Uppercase_Letter</item>+      <item>Ll</item> <item>Lowercase_Letter</item>+      <item>Lt</item> <item>Titlecase_Letter</item>+      <item>Lm</item> <item>Modifier_Letter</item>+      <item>Lo</item> <item>Other_Letter</item>+      <item>M</item>  <item>Mark</item>+      <item>Mn</item> <item>Nonspacing_Mark</item>+      <item>Mc</item> <item>Spacing_Mark</item>+      <item>Me</item> <item>Enclosing_Mark</item>+      <item>N</item>  <item>Number</item>+      <item>Nd</item> <item>Decimal_Number</item> <item>digit</item>+      <item>Nl</item> <item>Letter_Number</item>+      <item>No</item> <item>Other_Number</item>+      <item>P</item>  <item>Punctuation</item> <item>punct</item>+      <item>Pc</item> <item>Connector_Punctuation</item>+      <item>Pd</item> <item>Dash_Punctuation</item>+      <item>Ps</item> <item>Open_Punctuation</item>+      <item>Pe</item> <item>Close_Punctuation</item>+      <item>Pi</item> <item>Initial_Punctuation</item>+      <item>Pf</item> <item>Final_Punctuation</item>+      <item>Po</item> <item>Other_Punctuation</item>+      <item>S</item>  <item>Symbol</item>+      <item>Sm</item> <item>Math_Symbol</item>+      <item>Sc</item> <item>Currency_Symbol</item>+      <item>Sk</item> <item>Modifier_Symbol</item>+      <item>So</item> <item>Other_Symbol</item>+      <item>Z</item>  <item>Separator</item>+      <item>Zs</item> <item>Space_Separator</item>+      <item>Zl</item> <item>Line_Separator</item>+      <item>Zp</item> <item>Paragraph_Separator</item>+      <item>C</item>  <item>Other</item>+      <item>Cc</item> <item>Control</item> <item>cntrl</item>+      <item>Cf</item> <item>Format</item>+      <item>Cs</item> <item>Surrogate</item>+      <item>Co</item> <item>Private_Use</item>+      <item>Cn</item> <item>Unassigned</item>+    </list>++    <list name="assertion">+      <item>before</item>+      <item>after</item>+    </list>++    <contexts>++      <context name="Shebang" attribute="Comment" lineEndContext="#pop!base" fallthrough="1" fallthroughContext="#pop!base">+        <RegExpr attribute="Keyword" context="#pop!base" String="^#!\/.*" column="0"/>+      </context>++      <context name="base" attribute="Normal Text" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectChar attribute="Comment" context="StartComment" char="#"/>+        <!-- <DetectChar attribute="Unspace" context="#stay" char="\"/> -->+        <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>+        <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>+        <DetectChar char="{" context="Interpolation" attribute="Operator" beginRegion="block"/>+        <RegExpr String="(?:s|tr|TR)&regadverb;" context="RegexSubstitution" attribute="Operator"/>+        <RegExpr String="(?:rx|m)&regadverb;" context="Regex" attribute="Operator"/>+        <IncludeRules context="find_Variable"/>+        <DetectChar attribute="Pod" context="StartPod" char="=" firstNonSpace="1"/>+        <RegExpr String="»\.|&lt;&lt;\.|&hyperoperators;|&startstringasoperator;|&funcoperator;|&reductionoperator;|&operators;" context="MaybeRegex" attribute="Operator"/>+        <DetectChar char="(" context="SubExpression(" attribute="Operator" beginRegion="block"/>+        <DetectChar char="[" context="SubExpression[" attribute="Operator" beginRegion="block"/>+        <AnyChar String=",;" context="#stay" attribute="Separator Symbol"/>+        <DetectChar attribute="String Delimiter" context="qq_String«" char="«"/>+        <Detect2Chars attribute="String Delimiter" context="qq_String&lt;&lt;" char="&lt;" char1="&lt;"/>+        <DetectChar attribute="String Delimiter" context="q_String&lt;" char="&lt;"/>+        <DetectChar attribute="String Delimiter" context="Q_String「" char="「"/>+        <RegExpr String="Q(\s++(?=['(_]|$)|\s*+(?=[^()>」\]}'&rangealphabetic;&rangenumeric;]|$))" context="Q_String" attribute="String"/>+        <DetectChar char=":" context="MaybeAttribute" attribute="Operator"/>+        <AnyChar String="0123456789." context="Number" lookAhead="1"/>+        <RegExpr attribute="Operator" context="q_QuotingForm" String="q(?=&quotingform_q;&quotingform_q_assert;)"/>+        <keyword String="operator" context="#stay" attribute="Operator"/>+        <keyword String="varStorage" context="#stay" attribute="Variable Storage"/>+        <keyword String="type" context="#stay" attribute="Data Type"/>+        <keyword String="controlFlow" context="#stay" attribute="Control Flow"/>+        <WordDetect String="is" context="Is" attribute="Keyword"/>+        <keyword String="keyword" context="#stay" attribute="Keyword"/>+        <keyword String="declareRoutine" context="#stay" attribute="Declare Routine"/>+        <keyword String="property" context="#stay" attribute="Property"/>+        <keyword String="regexKeyword" context="RegexKeyword" attribute="Keyword"/>+        <keyword String="value" context="#stay" attribute="Keyword Value"/>+        <keyword String="Number" context="#stay" attribute="Float"/>+        <RegExpr String="[A-Z](?:[a-z]+[a-zA-Z0-9]*)+" context="#stay" attribute="Data Type"/>+        <RegExpr String="&ident;" context="#stay" attribute="Normal Text"/>+      </context>++      <context name="Is" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+        <DetectSpaces/>+        <keyword String="isProperty" context="#pop" attribute="Property"/>+      </context>++      <context name="Interpolation" attribute="Normal Text" lineEndContext="#stay">+        <DetectChar char="}" context="#pop" attribute="Operator" endRegion="block"/>+        <IncludeRules context="base"/>+      </context>++      <context name="SubExpression(" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="base"/>+        <DetectChar char=")" context="#pop" attribute="Operator" endRegion="block"/>+      </context>++      <context name="SubExpression[" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="base"/>+        <DetectChar char="]" context="#pop" attribute="Operator" endRegion="block"/>+      </context>++      <context name="find_Variable" attribute="Normal Text" lineEndContext="#stay">+        <RegExpr String="[%&amp;](?=[?*]&alphabetic;)|(?:\$[&twigils;]|::\?)(?=&alphabetic;)" context="Twigil" attribute="Variable"/>+        <RegExpr String="[$@]\(\)|[%@]?\$/|\$!|\$[0-9]+|[\\@%&amp;$]&ident;" context="#stay" attribute="Variable"/>+      </context>++      <context name="MaybeRegex" attribute="Normal Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">+        <DetectSpaces/>+        <DetectChar char="/" context="#pop!Regex" attribute="Operator" lookAhead="1"/>+      </context>++      <context name="Twigil" attribute="Variable" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+        <AnyChar String="&twigils;" context="#stay" attribute="Twigil"/>+        <RegExpr String="&ident;" context="#pop" attribute="Variable"/>+      </context>++      <context name="RegexKeyword" attribute="Normal Text" lineEndContext="#pop">+        <DetectChar char="{" context="#pop!RegexKeyword-Pattern{" attribute="Operator" beginRegion="regex"/>+      </context>+      <context name="RegexKeyword-Pattern{" attribute="Pattern" lineEndContext="#stay">+        <DetectChar char="}" context="#pop" attribute="Operator" endRegion="regex"/>+        <IncludeRules context="find_Pattern"/>+      </context>++      <!-- Regex -->++      <context name="Regex" attribute="Pattern" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">+        <IncludeRules context="find_RegexClosure"/>+        <RegExpr String="([^\w\s])" context="Pattern" attribute="Operator" beginRegion="regex"/>+      </context>++      <context name="find_RegexClosure" attribute="Pattern" lineEndContext="#stay">+        <DetectChar char=":" context="RegexModifier" attribute="Pattern Modifier"/>+        <DetectChar char="{" context="Pattern{" attribute="Operator" beginRegion="regex"/>+        <DetectChar char="(" context="Pattern(" attribute="Operator" beginRegion="regex"/>+        <DetectChar char="[" context="Pattern[" attribute="Operator" beginRegion="regex"/>+        <DetectChar char="&lt;" context="Pattern&lt;" attribute="Operator" beginRegion="regex"/>+        <DetectSpaces/>+      </context>++      <context name="RegexModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+        <Detect2Chars char="P" char1="5" context="RegexPerl5" attribute="Pattern Modifier"/>+        <StringDetect String="Perl5" context="RegexPerl5" attribute="Pattern Modifier"/>+        <DetectIdentifier context="#pop" attribute="Pattern Modifier"/>+      </context>++      <context name="RegexPerl5" attribute="Pattern Modifier" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop!IsRegexPerl5">+        <DetectSpaces/>+      </context>++      <context name="IsRegexPerl5" attribute="Pattern" lineEndContext="#stay">+        <IncludeRules context="find_pattern##Perl"/>+      </context>++      <context name="Pattern{" attribute="Pattern" lineEndContext="#stay">+        <DetectChar char="}" context="#pop#pop" attribute="Operator" endRegion="regex"/>+        <IncludeRules context="find_Pattern"/>+      </context>++      <context name="Pattern[" attribute="Pattern" lineEndContext="#stay">+        <DetectChar char="]" context="#pop#pop" attribute="Operator" endRegion="regex"/>+        <IncludeRules context="find_Pattern"/>+      </context>++      <context name="Pattern(" attribute="Pattern" lineEndContext="#stay">+        <DetectChar char=")" context="#pop#pop" attribute="Operator" endRegion="regex"/>+        <IncludeRules context="find_Pattern"/>+      </context>++      <context name="Pattern&lt;" attribute="Pattern" lineEndContext="#stay">+        <DetectChar char=">" context="#pop#pop" attribute="Operator" endRegion="regex"/>+        <IncludeRules context="find_Pattern"/>+      </context>++      <context name="Pattern" attribute="Pattern" lineEndContext="#stay">+        <DetectChar char="1" dynamic="1" context="#pop#pop" attribute="Operator" endRegion="regex"/>+        <IncludeRules context="find_Pattern"/>+      </context>++      <context name="find_Pattern" attribute="Pattern" lineEndContext="#stay">+        <DetectChar attribute="Operator" context="SubPattern" char="("/>+        <DetectChar char="\" context="PatternMetaChar" attribute="Pattern Character Class"/>+        <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>+        <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>+        <DetectChar attribute="Pattern Modifier" context="PatternModifier" char=":" lookAhead="1"/>+        <DetectChar char="{" context="Interpolation" attribute="Operator" beginRegion="block"/>+        <Detect2Chars attribute="Operator" context="RecursivePattern" char="&lt;" char1="("/>+        <Detect2Chars attribute="Operator" context="PatternAssertion" char="&lt;" char1="?"/>+        <Detect2Chars attribute="Operator" context="PatternAssertion" char="&lt;" char1="!"/>+        <Detect2Chars attribute="Operator" context="#stay" char="&lt;" char1="&lt;"/>+        <Detect2Chars attribute="Operator" context="#stay" char=">" char1=">"/>+        <DetectChar attribute="Pattern Meta Character" context="RegexClass" char="&lt;"/>+        <AnyChar attribute="Pattern Quantifier" context="#stay" String="?*+%"/>+        <Detect2Chars attribute="Pattern Quantifier" context="#stay" char="." char1="."/>+        <AnyChar attribute="Operator" context="#stay" String="[]«»~"/>+        <DetectChar attribute="Pattern Special Character" context="#stay" char="."/>+        <Detect2Chars attribute="Variable" context="PatternVariable" char="$" char1="&lt;"/>+        <AnyChar attribute="Pattern Control Flow" context="#stay" String="&amp;|^$"/>+        <DetectChar attribute="Comment" context="StartComment" char="#"/>+        <IncludeRules context="find_Variable"/>+        <RegExpr    String="[&rangealphabetic;&rangenumeric;\s]+" context="#stay" attribute="Pattern"/>+      </context>++      <context name="SubPattern" attribute="Pattern" lineEndContext="#stay">+        <DetectChar char=")" context="#pop" attribute="Operator"/>+        <IncludeRules context="find_Pattern"/>+      </context>++      <context name="RecursivePattern" attribute="Variable" lineEndContext="#stay">+        <Detect2Chars attribute="Operator" context="#pop" char=")" char1=">"/>+        <IncludeRules context="find_Pattern"/>+      </context>++      <context name="PatternModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+        <RegExpr context="#pop" attribute="Pattern Modifier" String=":\w+"/>+        <DetectChar attribute="Pattern Control Flow" context="#pop" char=":"/>+      </context>++      <context name="PatternVariable" attribute="Variable" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+        <RegExpr String="&ident;>?" context="#pop" attribute="Variable"/>+      </context>++      <context name="PatternAssertion" attribute="Normal Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!RegexClass">+        <DetectChar attribute="Operator" context="#pop" char=">"/>+        <DetectChar attribute="Operator" context="PatternAssertionCond" char="{"/>+        <keyword attribute="Keyword" String="assertion" context="SubPatternAssertion"/>+      </context>+      <context name="SubPatternAssertion" attribute="Pattern" lineEndContext="#stay">+        <DetectChar char=">" context="#pop#pop" attribute="Operator"/>+        <IncludeRules context="find_Pattern"/>+      </context>++      <context name="PatternAssertionCond" attribute="Normal Text" lineEndContext="#stay">+        <Detect2Chars attribute="Operator" context="#pop#pop" char="}" char1=">"/>+        <IncludeRules context="base"/>+      </context>++      <context name="PatternMetaChar" attribute="Pattern Meta Character" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!CharError">+        <AnyChar attribute="Pattern Character Class" context="#pop" String="nthvsdwNTHVSDW"/>+        <RegExpr String="[^&rangealphabetic;&rangenumeric;]" context="#pop" attribute="Pattern Meta Character"/>+      </context>+++      <!-- Pattern Character Classes -->++      <context name="RegexClass" attribute="Pattern Meta Character" lineEndContext="#stay">+        <DetectSpaces/>+        <AnyChar    attribute="Operator" context="#stay" String="-!+()"/>+        <DetectChar attribute="Pattern Meta Character" context="RegexClassRange" char="["/>+        <DetectChar attribute="Pattern Unicode Property" context="RegexClassName" char=":"/>+        <DetectChar attribute="Pattern Meta Character" context="#pop" char=">"/>+        <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>+        <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>+        <DetectChar attribute="String Delimiter" context="Q_String「" char="「"/>+        <DetectChar attribute="String Delimiter" context="q_String&lt;" char="&lt;"/>+        <DetectChar attribute="String Delimiter" context="qq_String«" char="«"/>+        <RegExpr attribute="String" context="#stay" String="[^-!+()?:&lt;>'&quot;「«]+"/>+      </context>++      <context name="RegexClassName" attribute="Pattern Unicode Property" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">+        <RegExpr String="\w+" context="#pop" attribute="Pattern Unicode Property"/>+        <!-- auto-completion only -->+        <keyword attribute="Pattern Unicode Property" context="#pop" String="unicodeGeneralCategories"/>+      </context>++      <context name="RegexClassRange" attribute="Pattern Character" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectChar char="\" context="RegexClassRangeMetaChar" attribute="Pattern Character Class"/>+        <Detect2Chars char="." char1="." context="#stay" attribute="Pattern Quantifier"/>+        <DetectChar attribute="Pattern Meta Character" context="#pop" char="]"/>+      </context>++      <context name="RegexClassRangeMetaChar" attribute="Pattern Meta Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">+        <DetectSpaces/>+        <IncludeRules context="find_SpecialChar"/>+        <IncludeRules context="PatternMetaChar"/>+      </context>+++      <!-- Regex Substitution -->++      <context name="RegexSubstitution" attribute="Operator" lineEndContext="#stay">+        <IncludeRules context="find_RegexClosure"/>+        <RegExpr String="([^\w\s])" context="RegexSubstitutionPattern" attribute="Operator" beginRegion="regex"/>+      </context>++      <context name="RegexSubstitutionPattern" attribute="Pattern" lineEndContext="#stay">+        <RegExpr String="(%1)" dynamic="1" context="RegexSubstitutionString" attribute="Operator" endRegion="regex"/>+        <IncludeRules context="find_Pattern"/>+      </context>++      <context name="RegexSubstitutionString" attribute="String" lineEndContext="#stay">+        <DetectChar char="1" dynamic="1" context="#pop#pop#pop" attribute="Operator"/>+      </context>+++      <!-- Number -->++      <context name="Number" attribute="Decimal" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!CharErrorIfNoSep">+        <RegExpr String="&int10;(?:\.&int10;(?:[eE][+-]?&int10;)?|[eE][+-]?&int10;)i?|\.&int10;(?:[eE][+-]?&int10;)?i?" context="CheckNumberError" attribute="Float"/>+        <Detect2Chars char="0" char1="x" context="HexNumber" attribute="Hex"/>+        <Detect2Chars char="0" char1="o" context="OctalNumber" attribute="Octal"/>+        <RegExpr String="&int10;i?" context="CheckNumberError" attribute="Decimal"/>+        <DetectChar char="." context="#pop" attribute="Operator"/>+      </context>++      <context name="HexNumber" attribute="Hex" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">+        <RegExpr String="[a-fA-F0-9]+(?:_[a-fA-F0-9]+)*i?" context="#pop!CheckNumberError" attribute="Hex"/>+      </context>++      <context name="OctalNumber" attribute="Octal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">+        <RegExpr String="[0-7]+(?:_[0-7]+)*i?" context="#pop!CheckNumberError" attribute="Octal"/>+      </context>++      <context name="BaseNumber" attribute="Decimal" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop!CharErrorIfNoSep">+        <DetectChar char="&gt;" context="#pop#pop#pop" attribute="Error"/>+        <RegExpr String="&intN;\.&intN;|\.&intN;" context="#pop#pop!BaseNumberClose" attribute="Float"/>+        <RegExpr String="&intN;" context="#pop#pop!BaseNumberClose" attribute="Decimal"/>+      </context>+      <context name="BaseNumberClose" attribute="Decimal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">+        <DetectChar char="&gt;" context="#pop#pop" attribute="Operator"/>+        <IncludeRules context="CheckNumberError"/>+      </context>++      <context name="CheckNumberError" attribute="Octal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">+        <RegExpr String="&alnum;+" context="#pop#pop" attribute="Error"/>+      </context>+++      <!-- Attribute or Key -->++      <context name="MaybeAttribute" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+        <Int context="MaybeAttribute2" attribute="Decimal"/>+        <DetectChar char="!" context="#pop" attribute="Operator"/>+        <RegExpr String="&ident;" context="#pop" attribute="Attribute"/>+      </context>++      <context name="MaybeAttribute2" attribute="Decimal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">+        <DetectChar char="&lt;" context="BaseNumber" attribute="Operator"/>+      </context>+++      <!-- Pod -->++      <context name="StartPod" attribute="Pod Typename" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+        <WordDetect String="begin" context="PodBegin" attribute="Pod Block"/>+        <WordDetect String="for"   context="PodFor" attribute="Pod Typename"/>+        <keyword    String="pod"   context="PodTypenameValue" attribute="Pod Typename"/>+        <RegExpr    String="[_A-Z][-_A-Z0-9]*\b" context="PodTypenameValue" attribute="Pod Typename"/>+        <RegExpr    String="&ident;" context="PodTypenameValue" attribute="Pod Unknown"/>+      </context>++      <context name="PodTypenameValue" attribute="Pod Typename Value" lineEndContext="PodTypenameValueNextLine" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Typename Value" context="#stay" String="&allnopodfmt;"/>+      </context>++      <context name="PodTypenameValueNextLine" attribute="Pod Typename Value" lineEndContext="#stay" lineEmptyContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop">+        <DetectSpaces attribute="Normal Text" context="PodTypenameValueOrEmpty"/>+        <DetectChar attribute="Pod" context="#pop#pop#pop" char="=" lookAhead="true"/>+      </context>++      <context name="PodTypenameValueOrEmpty" attribute="Pod Typename Value" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">+        <DetectChar attribute="Pod" context="#pop#pop#pop#pop" char="=" lookAhead="true"/>+      </context>+++      <!-- Pod formatting -->++      <context name="PodFormat" attribute="Pod Typename Value" lineEndContext="#stay">+        <Detect2Chars char="B" char1="&lt;" attribute="Pod Bold" context="#pop!PodFormatB"/>+        <Detect2Chars char="B" char1="«"    attribute="Pod Bold" context="#pop!PodFormatB2"/>+        <Detect2Chars char="I" char1="&lt;" attribute="Pod Italic" context="#pop!PodFormatI"/>+        <Detect2Chars char="I" char1="«"    attribute="Pod Italic" context="#pop!PodFormatI2"/>+        <Detect2Chars char="L" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>+        <Detect2Chars char="L" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>+        <Detect2Chars char="N" char1="&lt;" attribute="Pod Note" context="#pop!PodFormatN"/>+        <Detect2Chars char="N" char1="«"    attribute="Pod Note" context="#pop!PodFormatN2"/>+        <Detect2Chars char="P" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>+        <Detect2Chars char="P" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>+        <Detect2Chars char="Z" char1="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ"/>+        <Detect2Chars char="Z" char1="«"    attribute="Pod Comment" context="#pop!PodFormatZ2"/>+        <Detect2Chars char="U" char1="&lt;" attribute="Pod Underline" context="#pop!PodFormatU"/>+        <Detect2Chars char="U" char1="«"    attribute="Pod Underline" context="#pop!PodFormatU2"/>+        <Detect2Chars char="C" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>+        <Detect2Chars char="C" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>+        <Detect2Chars char="E" char1="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE"/>+        <Detect2Chars char="E" char1="«"    attribute="Pod Unicode" context="#pop!PodFormatE2"/>+        <Detect2Chars char="K" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>+        <Detect2Chars char="K" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>+        <Detect2Chars char="R" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>+        <Detect2Chars char="R" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>+        <Detect2Chars char="T" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>+        <Detect2Chars char="T" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>+        <Detect2Chars char="V" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV"/>+        <Detect2Chars char="V" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatV2"/>+        <Detect2Chars char="X" char1="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX"/>+        <Detect2Chars char="X" char1="«"    attribute="Pod Indexed Terms" context="#pop!PodFormatX2"/>+        <Detect2Chars char="M" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>+        <Detect2Chars char="M" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>+      </context>++      <context name="PodFormatB" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatB1">+        <DetectChar char="&lt;" attribute="Pod Bold" context="#pop!PodFormatB3"/>+      </context>+      <context name="PodFormatB1" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt1;"/>+        <DetectChar char="&lt;" attribute="Pod Bold" context="PodFormatB1"/>+        <DetectChar char=">" attribute="Pod Bold" context="#pop"/>+      </context>+      <context name="PodFormatB2" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt2;"/>+        <DetectChar char="«" attribute="Pod Bold" context="PodFormatB2"/>+        <DetectChar char="»" attribute="Pod Bold" context="#pop"/>+      </context>+      <context name="PodFormatB3" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt3;"/>+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Bold" context="PodFormatB3"/>+        <Detect2Chars char=">" char1=">" attribute="Pod Bold" context="#pop"/>+      </context>++      <context name="PodFormatE" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatE1">+        <DetectChar char="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE3"/>+      </context>+      <context name="PodFormatE1" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt1;"/>+        <DetectChar char="&lt;" attribute="Pod Unicode" context="PodFormatE1"/>+        <DetectChar char=">" attribute="Pod Unicode" context="#pop"/>+      </context>+      <context name="PodFormatE2" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt2;"/>+        <DetectChar char="«" attribute="Pod Unicode" context="PodFormatE2"/>+        <DetectChar char="»" attribute="Pod Unicode" context="#pop"/>+      </context>+      <context name="PodFormatE3" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt3;"/>+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Unicode" context="PodFormatE3"/>+        <Detect2Chars char=">" char1=">" attribute="Pod Unicode" context="#pop"/>+      </context>++      <context name="PodFormatI" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatI1">+        <DetectChar char="&lt;" attribute="Pod Italic" context="#pop!PodFormatI3"/>+      </context>+      <context name="PodFormatI1" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt1;"/>+        <DetectChar char="&lt;" attribute="Pod Italic" context="PodFormatI1"/>+        <DetectChar char=">" attribute="Pod Italic" context="#pop"/>+      </context>+      <context name="PodFormatI2" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt2;"/>+        <DetectChar char="«" attribute="Pod Italic" context="PodFormatI2"/>+        <DetectChar char="»" attribute="Pod Italic" context="#pop"/>+      </context>+      <context name="PodFormatI3" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt3;"/>+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Italic" context="PodFormatI3"/>+        <Detect2Chars char=">" char1=">" attribute="Pod Italic" context="#pop"/>+      </context>++      <context name="PodFormatL" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatL1">+        <DetectChar char="&lt;" attribute="Pod Link" context="#pop!PodFormatL3"/>+      </context>+      <context name="PodFormatL1" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«]))+"/>+        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>+        <DetectChar char=">" attribute="Pod Link" context="#pop"/>+      </context>+      <context name="PodFormatL2" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|]+|[&podfmt;](?![&lt;«]))+"/>+        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>+        <DetectChar char="»" attribute="Pod Link" context="#pop"/>+      </context>+      <context name="PodFormatL3" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>+        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>+        <Detect2Chars char=">" char1=">" attribute="Pod Link" context="#pop"/>+      </context>++      <context name="PodFormatN" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatN1">+        <DetectChar char="&lt;" attribute="Pod Note" context="#pop!PodFormatN3"/>+      </context>+      <context name="PodFormatN1" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt1;"/>+        <DetectChar char="&lt;" attribute="Pod Note" context="PodFormatN1"/>+        <DetectChar char=">" attribute="Pod Note" context="#pop"/>+      </context>+      <context name="PodFormatN2" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt2;"/>+        <DetectChar char="«" attribute="Pod Note" context="PodFormatN2"/>+        <DetectChar char="»" attribute="Pod Note" context="#pop"/>+      </context>+      <context name="PodFormatN3" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt3;"/>+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Note" context="PodFormatN3"/>+        <Detect2Chars char=">" char1=">" attribute="Pod Note" context="#pop"/>+      </context>++      <context name="PodFormatU" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatU1">+        <DetectChar char="&lt;" attribute="Pod Underline" context="#pop!PodFormatU3"/>+      </context>+      <context name="PodFormatU1" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt1;"/>+        <DetectChar char="&lt;" attribute="Pod Underline" context="PodFormatU1"/>+        <DetectChar char=">" attribute="Pod Underline" context="#pop"/>+      </context>+      <context name="PodFormatU2" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt2;"/>+        <DetectChar char="«" attribute="Pod Underline" context="PodFormatU2"/>+        <DetectChar char="»" attribute="Pod Underline" context="#pop"/>+      </context>+      <context name="PodFormatU3" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt3;"/>+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Underline" context="PodFormatU3"/>+        <Detect2Chars char=">" char1=">" attribute="Pod Underline" context="#pop"/>+      </context>++      <context name="PodFormatV" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatV1">+        <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV3"/>+      </context>+      <context name="PodFormatV1" attribute="Pod Verbatim" lineEndContext="#stay">+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>+        <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatV1"/>+        <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>+      </context>+      <context name="PodFormatV2" attribute="Pod Verbatim" lineEndContext="#stay">+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>+        <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatV2"/>+        <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>+      </context>+      <context name="PodFormatV3" attribute="Pod Verbatim" lineEndContext="#stay">+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatV3"/>+        <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>+      </context>++      <context name="PodFormatVT" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatVT1">+        <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT3"/>+      </context>+      <context name="PodFormatVT1" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>+        <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatVT1"/>+        <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>+      </context>+      <context name="PodFormatVT2" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>+        <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatVT2"/>+        <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>+      </context>+      <context name="PodFormatVT3" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatVT3"/>+        <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>+      </context>++      <context name="PodFormatZ" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatZ1">+        <DetectChar char="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ3"/>+      </context>+      <context name="PodFormatZ1" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt1;"/>+        <DetectChar char="&lt;" attribute="Pod Comment" context="PodFormatZ1"/>+        <DetectChar char=">" attribute="Pod Comment" context="#pop"/>+      </context>+      <context name="PodFormatZ2" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt2;"/>+        <DetectChar char="«" attribute="Pod Comment" context="PodFormatZ2"/>+        <DetectChar char="»" attribute="Pod Comment" context="#pop"/>+      </context>+      <context name="PodFormatZ3" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt3;"/>+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Comment" context="PodFormatZ3"/>+        <Detect2Chars char=">" char1=">" attribute="Pod Comment" context="#pop"/>+      </context>++      <context name="PodFormatX" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatX1">+        <DetectChar char="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX3"/>+      </context>+      <context name="PodFormatX1" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«]))+"/>+        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>+        <DetectChar char=">" attribute="Pod Indexed Terms" context="#pop"/>+      </context>+      <context name="PodFormatX2" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|;,]+|[&podfmt;](?![&lt;«]))+"/>+        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>+        <DetectChar char="«" attribute="Pod Indexed Terms" context="PodFormatX2"/>+        <DetectChar char="»" attribute="Pod Indexed Terms" context="#pop"/>+      </context>+      <context name="PodFormatX3" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>+        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Indexed Terms" context="PodFormatX3"/>+        <Detect2Chars char=">" char1=">" attribute="Pod Indexed Terms" context="#pop"/>+      </context>++      <!-- Pod =begin -->++      <context name="PodBegin" attribute="Pod Typename Value" lineEndContext="#pop#pop!Error">+        <DetectSpaces attribute="Normal Text"/>+        <WordDetect String="code" context="PodBeginCode" attribute="Pod Typename Value" beginRegion="pod"/>+        <WordDetect String="comment" context="PodBeginComment" attribute="Pod Typename Value" beginRegion="pod"/>+        <RegExpr String="(&ident;)" context="PodBeginTypename" attribute="Pod Typename Value" beginRegion="pod"/>+        <!-- auto-completion only -->+        <keyword String="podblocktypename" context="#stay" attribute="Pod Typename Value"/>+      </context>++      <context name="PodBeginCode" attribute="Error" lineEndContext="PodInnerCode">+        <DetectSpaces attribute="Normal Text"/>+        <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>+        <DetectChar char="=" context="PodEndCode" attribute="Pod" firstNonSpace="1"/>+      </context>++      <context name="PodInnerCode" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodCode">+        <RegExpr String="^\s*=end\s+code\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>+      </context>+      <context name="PodCode" attribute="Pod Verbatim" lineEndContext="#pop"/>++      <context name="PodEndCode" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">+        <StringDetect String="end" context="PodEndCodeName" attribute="Pod Block" endRegion="pod"/>+      </context>+      <context name="PodEndCodeName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop#pop!Error">+        <DetectSpaces attribute="Normal Text"/>+        <StringDetect String="code" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>+      </context>+++      <context name="PodBeginComment" attribute="Error" lineEndContext="PodInnerComment">+        <DetectSpaces attribute="Normal Text"/>+        <DetectChar char="=" context="PodEndComment" attribute="Pod" firstNonSpace="1"/>+      </context>++      <context name="PodInnerComment" attribute="Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodComment">+        <RegExpr String="^\s*=end\s+comment\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>+      </context>+      <context name="PodComment" attribute="Comment" lineEndContext="#pop"/>++      <context name="PodEndComment" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">+        <StringDetect String="end" context="PodEndCommentName" attribute="Pod Block" endRegion="pod"/>+      </context>+      <context name="PodEndCommentName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop#pop!Error">+        <DetectSpaces attribute="Normal Text"/>+        <StringDetect String="comment" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>+      </context>+++      <context name="PodBeginTypename" attribute="Error" lineEndContext="PodInnerBlock">+        <RegExpr String="^\s*=end\s+%1\b" dynamic="1" context="PodEnd" attribute="Pod" column="0" lookAhead="1"/>+        <DetectSpaces attribute="Normal Text"/>+        <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>+        <DetectChar char="=" context="PodEndError" attribute="Pod" firstNonSpace="1"/>+      </context>++      <context name="PodInnerBlock" attribute="Pod Paragraph" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodInnerBlockFormat">+        <RegExpr String="^\s*=end\b" context="#pop" attribute="Pod" column="0" lookAhead="1"/>+        <DetectSpaces/>+        <DetectChar char="=" context="StartPod" attribute="Pod" firstNonSpace="1"/>+        <RegExpr attribute="Pod Paragraph" context="#stay" String="&allnopodfmt;"/>+      </context>++      <context name="PodInnerBlockFormat" attribute="Pod Paragraph" lineEndContext="#stay">+        <IncludeRules context="PodFormat"/>+      </context>++      <context name="PodEnd" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">+        <DetectSpaces attribute="Normal Text"/>+        <DetectChar char="=" context="#stay" attribute="Pod"/>+        <StringDetect String="end" context="PodEndName" attribute="Pod Block" endRegion="pod"/>+      </context>+      <context name="PodEndName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop">+        <DetectSpaces attribute="Normal Text"/>+        <RegExpr String="&ident;" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>+      </context>++      <context name="PodEndError" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">+        <StringDetect String="end" attribute="Pod Block" context="#pop#pop#pop!Error" endRegion="pod"/>+      </context>++      <!-- Pod configuration for =begin -->++      <context name="PodBlockConfigError" attribute="Error" lineEndContext="#pop#pop!PodInnerBlock"/>++      <context name="PodBlockConfigKey" attribute="Pod Key" lineEndContext="#pop!PodInnerBlock" fallthrough="1" fallthroughContext="PodBlockConfigError">+        <DetectChar char="!" context="#pop!PodBlockConfigKeyName" attribute="Pod Operator"/>+        <Int context="PodBlockConfigKeyIntName" attribute="Decimal"/>+        <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>+      </context>++      <context name="PodBlockConfigKeyName" attribute="Pod Key" lineEndContext="#pop!PodTypenameValue" fallthrough="1" fallthroughContext="PodBlockConfigError">+        <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>+      </context>++      <context name="PodBlockConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop!PodBlockConfigError" fallthrough="1" fallthroughContext="#pop!PodBlockConfigError">+        <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>+      </context>++      <context name="PodBlockConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop">+        <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>+        <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>+        <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>+      </context>+++      <!-- Pod =for -->++      <context name="PodFor" attribute="Pod Typename" lineEndContext="#pop#pop!Error" fallthrough="1" fallthroughContext="#pop#pop!Error">+        <DetectSpaces attribute="Normal Text"/>+        <keyword String="podtypename" context="#pop!PodConfig" attribute="Pod Typename"/>+      </context>++      <!-- Pod configuration for =for -->++      <context name="PodConfigError" attribute="Error" lineEndContext="#pop#pop!PodTypenameValue"/>++      <context name="PodConfig" attribute="Normal Text" lineEndContext="#pop!PodTypenameValue" fallthrough="1" fallthroughContext="PodConfigError">+        <DetectSpaces/>+        <DetectChar char=":" context="PodConfigKey" attribute="Pod Operator"/>+      </context>++      <context name="PodConfigKey" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthrough="1" fallthroughContext="#pop!PodConfigError">+        <DetectChar char="!" context="#pop!PodConfigKeyName" attribute="Pod Operator"/>+        <Int context="PodConfigKeyIntName" attribute="Decimal"/>+        <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>+      </context>++      <context name="PodConfigKeyName" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthrough="1" fallthroughContext="#pop!PodConfigError">+        <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>+      </context>++      <context name="PodConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop#pop!PodConfigError" fallthrough="1" fallthroughContext="#pop#pop!PodConfigError">+        <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>+      </context>++      <context name="PodConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">+        <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>+        <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>+        <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>+      </context>++      <context name="PodParamSequence" attribute="Pod Config" lineEndContext="#stay">+        <DetectSpaces/>+        <keyword String="podvalue" context="#stay" attribute="Data Type"/>+        <DetectIdentifier/>+        <AnyChar String="0123456789." context="Number" lookAhead="1"/>+        <DetectChar char=">" context="#pop#pop#pop" attribute="Pod Operator"/>+        <DetectChar char="'" context="PodSQString" attribute="String"/>+        <DetectChar char="&quot;" context="PodQString" attribute="String"/>+      </context>++      <context name="PodParamHash" attribute="Pod Config" lineEndContext="#stay">+        <DetectSpaces/>+        <Detect2Chars char="=" char1=">" context="#stay" attribute="Pod Operator"/>+        <DetectChar char="," context="#stay" attribute="Pod Operator"/>+        <keyword String="podvalue" context="#stay" attribute="Data Type"/>+        <DetectIdentifier/>+        <DetectChar char="'" context="PodSQString" attribute="String"/>+        <DetectChar char="&quot;" context="PodQString" attribute="String"/>+        <AnyChar String="0123456789." context="Number" lookAhead="1"/>+        <DetectChar char="}" context="#pop#pop#pop" attribute="Pod Operator"/>+      </context>++      <context name="PodParamList" attribute="Pod Config" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectChar char="," context="#stay" attribute="Pod Operator"/>+        <keyword String="podvalue" context="#stay" attribute="Data Type"/>+        <DetectIdentifier/>+        <DetectChar char="'" context="PodSQString" attribute="String"/>+        <DetectChar char="&quot;" context="PodQString" attribute="String"/>+        <AnyChar String="0123456789." context="Number" lookAhead="1"/>+        <AnyChar String="])" context="#pop#pop#pop" attribute="Pod Operator"/>+      </context>+++      <!-- Pod String -->++      <context name="PodSQString" attribute="String" lineEndContext="#stay">+        <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>+        <DetectChar char="'" context="#pop" attribute="String Delimiter"/>+        <RegExpr String="(?:[^\\']*|\\[^']|\\$)*" context="#stay" attribute="String"/>+      </context>++      <context name="PodQString" attribute="String" lineEndContext="#stay">+        <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="\" context="SpecialChar" attribute="String Special Character"/>+        <RegExpr String="(?:[^&quot;\\]*|\\$)*" context="#stay" attribute="String"/>+      </context>++      <context name="find_SpecialChar" attribute="String Special Character" lineEndContext="#stay">+        <Detect2Chars char="c" char1="[" context="UnicodeCodepoint" attribute="String Special Character"/>+        <DetectChar char="c" context="UnicodeCodepointDecimal" attribute="String Special Character"/>+        <DetectChar char="x" context="HexaString" attribute="String Special Character"/>+        <DetectChar char="o" context="OctalString" attribute="String Special Character"/>+      </context>++      <context name="SpecialChar" attribute="String Special Character" lineEndContext="#pop">+        <IncludeRules context="find_SpecialChar"/>+        <RegExpr String="." context="#pop" attribute="String"/>+      </context>++      <context name="UnicodeCodepoint" attribute="String Special Character" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectIdentifier/>+        <DetectChar char="]" context="#pop#pop" attribute="String Special Character"/>+        <DetectChar char="," context="#stay" attribute="Separator Symbol"/>+      </context>++      <context name="UnicodeCodepointDecimal" attribute="String Special Character" lineEndContext="#pop#pop">+        <!-- 0 to 1114111 -->+        <RegExpr String="0*(?:1(?:0\d{5}|1(?:O\d{4}|(?:1[0-3]\d{3}|4(?:0\d\d|1(?:0\d|1[01]))))))|\d{1,6}|0+" context="UnicodeCodepointDecimalCheck" attribute="String Special Character"/>+        <RegExpr String="[^&quot;]" context="#pop" attribute="Error"/>+      </context>+      <context name="UnicodeCodepointDecimalCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">+        <AnyChar String="0123456789" context="#pop#pop#pop" attribute="Error"/>+      </context>++      <context name="HexaString" attribute="String Special Character" lineEndContext="#pop#pop">+        <DetectChar char="[" context="HexaStringBracket" attribute="String Special Character"/>+        <!-- 0 to 0x10FFFF -->+        <RegExpr String="0*(?:10[0-9a-fA-F]{4}|[0-9a-fA-F]{1,5})|0+" context="HexaStringCheck" attribute="String Special Character"/>+        <RegExpr String="[^&quot;]" context="#pop#pop" attribute="Error"/>+      </context>+      <context name="HexaStringCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">+        <AnyChar String="0123456789abcdefABCDEF" context="#pop#pop#pop" attribute="Error"/>+      </context>+      <context name="HexaStringBracket" attribute="String Special Character" lineEndContext="#stay">+        <DetectSpaces/>+        <DetectChar char="]" context="#pop#pop#pop" attribute="Error"/>+        <!-- 0 to 0x10FFFF -->+        <RegExpr String="0*(?:10[0-9a-fA-F]{4}|[0-9a-fA-F]{1,5})|0+" context="HexaStringBracketCheck" attribute="String Special Character"/>+      </context>+      <context name="HexaStringBracketCheck" attribute="String Special Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop#pop">+        <DetectChar char="]" context="#pop#pop#pop#pop" attribute="String Special Character"/>+        <DetectChar char="," context="#pop" attribute="Separator Symbol"/>+        <RegExpr String="[^]&quot;]" context="#stay" attribute="Error"/>+      </context>++      <context name="OctalString" attribute="String Special Character" lineEndContext="#pop#pop">+        <DetectChar char="[" context="OctalStringBracket" attribute="String Special Character"/>+        <!-- 0 to 0o4177777 -->+        <RegExpr String="0*(?:[0-3][0-7]{6}|4[01]|[0-7])[0-7]{0,5}|0+" context="OctalStringCheck" attribute="String Special Character"/>+        <RegExpr String="[^&quot;]" context="#stay" attribute="Error"/>+      </context>+      <context name="OctalStringCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">+        <AnyChar String="01234567" context="#pop#pop#pop" attribute="Error"/>+      </context>+      <context name="OctalStringBracket" attribute="String Special Character" lineEndContext="#stay">+        <DetectChar char="]" context="#pop#pop#pop" attribute="Error"/>+        <!-- 0 to 0o4177777 -->+        <RegExpr String="0*(?:[0-3][0-7]{6}|4[01]|[0-7])[0-7]{0,5}|0+" context="OctalStringBracketCheck" attribute="String Special Character"/>+      </context>+      <context name="OctalStringBracketCheck" attribute="String Special Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop#pop">+        <DetectChar char="]" context="#pop#pop#pop#pop" attribute="String Special Character"/>+        <DetectChar char="," context="#pop" attribute="Separator Symbol"/>+        <RegExpr String="[^]&quot;]" context="#stay" attribute="Error"/>+      </context>+++      <!-- Q String -->++      <context name="Q_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">+        <DetectSpaces attribute="String"/>+        <DetectChar char=":" context="#pop!Q_StringModifier" attribute="Operator"/>+        <DetectChar char="(" context="#pop!Q_String(" attribute="String Delimiter"/>+        <DetectChar char="[" context="#pop!Q_String[" attribute="String Delimiter"/>+        <DetectChar char="{" context="#pop!Q_String{" attribute="String Delimiter"/>+        <DetectChar char="「" context="#pop!Q_String「" attribute="String Delimiter"/>+        <DetectChar char="&lt;" context="#pop!Q_String&lt;" attribute="String Delimiter"/>+        <RegExpr String="([^()>」\]}'&_rangealphabetic;&rangenumeric;])" context="#pop!Q_StringAny" attribute="String Delimiter"/>+      </context>++      <context name="Q_String(" attribute="String" lineEndContext="#stay">+        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="(" context="Q_String(" attribute="String Delimiter"/>+        <RegExpr String="[^()]*" context="#stay" attribute="String"/>+      </context>++      <context name="Q_String[" attribute="String" lineEndContext="#stay">+        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="[" context="Q_String[" attribute="String Delimiter"/>+        <RegExpr String="[^\[\]]*" context="#stay" attribute="String"/>+      </context>++      <context name="Q_String{" attribute="String" lineEndContext="#stay">+        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="{" context="Q_String{" attribute="String Delimiter"/>+        <RegExpr String="[^{}]*" context="#stay" attribute="String"/>+      </context>++      <context name="Q_String「" attribute="String" lineEndContext="#stay">+        <DetectChar char="」" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="「" context="Q_String「" attribute="String Delimiter"/>+        <RegExpr String="[^「」]*" context="#stay" attribute="String"/>+      </context>++      <context name="Q_String&lt;" attribute="String" lineEndContext="#stay">+        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="&lt;" context="Q_String&lt;" attribute="String Delimiter"/>+        <RegExpr String="[^&lt;>]*" context="#stay" attribute="String"/>+      </context>++      <context name="Q_StringAny" attribute="String" lineEndContext="#stay">+        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>+        <RegExpr String="[^%1]*" dynamic="1" context="#stay" attribute="String"/>+      </context>++      <context name="q_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop!q_String">+        <DetectChar char=":" context="#pop#pop!q_QuotingForm2" attribute="Operator"/>+      </context>++      <context name="qq_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop!qq_String">+        <DetectChar char=":" context="#pop!qq_QuotingForm" attribute="Operator"/>+      </context>++      <context name="Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!q_QuotingForm2">+        <DetectChar char="q" context="#pop!q_QuotingForm" attribute="Operator"/>+        <DetectChar char="'" context="q_Q_StringModifier" attribute="Operator"/>+        <DetectChar char="&quot;" context="qq_Q_StringModifier" attribute="Operator"/>+      </context>++      <context name="q_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!q_QuotingForm2">+        <DetectChar char="q" context="#pop!qq_QuotingForm" attribute="Operator"/>+        <DetectChar char=":" context="#pop!q_QuotingForm2" attribute="Operator"/>+      </context>+      <context name="q_QuotingForm2" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="q_String">+        <WordDetect String="heredoc" context="q_Heredoc" attribute="Operator"/>+        <keyword String="quoting" context="#stay" attribute="Operator"/>+        <AnyChar String="wvx:sahfb" context="#stay" attribute="Operator"/>+        <!-- :closure as qq -->+        <DetectChar char="c" context="#pop!qq_QuotingForm" attribute="Operator"/>+        <Detect2Chars char="t" char1="o" context="q_Heredoc" attribute="Operator"/>+      </context>++      <context name="qq_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="qq_String">+        <WordDetect String="heredoc" context="qq_Heredoc" attribute="Operator"/>+        <keyword String="quoting" context="#stay" attribute="Operator"/>+        <AnyChar String="wvx:sahfcb" context="#stay" attribute="Operator"/>+        <Detect2Chars char="t" char1="o" context="qq_Heredoc" attribute="Operator"/>+      </context>+++      <!-- q and qq Heredoc -->++      <context name="q_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">+        <RegExpr String="/([^/]+)/" context="q_HeredocTerminator" attribute="String Delimiter"/>+      </context>+      <context name="q_HeredocTerminator" attribute="String" lineEndContext="#stay">+        <DetectSpaces/>+        <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>+        <RegExpr String="(?:[^\\]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>+      </context>++      <context name="qq_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">+        <RegExpr String="/([^/]+)/" context="qq_HeredocTerminator" attribute="String Delimiter"/>+      </context>+      <context name="qq_HeredocTerminator" attribute="String" lineEndContext="#stay">+        <DetectSpaces/>+        <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>+        <IncludeRules context="find_qq_StringCommon"/>+        <RegExpr String="[^\\${@&amp;]*" context="#stay" attribute="String"/>+      </context>+++      <!-- q String -->++      <context name="q_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop">+        <DetectSpaces/>+        <DetectChar char="(" context="#pop#pop!q_String(" attribute="String Delimiter"/>+        <DetectChar char="[" context="#pop#pop!q_String[" attribute="String Delimiter"/>+        <DetectChar char="{" context="#pop#pop!q_String{" attribute="String Delimiter"/>+        <DetectChar char="&lt;" context="#pop#pop!q_String&lt;" attribute="String Delimiter"/>+        <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!q_StringAny" attribute="String Delimiter"/>+      </context>++      <context name="q_String(" attribute="String" lineEndContext="#stay">+        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="(" context="q_String(" attribute="String Delimiter"/>+        <Detect2Chars char="\" char1="(" context="#stay" attribute="String Special Character"/>+        <Detect2Chars char="\" char1=")" context="#stay" attribute="String Special Character"/>+        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>+        <RegExpr String="(?:[^()\\]*|\\(?![()\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>+      </context>++      <context name="q_String[" attribute="String" lineEndContext="#stay">+        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="[" context="q_String[" attribute="String Delimiter"/>+        <Detect2Chars char="\" char1="[" context="#stay" attribute="String Special Character"/>+        <Detect2Chars char="\" char1="]" context="#stay" attribute="String Special Character"/>+        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>+        <RegExpr String="(?:[^\[\]\\]*|\\(?![\[\]\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>+      </context>++      <context name="q_String{" attribute="String" lineEndContext="#stay">+        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="{" context="q_String{" attribute="String Delimiter"/>+        <Detect2Chars char="\" char1="{" context="#stay" attribute="String Special Character"/>+        <Detect2Chars char="\" char1="}" context="#stay" attribute="String Special Character"/>+        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>+        <RegExpr String="(?:[^{}\\]*|\\(?![{}\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>+      </context>++      <context name="q_String&lt;" attribute="String" lineEndContext="#stay">+        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="&lt;" context="q_String&lt;" attribute="String Delimiter"/>+        <Detect2Chars char="\" char1="&lt;" context="#stay" attribute="String Special Character"/>+        <Detect2Chars char="\" char1=">" context="#stay" attribute="String Special Character"/>+        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>+        <RegExpr String="(?:[^&lt;>\\]*|\\(?![&lt;>\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>+      </context>++      <context name="q_StringAny" attribute="String" lineEndContext="#stay">+        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>+        <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>+        <RegExpr String="(?:[^\\%1]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>+      </context>++      <context name="q_RawString" attribute="String" lineEndContext="#stay">+        <DetectChar char="'" context="#pop" attribute="String Delimiter"/>+        <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>+        <RegExpr String="(?:[^\\']*|\\(?![\\']|&quotingconstruct;|$))*" context="#stay" attribute="String"/>+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>+      </context>++      <!-- qq String -->++      <context name="qq_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop">+        <DetectSpaces/>+        <DetectChar char="(" context="#pop#pop!qq_String(" attribute="String Delimiter"/>+        <DetectChar char="[" context="#pop#pop!qq_String[" attribute="String Delimiter"/>+        <DetectChar char="{" context="#pop#pop!qq_String{" attribute="String Delimiter"/>+        <DetectChar char="&lt;" context="#pop#pop!qq_String&lt;" attribute="String Delimiter"/>+        <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!qq_StringAny" attribute="String Delimiter"/>+      </context>++      <context name="qq_String(" attribute="String" lineEndContext="#stay">+        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="(" context="qq_String(" attribute="String Delimiter"/>+        <IncludeRules context="find_qq_StringCommon"/>+        <RegExpr String="[^()\\${@&amp;]*" context="#stay" attribute="String"/>+      </context>++      <context name="qq_String[" attribute="String" lineEndContext="#stay">+        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="[" context="qq_String[" attribute="String Delimiter"/>+        <IncludeRules context="find_qq_StringCommon"/>+        <RegExpr String="[^\[\]\\${@&amp;]*" context="#stay" attribute="String"/>+      </context>++      <context name="qq_String{" attribute="String" lineEndContext="#stay">+        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="{" context="qq_String{" attribute="String Delimiter"/>+        <IncludeRules context="find_qq_StringCommon"/>+        <RegExpr String="[^{}\\$@&amp;]*" context="#stay" attribute="String"/>+      </context>++      <context name="qq_String&lt;" attribute="String" lineEndContext="#stay">+        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="&lt;" context="qq_String&lt;" attribute="String Delimiter"/>+        <IncludeRules context="find_qq_StringCommon"/>+        <RegExpr String="[^&lt;>\\${@&amp;]*" context="#stay" attribute="String"/>+      </context>++      <context name="qq_String«" attribute="String" lineEndContext="#stay">+        <DetectChar char="»" context="#pop" attribute="String Delimiter"/>+        <DetectChar char="«" context="qq_String«" attribute="String Delimiter"/>+        <IncludeRules context="find_qq_StringCommon"/>+        <RegExpr String="[^«»\\${@&amp;]*" context="#stay" attribute="String"/>+      </context>++      <context name="qq_String&lt;&lt;" attribute="String" lineEndContext="#stay">+        <Detect2Chars char=">" char1=">" context="#pop" attribute="String Delimiter"/>+        <Detect2Chars char="&lt;" char1="&lt;" context="qq_String&lt;&lt;" attribute="String Delimiter"/>+        <IncludeRules context="find_qq_StringCommon"/>+        <RegExpr String="([^&lt;>\\${@&amp;]*|&lt;(?!&lt;)|>(?!>))" context="#stay" attribute="String"/>+      </context>++      <context name="qq_StringAny" attribute="String" lineEndContext="#stay">+        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>+        <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>+        <IncludeRules context="find_qq_StringCommon"/>+        <RegExpr String="[^%1\\${@&amp;]*" dynamic="1" context="#stay" attribute="String"/>+      </context>++      <context name="qq_RawString" attribute="String" lineEndContext="#stay">+        <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>+        <IncludeRules context="find_qq_StringCommon"/>+        <RegExpr String="[^\\&quot;${@&amp;]*" context="#stay" attribute="String"/>+      </context>++      <context name="find_qq_StringCommon" attribute="String" lineEndContext="#stay">+        <DetectChar char="\" context="qq_StringEscape" attribute="Operator" lookAhead="1"/>+        <DetectChar char="{" context="qq_Interpolation" attribute="String (interpolated)"/>+        <DetectChar char="$" context="qq_StringMaybeVar$" attribute="String" lookAhead="1"/>+        <AnyChar String="@%" context="qq_StringMaybeVar" attribute="String" lookAhead="1"/>+        <DetectChar char="&amp;" context="qq_StringSigil" attribute="String" lookAhead="1"/>+      </context>++      <context name="qq_StringEscape" attribute="String Special Character" lineEndContext="#pop">+        <Detect2Chars char="\" char1="q" context="#pop!q_QuotingForm" attribute="Operator"/>+        <Detect2Chars char="\" char1="x" context="HexaString" attribute="String Special Character"/>+        <StringDetect String="\c[" context="UnicodeCodepoint" attribute="String Special Character"/>+        <Detect2Chars char="\" char1="c" context="UnicodeCodepointDecimal" attribute="String Special Character"/>+        <Detect2Chars char="\" char1="o" context="OctalString" attribute="String Special Character"/>+        <RegExpr String="\\.?" context="#pop" attribute="String Special Character"/>+      </context>++      <context name="qq_Interpolation" attribute="String (interpolated)" lineEndContext="#stay">+        <DetectChar char="}" context="#pop" attribute="String (interpolated)"/>+        <IncludeRules context="base"/>+      </context>++      <context name="qq_StringSigil" attribute="Function" lineEndContext="#stay">+        <RegExpr String="&amp;&ident;\(" context="#pop!FunctionParameters" attribute="Function"/>+        <DetectChar char="&amp;" context="#pop" attribute="String"/>+      </context>++      <context name="qq_StringMaybeVar$" attribute="String" lineEndContext="#stay">+        <RegExpr String="\$(?=[&twigils;]?&prefixdollarvarname;)" context="qq_InterpolationVar" attribute="Variable"/>+        <DetectChar char="$" context="#pop" attribute="String"/>+      </context>++      <context name="qq_StringMaybeVar" attribute="String" lineEndContext="#stay">+        <RegExpr String="@\(\)|[%@]\$/|[@%]&ident;" context="qq_Interpolation1" attribute="Variable"/>+        <AnyChar String="@%" context="#pop" attribute="String"/>+      </context>++      <context name="qq_InterpolationVar" attribute="String" lineEndContext="#stay">+        <AnyChar String="&twigils;" context="#stay" attribute="Twigil"/>+        <RegExpr String="&dollarvarname;" context="#pop!qq_Interpolation1" attribute="Variable"/>+      </context>++      <context name="qq_Interpolation1" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">+        <DetectChar char="[" context="qq_InterpolationIndex" attribute="Function"/>+        <DetectChar char="." context="qq_InterpolationFunction" attribute="Function" lookAhead="1"/>+      </context>++      <context name="qq_InterpolationIndex" attribute="String" lineEndContext="#stay">+        <DetectChar char="]" context="#pop#pop#pop" attribute="Function"/>+        <IncludeRules context="base"/>+      </context>++      <context name="qq_InterpolationFunction" attribute="String" lineEndContext="#stay">+        <RegExpr String="(?:\.&ident;)*\.&ident;\(" context="#pop#pop#pop!FunctionParameters" attribute="Function"/>+        <DetectChar char="." context="#pop#pop#pop" attribute="String"/>+      </context>++      <context name="FunctionParameters" attribute="String" lineEndContext="#stay">+        <DetectChar char=")" context="#pop" attribute="Function"/>+        <DetectChar char="(" context="FunctionParameters" attribute="Function"/>+        <IncludeRules context="base"/>+      </context>+++      <!-- Comment -->++      <context name="StartComment" attribute="Comment" lineEndContext="#pop" fallthrough="1" fallthroughContext="SingleLineComment">+        <DetectChar attribute="Comment" context="MultilineComment" char="`"/>+        <AnyChar attribute="Pod Operator" context="MultilineComment" String="=|"/>+      </context>++      <context name="MultilineComment" attribute="Comment" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop!SingleLineComment">+        <!-- TODO a new rule is needed to find the corresponding closures -->+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment(((" String="(((" beginRegion="comment"/>+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment[[[" String="[[[" beginRegion="comment"/>+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment{{{" String="{{{" beginRegion="comment"/>+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment«««" String="«««" beginRegion="comment"/>+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;&lt;" String="&lt;&lt;&lt;" beginRegion="comment"/>+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment((" char="(" char1="(" beginRegion="comment"/>+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment[[" char="[" char1="[" beginRegion="comment"/>+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment{{" char="{" char1="{" beginRegion="comment"/>+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment««" char="«" char1="«" beginRegion="comment"/>+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;" char="&lt;" char1="&lt;" beginRegion="comment"/>+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment(" char="(" beginRegion="comment"/>+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment[" char="[" beginRegion="comment"/>+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment{" char="{" beginRegion="comment"/>+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment«" char="«" beginRegion="comment"/>+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment&lt;" char="&lt;" beginRegion="comment"/>+        <!-- etc -->+      </context>++      <context name="MultilineComment(((" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <StringDetect String=")))" attribute="Comment" context="#pop" endRegion="comment"/>+        <StringDetect String="(((" attribute="Comment" context="MultilineComment(((" beginRegion="comment"/>+      </context>+      <context name="MultilineComment[[[" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <StringDetect String="]]]" attribute="Comment" context="#pop" endRegion="comment"/>+        <StringDetect String="[[[" attribute="Comment" context="MultilineComment[[[" beginRegion="comment"/>+      </context>+      <context name="MultilineComment{{{" attribute="Comment" lineEndContext="#stay">+        <StringDetect String="}}}" attribute="Comment" context="#pop" endRegion="comment"/>+        <StringDetect String="{{{" attribute="Comment" context="MultilineComment{{{" beginRegion="comment"/>+        <IncludeRules context="SingleLineComment"/>+      </context>+      <context name="MultilineComment«««" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <StringDetect String="»»»" attribute="Comment" context="#pop" endRegion="comment"/>+        <StringDetect String="«««" attribute="Comment" context="MultilineComment«««" beginRegion="comment"/>+      </context>+      <context name="MultilineComment&lt;&lt;&lt;" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <StringDetect String=">>>" attribute="Comment" context="#pop" endRegion="comment"/>+        <StringDetect String="&lt;&lt;&lt;" attribute="Comment" context="MultilineComment&lt;&lt;&lt;" beginRegion="comment"/>+      </context>++      <context name="MultilineComment((" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <Detect2Chars char=")" char1=")" attribute="Comment" context="#pop" endRegion="comment"/>+        <Detect2Chars char="(" char1="(" attribute="Comment" context="MultilineComment((" beginRegion="comment"/>+      </context>+      <context name="MultilineComment[[" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <Detect2Chars char="]" char1="]" attribute="Comment" context="#pop" endRegion="comment"/>+        <Detect2Chars char="[" char1="[" attribute="Comment" context="MultilineComment[[" beginRegion="comment"/>+      </context>+      <context name="MultilineComment{{" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <Detect2Chars char="}" char1="}" attribute="Comment" context="#pop" endRegion="comment"/>+        <Detect2Chars char="{" char1="{" attribute="Comment" context="MultilineComment{{" beginRegion="comment"/>+      </context>+      <context name="MultilineComment««" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <Detect2Chars char="»" char1="»" attribute="Comment" context="#pop" endRegion="comment"/>+        <Detect2Chars char="«" char1="«" attribute="Comment" context="MultilineComment««" beginRegion="comment"/>+      </context>+      <context name="MultilineComment&lt;&lt;" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <Detect2Chars char=">" char1=">" attribute="Comment" context="#pop" endRegion="comment"/>+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Comment" context="MultilineComment&lt;&lt;" beginRegion="comment"/>+      </context>++      <context name="MultilineComment(" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <DetectChar char=")" attribute="Comment" context="#pop" endRegion="comment"/>+        <DetectChar char="(" attribute="Comment" context="MultilineComment(" beginRegion="comment"/>+      </context>+      <context name="MultilineComment[" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <DetectChar char="]" attribute="Comment" context="#pop" endRegion="comment"/>+        <DetectChar char="[" attribute="Comment" context="MultilineComment[" beginRegion="comment"/>+      </context>+      <context name="MultilineComment{" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <DetectChar char="}" attribute="Comment" context="#pop" endRegion="comment"/>+        <DetectChar char="{" attribute="Comment" context="MultilineComment{" beginRegion="comment"/>+      </context>+      <context name="MultilineComment«" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <DetectChar char="»" attribute="Comment" context="#pop" endRegion="comment"/>+        <DetectChar char="«" attribute="Comment" context="MultilineComment«" beginRegion="comment"/>+      </context>+      <context name="MultilineComment&lt;" attribute="Comment" lineEndContext="#stay">+        <IncludeRules context="SingleLineComment"/>+        <DetectChar char=">" attribute="Comment" context="#pop" endRegion="comment"/>+        <DetectChar char="&lt;" attribute="Comment" context="MultilineComment&lt;" beginRegion="comment"/>+      </context>++      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop#pop">+        <DetectSpaces/>+        <IncludeRules context="##Comments"/>+        <DetectIdentifier/>+      </context>+++      <!-- Error -->++      <context name="Error" attribute="Error" lineEndContext="#pop"/>++      <context name="CharErrorIfNoSep" attribute="Error" lineEndContext="#pop">+        <RegExpr String="[^;)]" context="#pop" attribute="Error"/>+      </context>++      <context name="CharError" attribute="Error" lineEndContext="#pop">+        <RegExpr String="." context="#pop" attribute="Error"/>+      </context>++    </contexts>++    <itemDatas>+      <itemData name="Normal Text"               defStyleNum="dsNormal"/>+      <itemData name="Keyword"                   defStyleNum="dsKeyword" spellChecking="false"/>+      <itemData name="Keyword Value"             defStyleNum="dsKeyword" spellChecking="false"/>+      <itemData name="Variable"                  defStyleNum="dsVariable" spellChecking="false"/>+      <itemData name="Twigil"                    defStyleNum="dsAttribute" spellChecking="false"/>+      <itemData name="Control Flow"              defStyleNum="dsControlFlow" spellChecking="false"/>+      <itemData name="Variable Storage"          defStyleNum="dsKeyword" spellChecking="false" bold="1"/>+      <itemData name="Property"                  defStyleNum="dsBuiltIn" spellChecking="false" italic="1"/>+      <itemData name="Declare Routine"           defStyleNum="dsBuiltIn" spellChecking="false"/>+      <itemData name="Function"                  defStyleNum="dsFunction" spellChecking="false"/>+      <itemData name="Operator"                  defStyleNum="dsKeyword" spellChecking="false"/>+      <itemData name="Separator Symbol"          defStyleNum="dsNormal" spellChecking="false"/>+      <itemData name="Data Type"                 defStyleNum="dsDataType" spellChecking="false"/>+      <itemData name="Attribute"                 defStyleNum="dsAttribute" spellChecking="false"/>+      <itemData name="Decimal"                   defStyleNum="dsDecVal" spellChecking="false"/>+      <itemData name="Octal"                     defStyleNum="dsBaseN" spellChecking="false"/>+      <itemData name="Hex"                       defStyleNum="dsBaseN" spellChecking="false"/>+      <itemData name="Float"                     defStyleNum="dsFloat" spellChecking="false"/>+      <itemData name="String"                    defStyleNum="dsString"/>+      <itemData name="String Delimiter"          defStyleNum="dsChar" spellChecking="false"/>+      <itemData name="String (interpolated)"     defStyleNum="dsString"/>+      <itemData name="String Special Character"  defStyleNum="dsChar"/>+      <itemData name="Pattern"                   defStyleNum="dsOthers" spellChecking="false"/>+      <itemData name="Pattern Meta Character"    defStyleNum="dsChar" spellChecking="false"/>+      <itemData name="Pattern Character Class"   defStyleNum="dsBaseN" spellChecking="false"/>+      <itemData name="Pattern Unicode Property"  defStyleNum="dsBaseN" spellChecking="false"/>+      <itemData name="Pattern Character"         defStyleNum="dsChar" spellChecking="false"/>+      <itemData name="Pattern Modifier"          defStyleNum="dsKeyword" spellChecking="false"/>+      <itemData name="Pattern Quantifier"        defStyleNum="dsControlFlow" spellChecking="false"/>+      <itemData name="Pattern Control Flow"      defStyleNum="dsControlFlow" spellChecking="false"/>+      <itemData name="Pattern Special Character" defStyleNum="dsBuiltIn" spellChecking="false"/>+      <itemData name="Comment"                   defStyleNum="dsComment"/>+      <itemData name="Error"                     defStyleNum="dsError" spellChecking="false"/>+      <itemData name="Pod"                       defStyleNum="dsDocumentation" spellChecking="false"/>+      <itemData name="Pod Paragraph"             defStyleNum="dsDocumentation"/>+      <itemData name="Pod Block"                 defStyleNum="dsRegionMarker" spellChecking="false"/>+      <itemData name="Pod Typename"              defStyleNum="dsAnnotation" spellChecking="false"/>+      <itemData name="Pod Typename Value"        defStyleNum="dsCommentVar" spellChecking="false"/>+      <itemData name="Pod Unknown"               defStyleNum="dsError" spellChecking="false"/>+      <itemData name="Pod Operator"              defStyleNum="dsOperator" spellChecking="false"/>+      <itemData name="Pod Key"                   defStyleNum="dsAttribute" spellChecking="false"/>+      <itemData name="Pod Config"                defStyleNum="dsCommentVar" spellChecking="false"/>+      <itemData name="Pod Bold"                  defStyleNum="dsDocumentation" bold="1"/>+      <itemData name="Pod Italic"                defStyleNum="dsDocumentation" italic="1"/>+      <itemData name="Pod Underline"             defStyleNum="dsDocumentation" underline="1"/>+      <itemData name="Pod Link"                  defStyleNum="dsOthers" underline="1"/>+      <itemData name="Pod Note"                  defStyleNum="dsInformation"/>+      <itemData name="Pod Comment"               defStyleNum="dsComment"/>+      <itemData name="Pod Verbatim"              defStyleNum="dsInformation" spellChecking="false"/>+      <itemData name="Pod Unicode"               defStyleNum="dsChar" spellChecking="false"/>+      <itemData name="Pod Indexed Terms"         defStyleNum="dsOthers" spellChecking="false"/>+    </itemDatas>+  </highlighting>+  <general>+    <comments>+      <comment name="singleLine" start="#"/>+    </comments>+    <keywords casesensitive="1" weakDeliminator="-'"/>+  </general>+</language>+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
xml/rest.xml view
@@ -14,7 +14,7 @@   Copyright 2010 Matt Williams (matt@milliams.com)   Copyright 2014 Matthew Woehlke (mw_triad@users.sourceforge.net)   -->-<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="8" kateversion="5.0" casesensitive="1">+<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="9" kateversion="5.0" casesensitive="1">    <highlighting> @@ -32,7 +32,7 @@         <RegExpr attribute="Code" String="::$" context="CodeBlock" />         <RegExpr attribute="SubstitutionDefinition" context="#stay" String="^\s*\.\. \|[&SimpleReferenceNameChars; ]+\|\s+[&SimpleReferenceNameChars;]+::\s" minimal="true" column="0"/>         <RegExpr attribute="Field" String=":(?=([^:]*\\:)*[^:]*:(\s|$))" context="Field" firstNonSpace="true"/>-        <RegExpr attribute="Comment" context="Comment" String="^(\s*)\.\.(\s|$)(?!([\w\-_\.]+)(:[\w\-_\.]+)*::(\s|$))" column="0"/>+        <RegExpr attribute="Comment" context="Comment" String="^(\s*)\.\.(?:\s|$)(?![\w\-_\.]+(?::[\w\-_\.]+)*::(?:\s|$))" column="0"/>          <!-- Keep in sync with Markdown’s implicitlink entity -->         <RegExpr attribute="StandaloneHyperlink" context="#stay" String="\b&startlink;[^&quot;&gt;\s`\)]*[^\s!&quot;&apos;`\(\)\*,\.:;&lt;&gt;\?~\]\}\\](?=[[:punct:]]*(?:[\s\)]|$))" />
xml/ruby.xml view
@@ -31,7 +31,7 @@  <!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". --> <language name="Ruby" section="Scripts"-	  version="14" kateversion="5.0"+	  version="15" kateversion="5.0" 	  extensions="*.rb;*.rjs;*.rxml;*.xml.erb;*.js.erb;*.rake;Rakefile;Gemfile;*.gemspec;Vagrantfile" 	  mimetype="application/x-ruby" 	  style="ruby" indenter="ruby"@@ -199,7 +199,8 @@ 				<!-- "def" - "end" blocks --> 				<!-- check for statement modifiers with regexes --> 				<DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/>-				<RegExpr attribute="Keyword" String="(\=|\(|\[|\{)\s*(if|unless|while|until)\b" context="#stay" beginRegion="def block"/>+				<DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/>+				<RegExpr attribute="Keyword" String="[=([]\s*(if|unless|while|until)\b" context="#stay" beginRegion="def block"/> 				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block" /> 				<RegExpr attribute="Keyword" String="\;\s*(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/> 				<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>@@ -297,8 +298,6 @@  				<DetectChar attribute="Delimiter" char="["  context="#stay"/> 				<DetectChar attribute="Delimiter" char="]"  context="check_div_1"/>-				<DetectChar attribute="Delimiter" char="{" context="#stay" beginRegion="def block"/>-				<DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/>  				<RegExpr attribute="Instance Variable" String="@[a-zA-Z_0-9]+" context="check_div_1"/> 				<RegExpr attribute="Class Variable" String="@@[a-zA-Z_0-9]+" context="check_div_1"/>
xml/sed.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="sed" section="Scripts" version="5" kateversion="5.0" extensions="*.sed" mimetype="text/x-sed" author="Bart Sas (bart.sas@gmail.com)" license="GPL">+<language name="sed" section="Scripts" version="6" kateversion="5.0" extensions="*.sed" mimetype="text/x-sed" author="Bart Sas (bart.sas@gmail.com)" license="GPL">         <highlighting>                 <contexts>                         <context name="BeginningOfLine" attribute="Normal" lineEndContext="#stay">@@ -14,7 +14,6 @@                                 <DetectChar char=":"     attribute="Label"       context="Label"/>                                 <DetectChar char="!"     attribute="Negation"    context="Command"/>                                 <IncludeRules                                    context="Command"/>-                                <RegExpr String="\S"     attribute="Error"       context="Error"/>                         </context>                          <context name="FirstAddressRegex" attribute="Regex" lineEndContext="Error" dynamic="true">@@ -28,7 +27,6 @@                                 <DetectSpaces/>                                 <DetectChar char="!" attribute="Negation" context="Command"/>                                 <IncludeRules                             context="AfterFirstAddress2"/>-                                <RegExpr String="\S" attribute="Error"    context="Error"/>                         </context>                          <context name="AfterFirstAddress2" attribute="Normal" lineEndContext="BeginningOfLine">@@ -36,7 +34,6 @@                                 <DetectChar char="," attribute="Normal" context="SecondAddress"/>                                 <DetectChar char="~" attribute="Normal" context="Step"/>                                 <IncludeRules                           context="Command"/>-                                <RegExpr String="\S" attribute="Error"  context="Error"/>                         </context>                          <context name="SecondAddress" attribute="Normal" lineEndContext="Error">@@ -59,7 +56,6 @@                                 <DetectSpaces/>                                 <DetectChar char="!" attribute="Negation" context="Command"/>                                 <IncludeRules                             context="Command"/>-                                <RegExpr String="\S" attribute="Error"    context="Error"/>                         </context>                          <context name="Step" attribute="Normal" lineEndContext="Error">
xml/spdx-comments.xml view
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"> <language-    version="2"+    version="4"     kateversion="3.1"     name="SPDX-Comments"     section="Other"@@ -42,6 +42,7 @@       <item>AML</item>       <item>AMPAS</item>       <item>ANTLR-PD</item>+      <item>ANTLR-PD-fallback</item>       <item>APAFML</item>       <item>APL-1.0</item>       <item>APSL-1.0</item>@@ -77,6 +78,7 @@       <item>BSD-Protection</item>       <item>BSD-Source-Code</item>       <item>BSL-1.0</item>+      <item>BUSL-1.1</item>       <item>Bahyph</item>       <item>Barr</item>       <item>Beerware</item>@@ -92,6 +94,7 @@       <item>CC-BY-2.5</item>       <item>CC-BY-3.0</item>       <item>CC-BY-3.0-AT</item>+      <item>CC-BY-3.0-US</item>       <item>CC-BY-4.0</item>       <item>CC-BY-NC-1.0</item>       <item>CC-BY-NC-2.0</item>@@ -116,6 +119,7 @@       <item>CC-BY-ND-4.0</item>       <item>CC-BY-SA-1.0</item>       <item>CC-BY-SA-2.0</item>+      <item>CC-BY-SA-2.0-UK</item>       <item>CC-BY-SA-2.5</item>       <item>CC-BY-SA-3.0</item>       <item>CC-BY-SA-3.0-AT</item>@@ -206,6 +210,7 @@       <item>Glulxe</item>       <item>HPND</item>       <item>HPND-sell-variant</item>+      <item>HTMLTIDY</item>       <item>HaskellReport</item>       <item>Hippocratic-2.1</item>       <item>IBM-pibs</item>@@ -252,6 +257,7 @@       <item>MIT-advertising</item>       <item>MIT-enna</item>       <item>MIT-feh</item>+      <item>MIT-open-group</item>       <item>MITNFA</item>       <item>MPL-1.0</item>       <item>MPL-1.1</item>@@ -515,6 +521,7 @@     </list>      <contexts>+       <context name="Normal" attribute="SPDX Tag" lineEndContext="#pop">         <WordDetect String="SPDX-License-Identifier:" attribute="SPDX Tag" context="license-expression" />         <keyword String="tags" attribute="SPDX Tag" />@@ -536,13 +543,13 @@     </contexts>      <itemDatas>-      <itemData name="SPDX Tag" defStyleNum="dsAnnotation" italic="true" />-      <itemData name="SPDX Value" defStyleNum="dsAnnotation" italic="true" />-      <itemData name="SPDX License" defStyleNum="dsAnnotation" italic="true" />-      <itemData name="SPDX License Exception" defStyleNum="dsAnnotation" italic="true" />-      <itemData name="SPDX Deprecated License" defStyleNum="dsAnnotation" italic="true" />-      <itemData name="SPDX Deprecated License Exception" defStyleNum="dsAnnotation" italic="true" />-      <itemData name="SPDX License Expression Operator" defStyleNum="dsOperator" italic="true" />+      <itemData name="SPDX Tag" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />+      <itemData name="SPDX Value" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />+      <itemData name="SPDX License" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />+      <itemData name="SPDX License Exception" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />+      <itemData name="SPDX Deprecated License" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />+      <itemData name="SPDX Deprecated License Exception" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />+      <itemData name="SPDX License Expression Operator" defStyleNum="dsOperator" italic="true" spellChecking="false" />     </itemDatas>    </highlighting>
xml/sql-mysql.xml view
@@ -6,7 +6,7 @@   modifications by Milian Wolff (mail@milianw.de)   v3 fix comments by Gene Thomas <gene@genethomas.com> -->-<language name="SQL (MySQL)" version="7" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">+<language name="SQL (MySQL)" version="8" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">   <highlighting>     <list name="controlFlow">       <item>BEGIN</item>@@ -392,7 +392,6 @@         <WordDetect attribute="Keyword" context="#stay" insensitive="true" String="CHARACTER SET"/>         <!-- using the lists -->         <keyword attribute="Keyword" context="#stay" String="keywords"/>-        <LineContinue attribute="Symbol" context="#stay" char="/" column="0"/>         <keyword attribute="Operator Keyword" context="#stay" String="operators"/>         <keyword attribute="ControlFlow" context="#stay" String="controlFlow"/>         <AnyChar attribute="Operator" context="#stay" String="+-*/=&lt;&gt;"/>
xml/sql-postgresql.xml view
@@ -3,7 +3,7 @@ <!-- PostgreSQL SQL, syntax definition based on sql.xml by Yury Lebedev      v5 fix comments by Gene Thomas <gene@genethomas.com>   -->-<language name="SQL (PostgreSQL)" version="11" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">+<language name="SQL (PostgreSQL)" version="12" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">   <highlighting>     <list name="controlFlow">       <item>BEGIN</item>@@ -1008,16 +1008,16 @@         <Int attribute="Decimal" context="#stay"/>         <DetectChar attribute="String" context="String" char="'"/>         <DetectChar attribute="Identifier" context="Identifier" char="&quot;"/>-        <AnyChar attribute="Symbol" context="#stay" String=":&#38;"/>-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="@@?[^@ \t\r\n]" column="0"/>-        <RegExpr attribute="Operator" context="MultiLineString" String="\$([^\$\n\r]*)\$"/>-        <AnyChar attribute="Operator" context="#stay" String="+-*/=%^!&lt;&gt;&amp;|@~#"/>         <Detect2Chars attribute="Operator" context="#stay" char=":" char1="="/>+        <AnyChar attribute="Symbol" context="#stay" String=":&amp;"/>         <Detect2Chars attribute="Operator" context="#stay" char="." char1="."/>         <!-- geometric operators -->         <Detect2Chars attribute="Operator" context="#stay" char="?" char1="#"/>         <Detect2Chars attribute="Operator" context="#stay" char="?" char1="-"/>         <Detect2Chars attribute="Operator" context="#stay" char="?" char1="|"/>+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="@@?[^@ \t\r\n]" column="0"/>+        <RegExpr attribute="Operator" context="MultiLineString" String="\$([^\$\n\r]*)\$"/>+        <AnyChar attribute="Operator" context="#stay" String="+-*/=%^!&lt;&gt;&amp;|@~#"/>       </context>       <context name="CreateFunction" attribute="Normal Text" lineEndContext="#stay">         <RegExpr attribute="Function" context="FunctionBody" String="\$([^\$\n\r]*)\$"/>@@ -1033,7 +1033,7 @@       <context name="String" attribute="String" lineEndContext="#stay">         <LineContinue attribute="String" context="#pop"/>         <HlCStringChar attribute="String Char" context="#stay"/>-        <DetectChar attribute="Symbol" context="#stay" char="&#38;"/>+        <DetectChar attribute="Symbol" context="#stay" char="&amp;"/>         <DetectChar attribute="String" context="#pop" char="'"/>       </context>       <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop">
xml/sql.xml view
@@ -5,7 +5,7 @@      v3 fix comments by Gene Thomas <gene@genethomas.com>   --> <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->-<language name="SQL" version="7" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Yury Lebedev (yurylebedev@mail.ru)" license="LGPL">+<language name="SQL" version="8" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Yury Lebedev (yurylebedev@mail.ru)" license="LGPL">   <highlighting>     <list name="controlFlow">       <item>BEGIN</item>@@ -881,7 +881,6 @@          <LineContinue attribute="Symbol" context="#stay" char="/" column="0"/> <!-- conflict with "operators" keywords -->         <keyword attribute="Keyword" String="keywords" context="#stay"/>-        <LineContinue attribute="Symbol" context="#stay" char="/" column="0"/>         <keyword attribute="Operator Keyword" context="#stay" String="operators"/>         <keyword attribute="ControlFlow" context="#stay" String="controlFlow"/>         <AnyChar attribute="Operator" context="#stay" String="+-*/=&lt;&gt;"/>
xml/typescript.xml view
@@ -61,7 +61,7 @@ -->  <language name="TypeScript"-          version="11"+          version="12"           kateversion="5.53"           section="Scripts"           extensions="*.ts"@@ -328,7 +328,8 @@ 		<context name="Normal-ParametersOverridden" attribute="Normal Text" lineEndContext="#stay"> 			<IncludeRules context="Normal Pt1" /> 			<IncludeRules context="Normal Pt2" />-			<RegExpr context="#stay" attribute="Parameter" String="&parameter;" />+			<!-- unrecheable by Regex=&identifier; in "JSBase##JavaScript" included by "Normal Pt2"+			<RegExpr context="#stay" attribute="Parameter" String="&parameter;" />--> 		</context> 		<context name="ConditionalExpressionEnd" attribute="Normal Text" lineEndContext="#stay"> 			<AnyChar context="#pop" String=";,}])" lookAhead="true" />@@ -579,7 +580,6 @@ 			<RegExpr context="#stay" attribute="Object Member" String="&identifier;(?=&objectPoint;)" /> 			<RegExpr context="#pop!NoRegExp" attribute="Object Member" String="&identifier;" /> 			<IncludeRules context="NoRegExp" />-			<DetectSpaces />  			<!-- Generic functions --> 			<keyword context="#pop!NoRegExp" attribute="Function Name" String="functions" />
xml/verilog.xml view
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">-<language name="Verilog" version="6" kateversion="5.0" section="Hardware" extensions="*.v;*.V;*.vl" mimetype="text/x-verilog-src" author="Yevgen Voronenko (ysv22@drexel.edu), Ryan Dalzell (ryan@tullyroan.com)" license="">+<language name="Verilog" version="7" kateversion="5.0" section="Hardware" extensions="*.v;*.V;*.vl" mimetype="text/x-verilog-src" author="Yevgen Voronenko (ysv22@drexel.edu), Ryan Dalzell (ryan@tullyroan.com)" license="">   <highlighting>     <list name="keywords">       <item>macromodule</item>@@ -232,7 +232,7 @@       <itemData name="String"  defStyleNum="dsString"/>       <itemData name="String Char"  defStyleNum="dsChar"/>       <itemData name="Comment"  defStyleNum="dsComment"/>-      <itemData name="Symbol"  defStyleNum="dsNormal"/>+      <itemData name="Symbol"  defStyleNum="dsOperator"/>       <itemData name="Preprocessor"  defStyleNum="dsOthers"/>       <itemData name="Prep. Lib"  defStyleNum="dsFloat"/>       <itemData name="System Task" defStyleNum="dsDataType"/>
xml/vhdl.xml view
@@ -1,19 +1,17 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd" [   <!ENTITY funcname "[A-Za-z_:][A-Za-z0-9_:#&#37;@-]*">-  <!ENTITY varname  "\b(?!(?:process|constant|signal|variable))([A-Za-z_][A-Za-z0-9_]*)\b">-  <!ENTITY bos      "(\b)">                        <!-- bol or space following -->-  <!ENTITY eos      "\b">                <!-- eol or space following -->-  <!ENTITY noword   "(?![\w$+-])">                <!-- no word, $, + or - following -->-  <!ENTITY label     "((&varname;)\s*:\s*)?">-+  <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">+  <!ENTITY identifier "\b(?:[A-Za-z_][A-Za-z0-9_]*)\b|/(?:[^/]++(?://)?+)*+/">+  <!ENTITY bos      "\b">                        <!-- bol or space following --> ]>-<language name="VHDL" version="11" kateversion="5.0" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">+<language name="VHDL" version="13" kateversion="5.62" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">   <highlighting>     <list name="keywordsToplevel">       <item>file</item>       <item>library</item>       <item>use</item>+      <item>with</item>     </list>      <list name="keywords">@@ -30,6 +28,7 @@       <item>block</item>       <item>body</item>       <item>bus</item>+      <item>case</item>       <item>component</item>       <item>constant</item>       <item>context</item>@@ -37,8 +36,9 @@       <item>default</item>       <item>disconnect</item>       <item>downto</item>+      <item>else</item>+      <item>elsif</item>       <item>end</item>-      <item>exit</item>       <item>fairness</item>       <item>falling_edge</item>       <item>file</item>@@ -49,6 +49,7 @@       <item>generic</item>       <item>group</item>       <item>guarded</item>+      <item>if</item>       <item>impure</item>       <item>inertial</item>       <item>is</item>@@ -57,7 +58,6 @@       <item>literal</item>       <item>map</item>       <item>new</item>-      <item>next</item>       <item>null</item>       <item>of</item>       <item>on</item>@@ -77,7 +77,6 @@       <item>reject</item>       <item>release</item>       <item>report</item>-      <item>return</item>       <item>rising_edge</item>       <item>select</item>       <item>sequence</item>@@ -86,6 +85,7 @@       <item>shared</item>       <item>strong</item>       <item>subtype</item>+      <item>then</item>       <item>to</item>       <item>transport</item>       <item>type</item>@@ -125,11 +125,10 @@       <item>srl</item>     </list> -    <list name="if">-      <item>if</item>-      <item>else</item>-      <item>elsif</item>-      <item>then</item>+    <list name="controls">+      <item>exit</item>+      <item>next</item>+      <item>return</item>     </list>      <list name="signals">@@ -146,11 +145,6 @@       <item>others</item>     </list> -    <list name="case">-      <item>case</item>-      <item>when</item>-    </list>-     <list name="timeunits">       <item>fs</item>       <item>ps</item>@@ -215,388 +209,389 @@     <contexts>  <!-- start / global environment -->-      <context name="start" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>+      <context name="start" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preDeclaration"/> -        <RegExpr attribute="Control" context="architecture_main" insensitive="true" lookAhead="true"-                 String="&bos;architecture\s+(&varname;)&eos;"/>-        <StringDetect attribute="Control" context="entity" insensitive="true"-                 String="entity"/>-        <RegExpr attribute="Control" context="package" insensitive="true" lookAhead="true" beginRegion="PackageRegion1"-                 String="&bos;package\s+(&varname;)\s+is&eos;"/>-        <RegExpr attribute="Control" context="packagebody" lookAhead="true" insensitive="true" beginRegion="PackageBodyRegion1"-                 String="&bos;package\s+body\s+(&varname;)\s+is&eos;"/>-       <!-- <StringDetect  attribute="Control"  context="arch_decl"      String="package"     />temporary-->-        <RegExpr attribute="Control" context="configuration" insensitive="true" lookAhead="true"-                 String="&bos;configuration\s+(&varname;)&eos;"/>+        <WordDetect attribute="Control" context="entity" insensitive="1" String="entity"/>+        <WordDetect attribute="Control" context="configuration" insensitive="1" String="configuration"/>+        <WordDetect attribute="Control" context="architecture" insensitive="1" String="architecture"/>+        <WordDetect attribute="Control" context="package" insensitive="1" String="package"/>+         <keyword attribute="Keyword" context="#stay" String="keywordsToplevel"/>++        <IncludeRules context="postDeclaration"/>       </context>  -      <context name="package" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control"   context="#stay" insensitive="true" String="&bos;package&eos;" />-        <RegExpr attribute="Keyword"   context="packagemain" insensitive="true" String="&bos;is&eos;" />-        <RegExpr attribute="Name"      context="#stay"     insensitive="true" String="&bos;%2&eos;" dynamic="true"/>-        <RegExpr attribute="Redirection" context="#pop"  dynamic="true" endRegion="PackageRegion1" insensitive="true"-                 String="&bos;end(\s+package)?(\s+%2)?\s*;" />-        <IncludeRules context="generalDetection"/>+      <context name="package" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">+        <IncludeRules context="blank"/>+        <WordDetect attribute="Control" context="#pop!packagebody" insensitive="true" String="body"/>+        <RegExpr attribute="Name" context="package_main" beginRegion="PackageRegion1"+                 String="(&identifier;)"/>       </context> -      <context name="packagemain" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Keyword"   context="#pop" lookAhead="true" insensitive="true" String="&bos;end&eos;" />-        <RegExpr attribute="Keyword"   context="packagefunction" insensitive="true" String="&bos;function&eos;" />-        <IncludeRules context="generalDetection"/>+      <context name="package_main" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="package_decl">+        <RegExpr attribute="Control" context="#pop#pop" dynamic="1" insensitive="1"+                 String="&bos;end(\s+package\b)?(\s+%1)?\s*;" endRegion="EntityRegion1"/>+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"+                    String="end" endRegion="EntityRegion1"/>       </context> -      <context name="packagefunction" attribute="Normal Text" lineEndContext="#stay">-        <RegExpr attribute="Name" context="#pop" insensitive="true" String="&bos;&varname;&eos;" />+      <context name="package_decl" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preDeclaration"/>+        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>+        <IncludeRules context="postDeclaration"/>       </context>        <!-- package body environment --> -      <context name="packagebody" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control"   context="#stay" insensitive="true" String="&bos;package&eos;" />-        <RegExpr attribute="Keyword"   context="packagebodymain" insensitive="true" String="&bos;is&eos;" />-        <RegExpr attribute="Name"      context="#stay"     insensitive="true" String="&bos;%2&eos;" dynamic="true"/>-        <RegExpr attribute="Redirection" context="#pop" dynamic="true" endRegion="PackageBodyRegion1" insensitive="true"-                 String="&bos;end(\s+package)?(\s+%2)?\s*;" />-        <IncludeRules context="generalDetection"/>-      </context>--      <context name="packagebodymain" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Keyword"   context="#pop" lookAhead="true" insensitive="true" String="&bos;end\s+package&eos;" />-        <RegExpr attribute="Keyword"   context="packagebodyfunc1" beginRegion="PackBodyFunc" insensitive="true" lookAhead="true" String="&bos;function\s+(&varname;)&eos;" />-        <IncludeRules context="generalDetection"/>+      <context name="packagebody" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">+        <IncludeRules context="blank"/>+        <RegExpr attribute="Name" context="packagebody_main" beginRegion="PackageBodyRegion1"+                 String="(&identifier;)"/>       </context> -      <context name="packagebodyfunc1" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Redirection" context="packagebodyfunc2" beginRegion="RegionFunction" insensitive="true" String="&bos;begin&eos;" />-        <RegExpr attribute="Keyword"   context="#pop" insensitive="true" endRegion="PackBodyFunc" dynamic="true" String="&bos;end(\s+function)?(\s+%2)?&eos;" />-        <RegExpr attribute="Name" context="#stay" insensitive="true" String="&bos;%2&eos;"  dynamic="true"/>-        <IncludeRules context="generalDetection"/>+      <context name="packagebody_main" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="package_decl">+        <RegExpr attribute="Control" context="#pop#pop" dynamic="1" insensitive="1"+                 String="&bos;end(\s+package\s+body\b)?(\s+%1)?\s*;" endRegion="EntityRegion1"/>+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"+                    String="end" endRegion="EntityRegion1"/>       </context> -      <context name="packagebodyfunc2" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Redirection" context="#pop" insensitive="true" lookAhead="true" endRegion="RegionFunction"-                 String="&bos;end(\s+function)?&eos;"/>-        <!--<RegExpr attribute="Error" context="#pop" insensitive="true" dynamic="true" lookAhead="true" endRegion="RegionFunction"-                 String="&bos;end\s+function(\s+&varname;)?&eos;"/>-->-        <RegExpr attribute="Process" context="#stay" insensitive="true"-                 String="&bos;begin&eos;"/>-        <IncludeRules context="proc_rules"/>+<!--====ARCHITECTURE ===============-->+      <context name="architecture" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="blank"/>+        <RegExpr attribute="Name" context="arch_of" beginRegion="ArchitectureRegion1"+                 String="(&identifier;)"/>       </context> --<!--====ARCHITECTURE ===============-->-      <context name="architecture_main" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" context="arch_start" insensitive="true" lookAhead="true" beginRegion="ArchitectureRegion1"-                 String="&bos;architecture\s+(&varname;)\s+of\s+(&varname;)\s+is"/>-        <RegExpr attribute="Control" context="#pop#pop" insensitive="true" dynamic="true" endRegion="ArchitectureRegion1"-                 String="&bos;end(\s+architecture)?(\s+%2)?\s*;"/>-        <RegExpr attribute="Error" context="#pop#pop" insensitive="true" endRegion="ArchitectureRegion1"-                 String="&bos;end(\s+architecture)?(\s+&varname;)\s*;"/>-        <IncludeRules context="detect_arch_parts"/>+      <context name="arch_of" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="arch_decl">+        <IncludeRules context="blank"/>+        <WordDetect attribute="Keyword" context="arch_ref" insensitive="1" String="of"/>+        <RegExpr attribute="Control" context="#pop#pop" insensitive="1" dynamic="1"+                 String="&bos;end(\s+architecture\b)?(\s+%1)?\s*;" endRegion="ArchitectureRegion1"/>+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="1"+                    String="end" endRegion="ArchitectureRegion1"/>       </context> -<!-- architecture environment "before begin" -->-      <context name="arch_start" attribute="Control" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Keyword"   context="arch_decl" insensitive="true" String="&bos;is&eos;" />-        <RegExpr attribute="Name"      context="#stay"     insensitive="true" String="&bos;%2&eos;" dynamic="true"/>-        <RegExpr attribute="Reference" context="#stay"     insensitive="true" String="&bos;%4&eos;" dynamic="true"/>-        <IncludeRules context="generalDetection"/>+      <context name="arch_ref" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!arch_decl">+        <IncludeRules context="blank"/>+        <WordDetect attribute="Keyword" context="#pop!arch_decl" insensitive="1" String="is" />+        <RegExpr attribute="Reference" context="#pop!arch_decl" String="&identifier;"/>       </context>        <context name="arch_decl" attribute="Normal Text" lineEndContext="#stay">-        <IncludeRules context="preDetection"/>-        <keyword attribute="Signal" context="signal"          insensitive="true" String="signals"/>-        <StringDetect attribute="Control" context="archfunc1" insensitive="true" String="function" beginRegion="ArchFunctionRegion1"/>-        <StringDetect attribute="Control" context="entity"    insensitive="true" String="component"/>-        <StringDetect attribute="Control" context="#pop#pop"  insensitive="true" String="begin"/>-        <IncludeRules context="generalDetection"/>+        <IncludeRules context="preDeclaration"/>+        <WordDetect attribute="Control" context="#pop!parallel_stmt" insensitive="true" String="begin"/>+        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>+        <IncludeRules context="postDeclaration"/>       </context> -      <context name="archfunc1" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Redirection" context="archfunc2" beginRegion="RegionFunction" insensitive="true" String="&bos;begin&eos;" />-        <RegExpr attribute="Keyword"   context="#pop" insensitive="true" endRegion="ArchFunctionRegion1" dynamic="true" String="&bos;end(\s+function)?(\s+%2)?&eos;" />-        <RegExpr attribute="Name" context="#stay" insensitive="true" String="&bos;%2&eos;"  dynamic="true"/>-        <IncludeRules context="generalDetection"/>+<!--====if ===============-->+      <context name="if_start" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="if_expr">+        <RegExpr attribute="Control" context="#pop" insensitive="true" endRegion="IfRegion1"+                 String="&bos;end\s+if(\s+&varname;)?\s*;"/>+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"+                    String="end" endRegion="IfRegion1"/>       </context> -      <context name="archfunc2" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Redirection" context="#pop" insensitive="true" lookAhead="true" endRegion="RegionFunction"-                 String="&bos;end(\s+function)?&eos;"/>-        <!--<RegExpr attribute="Error" context="#pop" insensitive="true" dynamic="true" lookAhead="true" endRegion="RegionFunction"-                 String="&bos;end\s+function(\s+&varname;)?&eos;"/>-->-        <RegExpr attribute="Process" context="#stay" insensitive="true"-                 String="&bos;begin&eos;"/>-        <IncludeRules context="proc_rules"/>+      <context name="if_expr" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preExpression"/>+        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>+        <WordDetect attribute="Control" context="if_body" insensitive="true" String="then"/>+        <IncludeRules context="postExpression"/>       </context> +      <context name="if_body" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_decl">+        <IncludeRules context="blank"/>+        <WordDetect attribute="Control" context="#pop#pop" insensitive="true" String="end" lookAhead="1"/>+        <WordDetect attribute="Control" context="#pop" insensitive="true" String="elsif"/>+        <WordDetect attribute="Control" context="#pop#pop!sequential_stmt" insensitive="true" String="else"/>+        <IncludeRules context="sequentialStatementKw"/>+        <IncludeRules context="label"/>+      </context> -<!-- parts of architecture body -->-      <context name="detect_arch_parts" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <RegExpr attribute="Normal Text" context="generate1" lookAhead="true" insensitive="true"-                 String="&bos;(&varname;\s*:\s*)(if|for).*\s+generate&eos;"/>-        <RegExpr attribute="Normal Text" context="process1" lookAhead="true" insensitive="true"-                 String="&bos;(&varname;\s*:\s*)?process&eos;"/>-        <RegExpr attribute="Normal Text" context="instance" lookAhead="true" insensitive="true" beginRegion="InstanceRegion1"-                 String="&bos;(&varname;)\s*:\s*((entity\s+)?(&varname;)(\.&varname;)?)"/>+<!--====case ===============-->+      <context name="case" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preExpression"/>+        <WordDetect attribute="Keyword" context="#pop!case_stmt" insensitive="true" String="is"/>+        <IncludeRules context="postExpression"/>+      </context> -        <IncludeRules context="generalDetection"/>+      <context name="case_stmt" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="case_when">+        <RegExpr attribute="Control" context="#pop" insensitive="true" endRegion="CaseRegion1"+                 String="&bos;end\s+case(&varname;)?\s*;"/>+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"+                    String="end" endRegion="CaseRegion1"/>       </context> -<!--====generate ===============-->-      <context name="generate1" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" context="generate2" insensitive="true" beginRegion="GenerateRegion"-                 String="&bos;(generate|loop)&eos;"/>-        <RegExpr attribute="Name"      context="#stay" dynamic="true" insensitive="true"-                 String="&bos;%3&eos;"/>-        <RegExpr attribute="Control" context="#stay"                insensitive="true"-                 String="&bos;(for|if|while)&eos;"/>-        <IncludeRules context="generalDetection"/>+      <context name="case_when" attribute="Normal Text" lineEndContext="#stay">+        <Detect2Chars char="=" char1="&gt;" attribute="Operator" context="case_when2" beginRegion="CaseWhenRegion1"/>+        <IncludeRules context="preExpression"/>+        <WordDetect attribute="Control" insensitive="true" String="when"/>+        <IncludeRules context="postExpression"/>       </context> -      <context name="generate2" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" context="#stay" insensitive="true"-                 String="&bos;begin&eos;"/>-        <RegExpr attribute="Control" context="#pop#pop" insensitive="true" endRegion="GenerateRegion"-                 String="&bos;end\s+(generate|loop)(\s+&varname;)?"/>-        <IncludeRules context="detect_arch_parts"/>+      <context name="case_when2" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_decl">+        <IncludeRules context="blank"/>+        <WordDetect attribute="Control" context="#pop" insensitive="true" String="when" endRegion="CaseWhenRegion1"/>+        <WordDetect attribute="Control" context="#pop#pop" insensitive="true" String="end" lookAhead="1" endRegion="CaseWhenRegion1"/>+        <IncludeRules context="sequentialStatementKw"/>+        <IncludeRules context="label"/>       </context>+      <!-- 'when' and 'end case' are checked at the beginning of the line for better code folding --> +<!--====while ===============-->+      <context name="while" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preExpression"/>+        <WordDetect attribute="Control" context="#pop!loop" insensitive="true" String="loop" beginRegion="LoopRegion1"/>+        <IncludeRules context="postExpression"/>+      </context> -<!--====process ===============-->-<!-- process environment -->+<!--====loop ===============-->+      <context name="loop" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt">+        <RegExpr attribute="Control" context="#pop" insensitive="true" endRegion="LoopRegion1"+                 String="&bos;end\s+loop(&varname;)?\s*;"/>+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"+                    String="end" endRegion="CaseRegion1"/>+      </context> -      <context name="process1" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Process" context="#pop" insensitive="true" dynamic="true" endRegion="RegionProcess"-                 String="&bos;end\s+process(\s+%3)?"/>-        <RegExpr attribute="Error" context="#pop" insensitive="true" endRegion="RegionProcess"-                 String="&bos;end\s+process(\s+&varname;)?"/>-        <RegExpr attribute="Process" context="#stay" insensitive="true" beginRegion="RegionProcess"-                 String="&bos;process&eos;"/>-        <RegExpr attribute="Process" context="#stay" insensitive="true"-                 String="&bos;begin&eos;"/>-        <IncludeRules context="proc_rules"/>+<!--====declare ===============-->+      <context name="declare" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preExpression"/>+        <WordDetect attribute="Redirection" context="#pop!declare_begin" insensitive="true"+                    String="begin"/>+        <keyword attribute="Signal" context="signal" String="signals"/>+        <IncludeRules context="postExpression"/>       </context> -      <context name="proc_rules" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-         <RegExpr attribute="Name" context="#stay" insensitive="true"-                  String="&bos;&varname;(?=\s*:(?!=))"/>-         <RegExpr attribute="Control" context="if_start" insensitive="true"-                  String="&bos;if&eos;"/>-         <RegExpr attribute="Control" context="case1" lookAhead="true" insensitive="true"-                  String="&bos;case&eos;"/>-         <RegExpr attribute="Control" context="forwhile1" lookAhead="true" insensitive="true"-                  String="&bos;((&varname;)\s*:\s*)?((for|while)\s+.+\s+)loop&eos;"/>-         <IncludeRules context="generalDetection"/>+      <context name="declare_begin" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt">+        <RegExpr attribute="Redirection" context="#pop" insensitive="true" endRegion="DeclareRegion1"+                 String="&bos;end(\s+declare)?\s*;"/>+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"+                    String="end" endRegion="ProcedureRegion1"/>       </context>  +<!--====ENTITY ===============-->+<!-- entity environment -->+      <context name="entity" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">+        <IncludeRules context="blank"/>+        <RegExpr attribute="Name" context="entity_main" beginRegion="EntityRegion1"+                 String="(&identifier;)"/>+      </context> +      <context name="entity_main" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="entity_decl">+        <RegExpr attribute="Control" context="#pop#pop" dynamic="1" insensitive="1"+                 String="&bos;end(\s+entity\b)?(\s+%1)?\s*;" endRegion="EntityRegion1"/>+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"+                    String="end" endRegion="EntityRegion1"/>+      </context> -<!--====instance =============== -->-      <!-- When an instance has been detected-->-      <context name="instance" attribute="Error" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Reference"   context="#stay" String="&bos;%4&eos;" dynamic="true"/>-        <RegExpr attribute="Name"        context="#stay" String="&bos;%3&eos;" dynamic="true"/>-        <RegExpr attribute="Keyword"     context="instanceMap" insensitive="true" beginRegion="InstanceMapRegion"-                 String="&bos;(port|generic)\s+map\s*\(" />-        <DetectChar attribute="Normal Text" context="#pop" char=";" endRegion="InstanceRegion1"/>-        <IncludeRules context="generalDetection"/>+      <context name="entity_decl" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preDeclaration"/>+        <WordDetect attribute="Control" context="#stay" insensitive="true" String="generic"/>+        <WordDetect attribute="Control" context="#stay" insensitive="true" String="port"/>+        <WordDetect attribute="Keyword" context="#pop!parallel_stmt" insensitive="true" String="begin"/>+        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>+        <IncludeRules context="postDeclaration"/>       </context> -      <!-- Inside a port or generic map-->-      <context name="instanceMap" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <AnyChar attribute="Error" context="#stay" String="&lt;;:"/>-        <DetectChar attribute="Error" context="#stay" char=":" />-        <IncludeRules context="preDetection"/>-        <DetectChar attribute="Normal Text" context="#pop" char=")" endRegion="InstanceMapRegion"/>-        <DetectChar attribute="Normal Text" context="instanceInnerPar" char="("/>-        <IncludeRules context="generalDetection"/>+<!--====Configuration ===============-->+<!-- configuration environment -->+      <context name="configuration" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">+        <IncludeRules context="blank"/>+        <RegExpr attribute="Name" context="conf_of" beginRegion="ConfigurationRegion1"+                 String="(&identifier;)"/>       </context> -      <!-- Inside parantheses inside a map-->-      <context name="instanceInnerPar" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <DetectChar attribute="Normal Text" context="#pop" char=")" endRegion="instanceInnerPar"/>-        <DetectChar attribute="Normal Text" context="instanceInnerPar" char="("/>-        <DetectChar attribute="Error" context="#stay" char=";"/>-        <IncludeRules context="generalDetection"/>+      <context name="conf_of" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="conf_is">+        <IncludeRules context="blank"/>+        <WordDetect attribute="Keyword" context="conf_ref" insensitive="1" String="of"/>+        <RegExpr attribute="Control" context="#pop#pop" insensitive="1" dynamic="1"+                 String="&bos;end(\s+configuration\b)?(\s+%1)?\s*;" endRegion="ConfigurationRegion1"/>+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="1"+                    String="end" endRegion="ConfigurationRegion1"/>       </context> -<!--====loop ===============-->-      <context name="forwhile1" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" context="forwhile2" insensitive="true" beginRegion="ForWhileRegion"-                 String="&bos;loop&eos;"/>-        <RegExpr attribute="Name"      context="#stay" dynamic="true" insensitive="true"-                 String="&bos;%3&eos;"/>-        <RegExpr attribute="Control" context="#stay"                insensitive="true"-                 String="&bos;(for|while)&eos;"/>-        <IncludeRules context="generalDetection"/>+      <context name="conf_ref" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!conf_decl">+        <IncludeRules context="blank"/>+        <WordDetect attribute="Keyword" context="#pop!conf_decl" insensitive="1" String="is" />+        <RegExpr attribute="Reference" context="#pop!conf_is" String="&identifier;"/>       </context> -      <context name="forwhile2" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" context="#stay" insensitive="true"-                 String="&bos;begin&eos;"/>-        <RegExpr attribute="Control" context="#pop#pop" insensitive="true" endRegion="ForWhileRegion"-                 String="&bos;end\s+loop(\s+&varname;)?"/>-        <IncludeRules context="proc_rules"/>+      <context name="conf_is" attribute="Control" lineEndContext="#stay" fallthroughContext="#pop#pop#pop">+        <IncludeRules context="blank"/>+        <WordDetect attribute="Keyword" context="#pop!conf_decl" insensitive="1" String="is" />       </context> -<!--====if ===============-->-      <context name="if_start" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" context="if" insensitive="true" beginRegion="IfRegion1"-                 String="&bos;then&eos;"/>-        <IncludeRules context="generalDetection"/>+      <context name="conf_decl" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preDeclaration"/>+        <WordDetect attribute="Control" context="conf_for" insensitive="1" String="for"/>+        <WordDetect attribute="Control" context="#pop" insensitive="1" lookAhead="1" String="end"/>+        <IncludeRules context="postDeclaration"/>       </context> -      <context name="if" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" context="#pop#pop" insensitive="true" endRegion="IfRegion1"-                 String="&bos;end\s+if(\s+&varname;)?\s*;"/>-        <IncludeRules context="proc_rules"/>-        <keyword attribute="Control" context="#stay" insensitive="true" String="if"/>+      <context name="conf_for" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preDeclaration"/>+        <WordDetect attribute="Control" context="conf_for" insensitive="1" String="for"/>+        <WordDetect attribute="Control" context="conf_for_end" insensitive="1" lookAhead="1" String="end"/>+        <IncludeRules context="postDeclaration"/>       </context> +      <context name="conf_for_end" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop!expressionError">+        <RegExpr attribute="Control" context="#pop#pop" insensitive="true"  String="&bos;end(\s+for\b)?\s*;"/>+      </context> -<!--====case ===============--> -      <context name="case1" attribute="Normal Text" lineEndContext="#stay">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Keyword" context="case2" insensitive="true"-                 String="&bos;is&eos;"/>-        <keyword attribute="Control" context="#stay" insensitive="true" beginRegion="CaseRegion1" String="case"/>-        <IncludeRules context="generalDetection"/>+<!--====Basic Stuff ===============-->+<!-- comment and spaces -->+      <context name="blank" attribute="Normal Text" lineEndContext="#stay">+        <DetectSpaces attribute="Normal Text" context="#stay"/>+        <Detect2Chars attribute="Comment" context="comment" char="-" char1="-"/>       </context> -      <context name="case2" attribute="Normal Text" lineEndContext="#stay">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" context="#pop#pop" insensitive="true" endRegion="CaseRegion1"-                 String="&bos;end\s+case(&varname;)?\s*;"/>-        <RegExpr attribute="Control" context="caseWhen" lookAhead="true" insensitive="true"-                 String="&bos;when(\s+&varname;)?&eos;"/>-        <IncludeRules context="proc_rules"/>+<!-- declaration -->+      <context name="preDeclaration" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="blank"/>+        <AnyChar attribute="Operator" context="#stay" String="[&amp;&gt;&lt;=:+-*/|`].,"/>+        <DetectChar attribute="Vector" context="string" char="&quot;"/>+        <DetectChar attribute="Attribute" context="attribute" char="'"/>+        <Int attribute="Integer" context="#stay"/>       </context> -      <context name="caseWhen" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <Detect2Chars char="=" char1="&gt;" attribute="Operator" context="caseWhen2" beginRegion="CaseWhenRegion1"/>-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" insensitive="true"-                 String="&bos;when&eos;"/>-        <RegExpr attribute="Name" insensitive="true" dynamic="true"-                 String="&bos;%2&eos;"/>-        <IncludeRules context="proc_rules"/>+      <context name="postDeclaration" attribute="Normal Text" lineEndContext="#stay">+        <WordDetect attribute="Signal" context="type" insensitive="1" String="type"/>+        <WordDetect attribute="Control" context="function" insensitive="1" String="function"/>+        <WordDetect attribute="Keyword" context="procedure" insensitive="1" String="procedure"/>+        <WordDetect attribute="Keyword" context="component" insensitive="1" String="component"/>+        <keyword attribute="Data Type" context="#stay" String="types"/>+        <keyword attribute="Data Type" context="#stay" String="timeunits"/>+        <keyword attribute="Signal" context="signal" String="signals"/>+        <keyword attribute="Range" context="#stay" String="range"/>+        <keyword attribute="Keyword" context="#stay" String="keywords"/>+        <keyword attribute="Control" context="#stay" String="controls"/>+        <DetectIdentifier attribute="Normal Text"/>       </context> -      <context name="caseWhen2" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" context="#pop#pop" lookAhead="true" insensitive="true" endRegion="CaseWhenRegion1" firstNonSpace="true"-                 String="(when|end\s+case)&eos;"/>-        <IncludeRules context="proc_rules"/>+<!-- label -->+      <context name="label" attribute="Normal Text" lineEndContext="#stay">+        <RegExpr attribute="Name" context="after_label" String="\b(?!process|constant|signal|variable)&varname;(?=\s*:(?!=))"/>       </context>-      <!-- 'when' and 'end case' are checked at the beginning of the line for better code folding --> +      <context name="after_label" attribute="Normal Text" lineEndContext="#stay">+        <DetectChar attribute="Operator" context="#pop" char=":"/>+        <DetectSpaces attribute="Normal Text"/>+      </context> +<!-- parallel statement -->+      <context name="parallel_stmt" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="parallel_stmt_decl">+        <IncludeRules context="blank"/>+        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>+        <IncludeRules context="parallelStatementKw"/>+        <IncludeRules context="label"/>+      </context> +      <context name="parallelStatementKw" attribute="Normal Text" lineEndContext="#stay">+        <WordDetect attribute="Control" context="generate" insensitive="1" String="if" beginRegion="GenerateRegion1"/>+        <WordDetect attribute="Control" context="generate" insensitive="1" String="for" beginRegion="GenerateRegion1"/>+        <WordDetect attribute="Control" context="block" insensitive="1" String="block" beginRegion="BlockRegion1"/>+        <WordDetect attribute="Process" context="process" insensitive="1" String="process" beginRegion="ProcessRegion1"/>+        <WordDetect attribute="Keyword" context="#stay" insensitive="1" String="postponed"/>+      </context> -<!--====ENTITY ===============-->-<!-- entity environment -->+      <context name="parallel_stmt_decl" attribute="Normal Text" lineEndContext="#stay">+        <DetectChar attribute="Normal Text" context="#pop" char=";"/>+        <IncludeRules context="preDeclaration"/>+        <WordDetect attribute="Keyword" context="#stay" insensitive="true" String="generic"/>+        <WordDetect attribute="Keyword" context="#stay" insensitive="true" String="port"/>+        <WordDetect attribute="Keyword" context="#stay" insensitive="true" String="map"/>+        <IncludeRules context="postDeclaration"/>+      </context> -      <context name="entity" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Name" context="entity_main" beginRegion="EntityRegion1" insensitive="true"-                 String="(&varname;)"/>-        <IncludeRules context="generalDetection"/>+<!-- sequential statement -->+      <context name="sequential_stmt" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_decl">+        <IncludeRules context="blank"/>+        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>+        <IncludeRules context="sequentialStatementKw"/>+        <IncludeRules context="label"/>       </context> +      <context name="sequentialStatementKw" attribute="Normal Text" lineEndContext="#stay">+        <WordDetect attribute="Control" context="if_start" insensitive="1" String="if" beginRegion="IfRegion1"/>+        <WordDetect attribute="Control" context="case" insensitive="1" String="case" beginRegion="CaseRegion1"/>+        <WordDetect attribute="Control" context="while" insensitive="1" String="while"/>+        <WordDetect attribute="Control" context="while" insensitive="1" String="for"/>+        <WordDetect attribute="Control" context="loop" insensitive="1" String="loop" beginRegion="LoopRegion1"/>+        <WordDetect attribute="Keyword" context="declare" insensitive="1" String="declare" beginRegion="DeclareRegion1"/>+      </context> -      <context name="entity_main" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" context="#pop#pop" dynamic="true" insensitive="true" endRegion="EntityRegion1"-                 String="&bos;end(\s+(entity|component))?(\s+%1)?\s*;"/>-        <RegExpr attribute="Error" context="#pop#pop" insensitive="true" endRegion="EntityRegion1"-                 String="&bos;end(\s+(entity|component))?(\s+&varname;)?\s*;"/>-        <StringDetect attribute="Control" context="#stay" insensitive="true" String="generic"/>-        <StringDetect attribute="Control" context="#stay" insensitive="true" String="port"/>-        <IncludeRules context="generalDetection"/>+      <context name="sequential_stmt_decl" attribute="Normal Text" lineEndContext="#stay">+        <DetectChar attribute="Normal Text" context="#pop" char=";"/>+        <IncludeRules context="preDeclaration"/>+        <IncludeRules context="postDeclaration"/>       </context> -<!--====Configuration ===============-->-<!-- configuration environment -->-      <context name="configuration" attribute="Normal Text" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Control" context="conf_start" insensitive="true" lookAhead="true" beginRegion="ConfigurationRegion1"-                 String="&bos;configuration\s+(&varname;)\s+of\s+(&varname;)\s+is"/>-        <RegExpr attribute="Control" context="#pop#pop" insensitive="true" dynamic="true" endRegion="ConfigurationRegion1"-                 String="&bos;end(\s+configuration)?(\s+%2)?\s*;"/>-        <RegExpr attribute="Error" context="#pop#pop" insensitive="true" endRegion="ConfigurationRegion1"-                 String="&bos;end(\s+configuration)?(\s+&varname;)\s*;"/>+<!-- if/for generate -->+      <context name="generate" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preExpression"/>+        <WordDetect attribute="Control" context="generate_stmt" insensitive="1" String="generate"/>+        <IncludeRules context="postExpression"/>       </context> -      <context name="conf_start" attribute="Control" lineEndContext="#stay" dynamic="true">-        <IncludeRules context="preDetection"/>-        <RegExpr attribute="Keyword"   context="conf_decl" insensitive="true" String="&bos;is&eos;" />-        <RegExpr attribute="Name"      context="#stay"     insensitive="true" String="&bos;%2&eos;" dynamic="true"/>-        <RegExpr attribute="Reference" context="#stay"     insensitive="true" String="&bos;%4&eos;" dynamic="true"/>-        <IncludeRules context="generalDetection"/>+      <context name="generate_stmt" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="parallel_stmt">+        <RegExpr attribute="Control" context="#pop#pop" insensitive="1"+                 String="&bos;end(\s+generate\b)?(\s+&varname;)?\s*;" endRegion="GenerateRegion1"/>+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"+                    String="end" endRegion="GenerateRegion1"/>       </context> -      <context name="conf_decl" attribute="Normal Text" lineEndContext="#stay">-        <IncludeRules context="preDetection"/>-        <StringDetect attribute="Control" context="conf_for" insensitive="true" String="for"/>-        <StringDetect attribute="Control" context="#pop#pop" insensitive="true" lookAhead="true"  String="end"/>-        <IncludeRules context="generalDetection"/>+<!-- block -->+      <context name="block" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="entity_decl">+        <RegExpr attribute="Control" context="#pop#pop" insensitive="1"+                 String="&bos;end(\s+block\b)?(\s+&varname;)?\s*;" endRegion="BlockRegion1"/>+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"+                    String="end" endRegion="BlockRegion1"/>       </context> -      <context name="conf_for" attribute="Normal Text" lineEndContext="#stay">-        <IncludeRules context="preDetection"/>-        <StringDetect attribute="Control" context="conf_for" insensitive="true" String="for"/>-        <RegExpr attribute="Control" context="#pop" insensitive="true"  String="end(\s+&varname;)?"/>-        <IncludeRules context="generalDetection"/>+<!-- process -->+      <context name="process" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="process_decl">+        <RegExpr attribute="Process" context="#pop" insensitive="1"+                 String="&bos;end(\s+postponed)?(\s+process\b)?(\s+&varname;)?\s*;" endRegion="ProcessRegion1"/>+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"+                    String="end" endRegion="ProcessRegion1"/>       </context> +      <context name="process_decl" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preDeclaration"/>+        <WordDetect attribute="Process" context="#pop!sequential_stmt" insensitive="true" String="begin"/>+        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>+        <IncludeRules context="postDeclaration"/>+      </context> -<!--====Basic Stuff ===============-->-<!-- basic rules -->-      <context name="preDetection" attribute="Normal Text" lineEndContext="#stay">-        <Detect2Chars attribute="Comment" context="comment" char="-" char1="-"/>+<!-- expression -->+      <context name="preExpression" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="blank"/>+        <AnyChar attribute="Operator" context="#stay" String="[&amp;&gt;&lt;=:+-*/|`].,"/>         <DetectChar attribute="Vector" context="string" char="&quot;"/>-        <AnyChar attribute="Operator" context="#stay" String="[&amp;&gt;&lt;=:+\-*\/|].,"/>         <DetectChar attribute="Attribute" context="attribute" char="'"/>+        <Int attribute="Integer" context="#stay"/>       </context> ---<!-- general detection -->-      <context name="generalDetection" attribute="Normal Text" lineEndContext="#stay">+      <context name="postExpression" attribute="Normal Text" lineEndContext="#stay">         <keyword attribute="Data Type" context="#stay" String="types"/>         <keyword attribute="Data Type" context="#stay" String="timeunits"/>-        <keyword attribute="Signal" context="signal" String="signals" beginRegion="sig"/>         <keyword attribute="Range" context="#stay" String="range"/>         <keyword attribute="Keyword" context="#stay" String="keywords"/>-        <Int attribute="Integer" context="#stay"/>-        <HlCChar attribute="Bit" context="#stay"/>-        <DetectSpaces attribute="Normal Text" context="#stay"/>+        <DetectIdentifier attribute="Normal Text"/>       </context> +<!-- expression error -->+      <context name="expressionError" attribute="Error" lineEndContext="#stay">+        <Detect2Chars attribute="Comment" context="comment" char="-" char1="-"/>+        <DetectChar attribute="Error" context="#pop" char=";"/>+      </context>+ <!-- other environments -->       <context name="comment" attribute="Comment" lineEndContext="#pop">         <DetectSpaces />@@ -612,7 +607,7 @@         <DetectChar attribute="Attribute" context="par in att" char="("/>         <DetectChar attribute="Normal Text" context="#pop" char=" "/>         <DetectChar attribute="Attribute" context="#pop" char="'"/>-        <AnyChar attribute="Attribute" context="#pop" String=")=&lt;&gt;" lookAhead="true" />+        <AnyChar attribute="Attribute" context="#pop" String=")=&lt;&gt;;" lookAhead="true" />        </context>        <context name="quot in att" attribute="Attribute" lineEndContext="#stay">@@ -623,10 +618,145 @@       </context>        <context name="signal" attribute="Normal Text" lineEndContext="#stay">-        <IncludeRules context="preDetection"/>-        <DetectChar attribute="Normal Text" lookAhead="true" context="#pop" char=";" endRegion="sig"/>-        <IncludeRules context="generalDetection"/>+        <IncludeRules context="preExpression"/>+        <DetectChar attribute="Normal Text" context="#pop" char=";"/>+        <IncludeRules context="postExpression"/>       </context>++<!-- type -->+      <context name="type" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="blank"/>+        <WordDetect attribute="Signal" context="type_is" insensitive="1" String="is"/>+        <DetectIdentifier attribute="Normal Text"/>+      </context>++      <context name="type_is" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop!signal">+        <IncludeRules context="blank"/>+        <WordDetect attribute="Keyword" context="#pop#pop!type_record" insensitive="1" String="record" beginRegion="sig"/>+        <WordDetect attribute="Keyword" context="#pop#pop!type_range" insensitive="1" String="range"/>+      </context>++<!-- type range -->+      <context name="type_range" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preExpression"/>+        <WordDetect attribute="Control" context="type_range_units" insensitive="1" String="units" beginRegion="UnitRegion1"/>+        <IncludeRules context="postExpression"/>+      </context>++      <context name="type_range_units" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="type_range_units_decl">+        <RegExpr attribute="Control" context="#pop#pop" insensitive="1"+                 String="&bos;end\s+units(\s+&varname;)?\s*;" endRegion="UnitRegion1"/>+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"+                    String="end" endRegion="GenerateRegion1"/>+      </context>++      <context name="type_range_units_decl" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preExpression"/>+        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>+        <IncludeRules context="postExpression"/>+      </context>++<!-- type record -->+      <context name="type_record" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="type_record_body">+        <IncludeRules context="blank"/>+        <RegExpr attribute="Keyword" context="#pop" insensitive="1"+                 String="&bos;end\s+record;" endRegion="sig"/>+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"+                    String="end" endRegion="sig"/>+      </context>++      <context name="type_record_body" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="blank"/>+        <DetectChar attribute="Normal Text" context="#stay" char=";"/>+        <DetectChar attribute="Operator" context="#stay" char=":"/>+        <WordDetect attribute="Keyword" context="#pop" insensitive="true" String="end" lookAhead="1"/>+        <DetectIdentifier attribute="Normal Text"/>+      </context>++<!-- function -->+      <context name="function" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="function_name">+        <IncludeRules context="blank"/>+        <DetectIdentifier attribute="Name" context="function_name"/>+      </context>++      <context name="function_name" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preExpression"/>+        <WordDetect attribute="Control" context="function_return" insensitive="true" String="return"/>+        <IncludeRules context="postExpression"/>+      </context>++      <context name="function_return" attribute="Normal Text" lineEndContext="#stay">+        <DetectSpaces attribute="Normal Text" context="#stay"/>+        <DetectChar attribute="Normal Text" context="#pop#pop#pop" char=";"/>+        <WordDetect attribute="Keyword" context="#pop#pop#pop!function_is" insensitive="1" String="is" beginRegion="FunctionRegion1"/>+        <keyword attribute="Data Type" context="#stay" String="types"/>+      </context>++      <context name="function_is" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preExpression"/>+        <WordDetect attribute="Redirection" context="#pop!function_begin" insensitive="true"+                    String="begin" beginRegion="FunctionRegion1"/>+        <keyword attribute="Signal" context="signal" String="signals"/>+        <IncludeRules context="postExpression"/>+      </context>++      <context name="function_begin" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt">+        <RegExpr attribute="Redirection" context="#pop" insensitive="1"+                 String="&bos;end(\s+function\b)?(\s+(&varname;|&quot;[^&quot;]+&quot;))?\s*;" endRegion="FunctionRegion1"/>+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"+                    String="end" endRegion="FunctionRegion1"/>+      </context>++<!-- procedure -->+      <context name="procedure" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="blank"/>+        <DetectIdentifier attribute="Name" context="procedure_name"/>+      </context>++      <context name="procedure_name" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preExpression"/>+        <WordDetect attribute="Control" context="#pop#pop!procedure_is" insensitive="true" String="is"/>+        <keyword attribute="Signal" context="signal" String="signals"/>+        <IncludeRules context="postExpression"/>+      </context>++      <context name="procedure_is" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preExpression"/>+        <WordDetect attribute="Redirection" context="#pop!procedure_begin" insensitive="true"+                    String="begin" endRegion="ProcedureRegion1"/>+        <keyword attribute="Signal" context="signal" String="signals"/>+        <IncludeRules context="postExpression"/>+      </context>++      <context name="procedure_begin" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt">+        <RegExpr attribute="Redirection" context="#pop" insensitive="1"+                 String="&bos;end(\s+procedure)?(\s+&varname;)?\s*;" endRegion="ProcedureRegion1"/>+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"+                    String="end" endRegion="ProcedureRegion1"/>+      </context>++<!-- component -->+      <context name="component" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">+        <IncludeRules context="blank"/>+        <RegExpr attribute="Name" context="component_main" beginRegion="ComponentRegion1"+                 String="(&identifier;)"/>+      </context>++      <context name="component_main" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="component_body">+        <RegExpr attribute="Control" context="#pop#pop" dynamic="1" insensitive="1"+                 String="&bos;end\s+component\b(\s+%1)?\s*;" endRegion="ComponentRegion1"/>+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"+                    String="end" endRegion="ComponentRegion1"/>+      </context>++      <context name="component_body" attribute="Normal Text" lineEndContext="#stay">+        <IncludeRules context="preExpression"/>+        <WordDetect attribute="Keyword" context="#stay" insensitive="true" String="generic"/>+        <WordDetect attribute="Keyword" context="#stay" insensitive="true" String="port"/>+        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>+        <IncludeRules context="postExpression"/>+      </context>+     </contexts>     <itemDatas>       <itemData name="Normal Text" defStyleNum="dsNormal"/>@@ -634,7 +764,6 @@       <itemData name="Data Type" defStyleNum="dsDataType"/>       <itemData name="Comment" defStyleNum="dsComment"/>       <itemData name="Integer" defStyleNum="dsDecVal"/>-      <itemData name="Bit" defStyleNum="dsChar"/>       <itemData name="Reference" defStyleNum="dsFunction"/>       <itemData name="Error" defStyleNum="dsError" bold="1"/>       <itemData name="Vector" defStyleNum="dsString"/>