diff options
author | JohnMacFarlane <> | 2021-02-23 06:22:00 (GMT) |
---|---|---|
committer | hdiff <hdiff@hdiff.luite.com> | 2021-02-23 06:22:00 (GMT) |
commit | e970471b447b11480265b02577b57eb75b3cc6dc (patch) | |
tree | 04b373b89a71a2d2502d931a68b509f3e4ba1592 | |
parent | cb2893417337d66693d781ea0576adf3781b431d (diff) |
version 0.10.30.10.3
63 files changed, 4463 insertions, 1296 deletions
diff --git a/changelog.md b/changelog.md index a77de3d..6e172a1 100644 --- a/changelog.md +++ b/changelog.md @@ -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, diff --git a/skylighting-core.cabal b/skylighting-core.cabal index d5a3e80..2aa1306 100644 --- a/skylighting-core.cabal +++ b/skylighting-core.cabal @@ -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 diff --git a/src/Skylighting/Loader.hs b/src/Skylighting/Loader.hs index a775832..b5bcbee 100644 --- a/src/Skylighting/Loader.hs +++ b/src/Skylighting/Loader.hs @@ -23,7 +23,7 @@ syntaxFileExtension = ".xml" 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 diff --git a/test/expected/abc.ada.native b/test/expected/abc.ada.native index 9dae753..37c283b 100644 --- a/test/expected/abc.ada.native +++ b/test/expected/abc.ada.native @@ -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 " ) + , ( OperatorTok , ":" ) + , ( NormalTok , " wIndex;" ) ] -, [ ( NormalTok , " wPos : 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,135 +310,253 @@ , [ ( 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 , " " ) + , ( OperatorTok , ")" ) + , ( NormalTok , ";" ) ] -, [ ( 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 , " +" ) , ( StringTok , "\"A\"" ) ] -, [ ( NormalTok , " , +" ) , ( StringTok , "\"BARK\"" ) ] -, [ ( NormalTok , " , +" ) , ( StringTok , "\"BOOK\"" ) ] -, [ ( NormalTok , " , +" ) , ( StringTok , "\"TREAT\"" ) ] -, [ ( NormalTok , " , +" ) , ( StringTok , "\"COMMON\"" ) ] -, [ ( NormalTok , " , +" ) , ( StringTok , "\"SQUAD\"" ) ] -, [ ( NormalTok , " , +" ) , ( StringTok , "\"CONFUSE\"" ) ] + , ( NormalTok , " Unbounded_String " ) + , ( OperatorTok , ":=" ) + , ( NormalTok , " " ) + , ( OperatorTok , "(" ) + ] +, [ ( 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:" ) ] @@ -346,7 +564,10 @@ , ( 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" ) diff --git a/test/expected/abc.c.native b/test/expected/abc.c.native index 42e7def..9466dbf 100644 --- a/test/expected/abc.c.native +++ b/test/expected/abc.c.native @@ -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 , "}" ) ] ] diff --git a/test/expected/abc.cpp.native b/test/expected/abc.cpp.native index 3c4a280..cd4c105 100644 --- a/test/expected/abc.cpp.native +++ b/test/expected/abc.cpp.native @@ -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" ) + , ( OperatorTok , "." ) + , ( NormalTok , "insert" ) + , ( OperatorTok , "(" ) + , ( NormalTok , "i" ) + , ( OperatorTok , ");" ) ] -, [ ( NormalTok , " used.insert(i);" ) ] , [ ( 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 , "}" ) ] ] diff --git a/test/expected/abc.cs.native b/test/expected/abc.cs.native index f51ae7d..c586089 100644 --- a/test/expected/abc.cs.native +++ b/test/expected/abc.cs.native @@ -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))" ) - ] -, [ ( NormalTok , " {" ) ] -, [ ( NormalTok , " _blockDict[c] = " ) + , ( OperatorTok , "(" ) + , ( NormalTok , "c" ) + , ( OperatorTok , "))" ) + ] +, [ ( 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 , " " ) , ( OperatorTok , "{" ) ] +, [ ( NormalTok , " _blocks " ) + , ( OperatorTok , "=" ) + , ( NormalTok , " blocks" ) + , ( OperatorTok , ";" ) ] -, [ ( NormalTok , " {" ) ] -, [ ( NormalTok , " _blocks = blocks;" ) ] , [ ( 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 , " {" ) ] -, [ ( NormalTok , " word = word." ) + , ( NormalTok , " word" ) + , ( OperatorTok , ")" ) + ] +, [ ( 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 , " {" ) ] -, [ ( NormalTok , " _used[block] = " ) + , ( NormalTok , " blocks" ) + , ( OperatorTok , ")" ) + ] +, [ ( 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 , " " ) + , ( OperatorTok , "{" ) ] -, [ ( NormalTok , " {" ) ] , [ ( 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 , "}" ) ] , [] ] diff --git a/test/expected/abc.d.native b/test/expected/abc.d.native index 2fdd059..a502cfe 100644 --- a/test/expected/abc.d.native +++ b/test/expected/abc.d.native @@ -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 , "}" ) ] ] diff --git a/test/expected/abc.go.native b/test/expected/abc.go.native index edb9547..3318cf1 100644 --- a/test/expected/abc.go.native +++ b/test/expected/abc.go.native @@ -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 " ) + , ( OperatorTok , ":=" ) + , ( NormalTok , " strings" ) + , ( OperatorTok , "." ) + , ( NormalTok , "Fields" ) + , ( OperatorTok , "(" ) + , ( NormalTok , "blocks" ) + , ( OperatorTok , ")" ) ] -, [ ( NormalTok , " bl := strings.Fields(blocks)" ) ] , [ ( 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" ) + , ( OperatorTok , "." ) + , ( NormalTok , "Println" ) + , ( OperatorTok , "(" ) + , ( NormalTok , "word" ) + , ( OperatorTok , "," ) + , ( NormalTok , " sp" ) + , ( OperatorTok , "(" ) + , ( NormalTok , "word" ) + , ( OperatorTok , "))" ) ] -, [ ( NormalTok , " fmt.Println(word, sp(word))" ) ] -, [ ( NormalTok , " }" ) ] -, [ ( NormalTok , "}" ) ] +, [ ( NormalTok , " " ) , ( OperatorTok , "}" ) ] +, [ ( OperatorTok , "}" ) ] ] diff --git a/test/expected/abc.php.native b/test/expected/abc.php.native index 5b58e23..284c739 100644 --- a/test/expected/abc.php.native +++ b/test/expected/abc.php.native @@ -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 , ";" ) ] diff --git a/test/test-skylighting.hs b/test/test-skylighting.hs index 62ffffc..869c8ec 100644 --- a/test/test-skylighting.hs +++ b/test/test-skylighting.hs @@ -151,11 +151,11 @@ main = do , 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")] diff --git a/xml/actionscript.xml b/xml/actionscript.xml index cbabf66..c49b109 100644 --- a/xml/actionscript.xml +++ b/xml/actionscript.xml @@ -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"/> diff --git a/xml/ada.xml b/xml/ada.xml index 687e25f..bf5cd47 100644 --- a/xml/ada.xml +++ b/xml/ada.xml @@ -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> diff --git a/xml/asp.xml b/xml/asp.xml index 36ab0b7..ca943fc 100644 --- a/xml/asp.xml +++ b/xml/asp.xml @@ -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="<\s*\/\s*script\s*>" insensitive="true" /> <DetectChar attribute="Comment" context="asp_onelinecomment" char="'" /> <DetectChar attribute="String" context="doublequotestring" char=""" /> - <DetectChar attribute="String" context="singlequotestring" char="'" /> <DetectChar attribute="Keyword" context="#stay" char="&" /> <RegExpr attribute="String" context="#stay" String="[0123456789]*\.\.\.[0123456789]*" /> <HlCOct attribute="Octal" context="#stay" /> diff --git a/xml/awk.xml b/xml/awk.xml index bfec146..c66f608 100644 --- a/xml/awk.xml +++ b/xml/awk.xml @@ -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"/> diff --git a/xml/bash.xml b/xml/bash.xml index 70cee76..7d44477 100644 --- a/xml/bash.xml +++ b/xml/bash.xml @@ -2,7 +2,7 @@ <!DOCTYPE language SYSTEM "language.dtd" [ <!ENTITY tab "	"> - <!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;<>|&;])"> @@ -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;{}\\`'"$"> - <!ENTITY brace_noexpansion "\{[^&_braceexpansion_spe;,]*+\}"> + <!ENTITY _braceexpansion_spe " &tab;<>|&;{}\\`'"$"> + <!ENTITY _brace_noexpansion "\{[^&_braceexpansion_spe;,]*+\}"> <!ENTITY _braceexpansion_var "\$(?:\{[^\[\]&_braceexpansion_spe;]*+(?:\[[*@a-zA-Z0-9]\])\})?"> <!ENTITY _braceexpansion_string "'[^']*'|"([^"\`]*+|`[^`]*`)*+""> - <!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 "(?|"([^"]+)"|'([^']+)'|\\(.[^&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="<>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="&" char1="&"/> <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="&<>" 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="&|;`" lookAhead="1"/> - <!-- handle process subst --> - <Detect2Chars attribute="Redirection" context="ProcessSubst" char="<" char1="("/> - <Detect2Chars attribute="Redirection" context="ProcessSubst" char=">" char1="("/> <!-- handle redirection --> <AnyChar context="CommandArgMaybeRedirection" String="<>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="&"/> + <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char=">" char1="("/> <DetectChar attribute="Redirection" context="#pop!WordRedirection" char=">"/> <StringDetect attribute="Redirection" context="#pop!StringRedirection" String="<<<"/> <!-- handle here document --> @@ -797,6 +811,7 @@ <!-- handle input redirection --> <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char="<" char1="&"/> <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char="<" char1=">"/> + <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char="<" char1="("/> <DetectChar attribute="Redirection" context="#pop!WordRedirection" char="<"/> </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;;|&<>]))" endRegion="expression"/> + <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[ &tab;;|&<>)]))" 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="&" char1="&"/> <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="|" char1="|"/> - <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[ &tab;;|&]))" endRegion="expression"/> + <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[ &tab;;|&)]))" 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"/> diff --git a/xml/bibtex.xml b/xml/bibtex.xml index 339f477..dfdf8ea 100644 --- a/xml/bibtex.xml +++ b/xml/bibtex.xml @@ -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=""" 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> diff --git a/xml/boo.xml b/xml/boo.xml index be1067e..faa7b3b 100644 --- a/xml/boo.xml +++ b/xml/boo.xml @@ -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="+*/%|=;!<>!^&~-" context="#stay"/> - <RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/> </context> <context name="parenthesised" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true"> @@ -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"/> diff --git a/xml/cmake.xml b/xml/cmake.xml index fdd4572..19766b5 100644 --- a/xml/cmake.xml +++ b/xml/cmake.xml @@ -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> diff --git a/xml/cpp.xml b/xml/cpp.xml index a8029a6..78a258f 100644 --- a/xml/cpp.xml +++ b/xml/cpp.xml @@ -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> @@ -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> @@ -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"/> diff --git a/xml/elm.xml b/xml/elm.xml index 915d3ca..a0a5111 100644 --- a/xml/elm.xml +++ b/xml/elm.xml @@ -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|\\"|\\\\|\\u\{(10|0?[0-9])[0-9a-fA-F]{4}\})'" /> - <DetectChar attribute="String" context="string" char=""" /> <StringDetect attribute="String" context="multilineString" String="""""/> + <DetectChar attribute="String" context="string" char=""" /> </context> <context attribute="Comment" lineEndContext="#pop" name="comment"> <DetectSpaces /> @@ -110,10 +109,6 @@ <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> <itemDatas> diff --git a/xml/email.xml b/xml/email.xml index de1d44c..e28ff3a 100644 --- a/xml/email.xml +++ b/xml/email.xml @@ -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,12 +73,18 @@ </context> <context name="string-context" attribute="String" lineEndContext="#stay"> - <HlCStringChar/> + <IncludeRules context="quoted-pair"/> <DetectChar attribute="String" context="#pop" char="""/> </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"> @@ -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> diff --git a/xml/fasm.xml b/xml/fasm.xml index 6225bcd..da96aad 100644 --- a/xml/fasm.xml +++ b/xml/fasm.xml @@ -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"> diff --git a/xml/fsharp.xml b/xml/fsharp.xml index 5f7acfa..9e275bf 100644 --- a/xml/fsharp.xml +++ b/xml/fsharp.xml @@ -9,7 +9,7 @@ <!ENTITY ESC "(\\[ntbr'"\\]|\\[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"/> diff --git a/xml/glsl.xml b/xml/glsl.xml index 2d5625f..5ddfed9 100644 --- a/xml/glsl.xml +++ b/xml/glsl.xml @@ -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> diff --git a/xml/gnuassembler.xml b/xml/gnuassembler.xml index 4749b56..d9352ff 100644 --- a/xml/gnuassembler.xml +++ b/xml/gnuassembler.xml @@ -43,7 +43,7 @@ with this program; if not, write to the Free Software Foundation, Inc., --> -<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 @@ with this program; if not, write to the Free Software Foundation, Inc., <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 @@ with this program; if not, write to the Free Software Foundation, Inc., <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> @@ -26,7 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., --> -<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 @@ with this program; if not, write to the Free Software Foundation, Inc., <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> diff --git a/xml/haskell.xml b/xml/haskell.xml index c66614c..bdb65b5 100644 --- a/xml/haskell.xml +++ b/xml/haskell.xml @@ -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=""" /> <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|" /> diff --git a/xml/haskell.xml.patch b/xml/haskell.xml.patch new file mode 100644 index 0000000..9b365c6 --- /dev/null +++ b/xml/haskell.xml.patch @@ -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=""" /> + + <DetectChar attribute="Function Infix" context="infix" char="`"/> diff --git a/xml/idris.xml b/xml/idris.xml index d53be37..f74a42c 100644 --- a/xml/idris.xml +++ b/xml/idris.xml @@ -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=""" /> <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" /> diff --git a/xml/isocpp.xml b/xml/isocpp.xml index 695a3c3..03cc4ef 100644 --- a/xml/isocpp.xml +++ b/xml/isocpp.xml @@ -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" /> diff --git a/xml/javascript.xml b/xml/javascript.xml index 295af34..970ccf5 100644 --- a/xml/javascript.xml +++ b/xml/javascript.xml @@ -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" /> diff --git a/xml/julia.xml b/xml/julia.xml index a0dee08..b0d3e1f 100644 --- a/xml/julia.xml +++ b/xml/julia.xml @@ -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="(∫(\.∫)?|\.∫)([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="'[^']*(''[^']*)*'(?=[^']|$)" /> diff --git a/xml/latex.xml b/xml/latex.xml index d20555e..32a8ae5 100644 --- a/xml/latex.xml +++ b/xml/latex.xml @@ -4,7 +4,7 @@ <!ENTITY bullet "×"> <!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 diff --git a/xml/lilypond.xml b/xml/lilypond.xml index 749c085..14d89e7 100644 --- a/xml/lilypond.xml +++ b/xml/lilypond.xml @@ -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(){}[\];$"]*"> <!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="("?)\b(&engravers00;)\b\1" attribute="Engraver"/> - <RegExpr String="("?)\b(&engravers01;)\b\1" attribute="Engraver"/> - <RegExpr String="("?)\b(&engravers02;)\b\1" attribute="Engraver"/> - <RegExpr String="("?)\b(&engravers1;)\b\1" attribute="Engraver"/> - <RegExpr String="("?)\b(&engravers2;)\b\1" attribute="Engraver"/> + <RegExpr String="("?)\b(?:&engravers00;)\b\1" attribute="Engraver"/> + <RegExpr String="("?)\b(?:&engravers01;)\b\1" attribute="Engraver"/> + <RegExpr String="("?)\b(?:&engravers02;)\b\1" attribute="Engraver"/> + <RegExpr String="("?)\b(?:&engravers1;)\b\1" attribute="Engraver"/> + <RegExpr String="("?)\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"/> diff --git a/xml/makefile.xml b/xml/makefile.xml index 35dbf3e..2fe924e 100644 --- a/xml/makefile.xml +++ b/xml/makefile.xml @@ -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.--> diff --git a/xml/mediawiki.xml b/xml/mediawiki.xml index 70186ed..64a9b52 100644 --- a/xml/mediawiki.xml +++ b/xml/mediawiki.xml @@ -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" > diff --git a/xml/metafont.xml b/xml/metafont.xml index ec0e5e2..096968d 100644 --- a/xml/metafont.xml +++ b/xml/metafont.xml @@ -6,7 +6,7 @@ We have moved some keywords for consistency --> <!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 @@ author="Yedvilun (yedvilun@gmail.com)" license="LGPL"> <!--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 @@ author="Yedvilun (yedvilun@gmail.com)" license="LGPL"> <!-- 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="×" attribute="Bullet" context="#stay"/> diff --git a/xml/mustache.xml b/xml/mustache.xml index 780eedf..9654c58 100644 --- a/xml/mustache.xml +++ b/xml/mustache.xml @@ -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="-->" endRegion="Comment" /> <RegExpr context="#stay" attribute="Error" String="-(?:-(?!->))+" /> <IncludeRules context="MustacheVariables" /> - <DetectSpaces /> <IncludeRules context="##Comments" /> </context> diff --git a/xml/objectivec.xml b/xml/objectivec.xml index fe493b1..cb32c66 100644 --- a/xml/objectivec.xml +++ b/xml/objectivec.xml @@ -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> diff --git a/xml/objectivecpp.xml b/xml/objectivecpp.xml index 3b9081d..33df3bf 100644 --- a/xml/objectivecpp.xml +++ b/xml/objectivecpp.xml @@ -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=":!%&()+,-/.*<=>?[]{|}~^;"/> </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"/> diff --git a/xml/octave.xml b/xml/octave.xml index 4a78ab1..652ea78 100644 --- a/xml/octave.xml +++ b/xml/octave.xml @@ -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="'"/> diff --git a/xml/opencl.xml b/xml/opencl.xml index 9ec565d..9cc72e3 100644 --- a/xml/opencl.xml +++ b/xml/opencl.xml @@ -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"/> diff --git a/xml/perl.xml b/xml/perl.xml index 93420af..2689f38 100644 --- a/xml/perl.xml +++ b/xml/perl.xml @@ -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" /> diff --git a/xml/php.xml b/xml/php.xml index da163e5..87a1fdd 100644 --- a/xml/php.xml +++ b/xml/php.xml @@ -70,63 +70,78 @@ Changes: --> <!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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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,8 +3182,15 @@ Changes: <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> @@ -3112,12 +3198,16 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <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 @@ Changes: <item>$_SESSION</item> <item>$php_errormsg</item> <item>$this</item> + <item>$http_response_header</item> </list> <list name="predefined-classes"> @@ -10832,100 +10912,72 @@ Changes: <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="<\?(?:=|php)?" insensitive="true" /> + <context name="start" lineEndContext="#stay" attribute="Normal Text" fallthrough="true" fallthroughContext="phpsource"> + <StringDetect context="phpsource" attribute="Keyword" String="<?php" insensitive="true" /> + <Detect2Chars context="phpsource" attribute="Keyword" char="<" char1="?" /> <Detect2Chars attribute="Keyword" context="#pop" char="?" char1=">" /> </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=">" 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="<=>" /> + <Detect2Chars attribute="Symbol" context="#stay" char="=" char1=">"/> + <StringDetect context="heredocstart" String="<<<" lookAhead="1" /> + <AnyChar attribute="Operator" context="#stay" String="=<>&|!+-*/%^~"/> - <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=""" /> <DetectChar attribute="String" context="backquotestring" char="`" /> <DetectChar attribute="String" context="singlequotestring" char="'" /> - <RegExpr attribute="Backslash Code" context="htmlheredoc" String="<<<"((EO)?HTML)"" beginRegion="Heredoc" /> - <RegExpr attribute="Backslash Code" context="cssheredoc" String="<<<"((EO)?CSS)"" beginRegion="Heredoc" /> - <RegExpr attribute="Backslash Code" context="javascriptheredoc" String="<<<"((EO)?JAVASCRIPT)"" beginRegion="Heredoc" /> - <RegExpr attribute="Backslash Code" context="mysqlheredoc" String="<<<"((EO)?MYSQL)"" beginRegion="Heredoc" /> - <RegExpr attribute="Backslash Code" context="heredoc" String="<<<"([A-Za-z_][A-Za-z0-9_]*)"" beginRegion="Heredoc" /> - <RegExpr attribute="Backslash Code" context="htmlheredoc" String="<<<((EO)?HTML)\b" beginRegion="Heredoc" /> - <RegExpr attribute="Backslash Code" context="cssheredoc" String="<<<((EO)?CSS)\b" beginRegion="Heredoc" /> - <RegExpr attribute="Backslash Code" context="javascriptheredoc" String="<<<((EO)?JAVASCRIPT)\b" beginRegion="Heredoc" /> - <RegExpr attribute="Backslash Code" context="mysqlheredoc" String="<<<((EO)?MYSQL)\b" beginRegion="Heredoc" /> - <RegExpr attribute="Backslash Code" context="heredoc" String="<<<([A-Za-z_][A-Za-z0-9_]*)" beginRegion="Heredoc" /> - <RegExpr attribute="Backslash Code" context="htmlnowdoc" String="<<<'((EO)?HTML)'" beginRegion="Nowdoc" /> - <RegExpr attribute="Backslash Code" context="cssnowdoc" String="<<<'((EO)?CSS)'" beginRegion="Nowdoc" /> - <RegExpr attribute="Backslash Code" context="javascriptnowdoc" String="<<<'((EO)?JAVASCRIPT)'" beginRegion="Nowdoc" /> - <RegExpr attribute="Backslash Code" context="mysqlnowdoc" String="<<<'((EO)?MYSQL)'" beginRegion="Nowdoc" /> - <RegExpr attribute="Backslash Code" context="nowdoc" String="<<<'([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 @@ Changes: <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]*|"[^"]*"|\$[a-zA-Z]*)|'[^']*'|\])*(->[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*(\[([0-9]*|"[a-zA-Z_]*")|'[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="[^"`]"/> + </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=""" /> + <DetectChar context="doublequotestringescaped" char="\" lookAhead="1"/> + <IncludeRules context="doublestringvariablecommon"/> <DetectChar attribute="String" context="#pop" char=""" /> </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$"]|[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="<<<(?|"((?:EO)?HTML)"|((?:EO)?HTML)\b)" beginRegion="Heredoc" /> + <RegExpr attribute="Heredoc" context="cssheredoc" String="<<<(?|"((?:EO)?CSS)"|((?:EO)?CSS)\b)" beginRegion="Heredoc" /> + <RegExpr attribute="Heredoc" context="javascriptheredoc" String="<<<(?|"((?:EO)?JAVASCRIPT)"|((?:EO)?JAVASCRIPT)\b)" beginRegion="Heredoc" /> + <RegExpr attribute="Heredoc" context="mysqlheredoc" String="<<<(?|"((?:EO)?MYSQL)"|((?:EO)?MYSQL)\b)" beginRegion="Heredoc" /> + <RegExpr attribute="Heredoc" context="heredoc" String="<<<(?|"([A-Za-z_][A-Za-z0-9_]*)"|([A-Za-z_][A-Za-z0-9_]*))" beginRegion="Heredoc" /> + <RegExpr attribute="Nowdoc" context="htmlnowdoc" String="<<<'((?:EO)?HTML)'" beginRegion="Nowdoc" /> + <RegExpr attribute="Nowdoc" context="cssnowdoc" String="<<<'((?:EO)?CSS)'" beginRegion="Nowdoc" /> + <RegExpr attribute="Nowdoc" context="javascriptnowdoc" String="<<<'((?:EO)?JAVASCRIPT)'" beginRegion="Nowdoc" /> + <RegExpr attribute="Nowdoc" context="mysqlnowdoc" String="<<<'((?:EO)?MYSQL)'" beginRegion="Nowdoc" /> + <RegExpr attribute="Nowdoc" context="nowdoc" String="<<<'([A-Za-z_][A-Za-z0-9_]*)'" beginRegion="Nowdoc" /> + <StringDetect attribute="Error" context="#pop" String="<<<" /> + </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]*|"[a-zA-Z_]*")|'[a-zA-Z_]*'|\])*(->[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*(\[([0-9]*|"[a-zA-Z_]*")|'[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> diff --git a/xml/php.xml.patch b/xml/php.xml.patch index 92c953f..c416385 100644 --- a/xml/php.xml.patch +++ b/xml/php.xml.patch @@ -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="<\?(?:=|php)?" insensitive="true" /> - <StringDetect attribute="Keyword" context="#pop" String="?>" /> ++ <!-- 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="<?php" insensitive="true" /> + <Detect2Chars context="phpsource" attribute="Keyword" char="<" char1="?" /> + <Detect2Chars attribute="Keyword" context="#pop" char="?" char1=">" /> diff --git a/xml/powershell.xml b/xml/powershell.xml index d10dc3e..61fd775 100644 --- a/xml/powershell.xml +++ b/xml/powershell.xml @@ -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> diff --git a/xml/prolog.xml b/xml/prolog.xml index 8da31c7..e7f2bff 100644 --- a/xml/prolog.xml +++ b/xml/prolog.xml @@ -101,11 +101,11 @@ to make the rules more expressive. --> <!ENTITY comma ","> <!ENTITY cut "!"> <!ENTITY bar "|"> - <!ENTITY tab " "> + <!ENTITY tab "	"> <!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)" diff --git a/xml/purebasic.xml b/xml/purebasic.xml index 9662af4..fce4625 100644 --- a/xml/purebasic.xml +++ b/xml/purebasic.xml @@ -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"/> diff --git a/xml/raku.xml b/xml/raku.xml new file mode 100644 index 0000000..47420ff --- /dev/null +++ b/xml/raku.xml @@ -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 "*?!.<^:=~"> + + <!ENTITY podfmt "BCEIKLMNPRTUVXZ"> + <!ENTITY allnopodfmt "(?:[^&podfmt;]+|[&podfmt;](?![<«]))+"> + <!ENTITY allnopodfmt1 "(?:[^&podfmt;<>]+|[&podfmt;](<(?:<*(?=<))|(?![<«])))+"> + <!ENTITY allnopodfmt2 "(?:[^&podfmt;«»]+|[&podfmt;](?![<«]))+"> + <!ENTITY allnopodfmt3 "(?:[^&podfmt;<>]+|[&podfmt;](?![<«])|>(?!>)|<(?!<))+"> + + <!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"ingform_q;"ingform_q_assert;"> + + <!ENTITY int10 "(?:[0-9]+(?:_[0-9]+)*)"> + <!ENTITY intN "(?:[0-9a-zA-Z]+(?:_[0-9a-zA-Z]+)*)"> + + <!-- <!ENTITY operators "(?:\b(?:X[*~]|Z=|xx=)|\((?:[<>][+=]|[-&+.<>|^]|cont|elem)\)|\+[&+<=>^|]?|~[&<>^|~]?|\.(?::<[^>]+>|\.\.?\^?|[=?^*+.])?|\^(?:fff?\b|\.\.)?\^?|(?:[?…]|f?ff)\^|\[[*+]\]|=(?:==?|=>>?|>|~=)?|<(?:<==|=[=>]?)?|\*\*=?|\?[?|]?|!(?:[=]|eqv\b)?|%%?|&&?|//?|\|\|?|>=?|-[-=]?|::|[−∈∉∋∌∘∩∪≅≠≤≥≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖×÷∖*…])"> --> + <!-- <!ENTITY hyperoperators "(?:[«»]|<<|>>)"> --> + <!ENTITY safesymboloperators "−∈∉∋∌∘∩∪≅≠≤≥≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖×÷∖*…?.+-/=!~&|^%"> + <!ENTITY unsafesymboloperators "<>«»"> + <!ENTITY symboloperators "&safesymboloperators;&unsafesymboloperators;"> + <!ENTITY bracehyperoperator "(?:\[[^\s]+\]|\([^\s]+\))"> + <!ENTITY prefixoperator "R?(?:[XZ]|xx)?"> + <!ENTITY extrasymboloperators "(?:\^fff?\b\^?|\bf?ff\^|\((?:[<>][+=]|[-&+.<>|^]|cont|elem)\))"> + <!ENTITY hyperoperators1 "[«»]&prefixoperator;(?:&&ident;|[&safesymboloperators;<>]+|&bracehyperoperator;)[«»]"> + <!ENTITY hyperoperators2 "(?:<<|>>)&prefixoperator;(?:&&ident;|[&safesymboloperators;«»]+|&bracehyperoperator;)(?:<<|>>)"> + <!ENTITY hyperoperators "&hyperoperators1;|&hyperoperators2;"> + <!ENTITY startstringasoperator "&prefixoperator;<[&symboloperators;]*(?=\s|$)"> + <!ENTITY funcoperator "\[\[\&&ident;\]\]"> + <!ENTITY reductionoperator "\[&prefixoperator;[&symboloperators;]+\]"> + <!ENTITY innerbraceoperator "[&symboloperators;'"]+"> + <!ENTITY operators "&prefixoperator;(?:(?:[&safesymboloperators;>]|&extrasymboloperators;)[&symboloperators;]*|\(&innerbraceoperator;\)|\[&innerbraceoperator;\]|<[&safesymboloperators;'"]+>)"> + + <!-- <!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="""/> + <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/> + <DetectChar char="{" context="Interpolation" attribute="Operator" beginRegion="block"/> + <RegExpr String="(?:s|tr|TR)®adverb;" context="RegexSubstitution" attribute="Operator"/> + <RegExpr String="(?:rx|m)®adverb;" context="Regex" attribute="Operator"/> + <IncludeRules context="find_Variable"/> + <DetectChar attribute="Pod" context="StartPod" char="=" firstNonSpace="1"/> + <RegExpr String="»\.|<<\.|&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<<" char="<" char1="<"/> + <DetectChar attribute="String Delimiter" context="q_String<" char="<"/> + <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(?="ingform_q;"ingform_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="[%&](?=[?*]&alphabetic;)|(?:\$[&twigils;]|::\?)(?=&alphabetic;)" context="Twigil" attribute="Variable"/> + <RegExpr String="[$@]\(\)|[%@]?\$/|\$!|\$[0-9]+|[\\@%&$]&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="<" context="Pattern<" 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<" 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="""/> + <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="<" char1="("/> + <Detect2Chars attribute="Operator" context="PatternAssertion" char="<" char1="?"/> + <Detect2Chars attribute="Operator" context="PatternAssertion" char="<" char1="!"/> + <Detect2Chars attribute="Operator" context="#stay" char="<" char1="<"/> + <Detect2Chars attribute="Operator" context="#stay" char=">" char1=">"/> + <DetectChar attribute="Pattern Meta Character" context="RegexClass" char="<"/> + <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="<"/> + <AnyChar attribute="Pattern Control Flow" context="#stay" String="&|^$"/> + <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="""/> + <DetectChar attribute="String Delimiter" context="Q_String「" char="「"/> + <DetectChar attribute="String Delimiter" context="q_String<" char="<"/> + <DetectChar attribute="String Delimiter" context="qq_String«" char="«"/> + <RegExpr attribute="String" context="#stay" String="[^-!+()?:<>'"「«]+"/> + </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=">" 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=">" 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="<" 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="<" attribute="Pod Bold" context="#pop!PodFormatB"/> + <Detect2Chars char="B" char1="«" attribute="Pod Bold" context="#pop!PodFormatB2"/> + <Detect2Chars char="I" char1="<" attribute="Pod Italic" context="#pop!PodFormatI"/> + <Detect2Chars char="I" char1="«" attribute="Pod Italic" context="#pop!PodFormatI2"/> + <Detect2Chars char="L" char1="<" attribute="Pod Link" context="#pop!PodFormatL"/> + <Detect2Chars char="L" char1="«" attribute="Pod Link" context="#pop!PodFormatL2"/> + <Detect2Chars char="N" char1="<" attribute="Pod Note" context="#pop!PodFormatN"/> + <Detect2Chars char="N" char1="«" attribute="Pod Note" context="#pop!PodFormatN2"/> + <Detect2Chars char="P" char1="<" attribute="Pod Link" context="#pop!PodFormatL"/> + <Detect2Chars char="P" char1="«" attribute="Pod Link" context="#pop!PodFormatL2"/> + <Detect2Chars char="Z" char1="<" attribute="Pod Comment" context="#pop!PodFormatZ"/> + <Detect2Chars char="Z" char1="«" attribute="Pod Comment" context="#pop!PodFormatZ2"/> + <Detect2Chars char="U" char1="<" attribute="Pod Underline" context="#pop!PodFormatU"/> + <Detect2Chars char="U" char1="«" attribute="Pod Underline" context="#pop!PodFormatU2"/> + <Detect2Chars char="C" char1="<" attribute="Pod Verbatim" context="#pop!PodFormatVT"/> + <Detect2Chars char="C" char1="«" attribute="Pod Verbatim" context="#pop!PodFormatVT2"/> + <Detect2Chars char="E" char1="<" attribute="Pod Unicode" context="#pop!PodFormatE"/> + <Detect2Chars char="E" char1="«" attribute="Pod Unicode" context="#pop!PodFormatE2"/> + <Detect2Chars char="K" char1="<" attribute="Pod Verbatim" context="#pop!PodFormatVT"/> + <Detect2Chars char="K" char1="«" attribute="Pod Verbatim" context="#pop!PodFormatVT2"/> + <Detect2Chars char="R" char1="<" attribute="Pod Verbatim" context="#pop!PodFormatVT"/> + <Detect2Chars char="R" char1="«" attribute="Pod Verbatim" context="#pop!PodFormatVT2"/> + <Detect2Chars char="T" char1="<" attribute="Pod Verbatim" context="#pop!PodFormatVT"/> + <Detect2Chars char="T" char1="«" attribute="Pod Verbatim" context="#pop!PodFormatVT2"/> + <Detect2Chars char="V" char1="<" attribute="Pod Verbatim" context="#pop!PodFormatV"/> + <Detect2Chars char="V" char1="«" attribute="Pod Verbatim" context="#pop!PodFormatV2"/> + <Detect2Chars char="X" char1="<" attribute="Pod Indexed Terms" context="#pop!PodFormatX"/> + <Detect2Chars char="X" char1="«" attribute="Pod Indexed Terms" context="#pop!PodFormatX2"/> + <Detect2Chars char="M" char1="<" 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="<" 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="<" 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="<" char1="<" 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="<" 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="<" 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="<" char1="<" 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="<" 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="<" 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="<" char1="<" 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="<" 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;<>|]+|[&podfmt;](?![<«]))+"/> + <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;](?![<«]))+"/> + <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;<>|]+|[&podfmt;](?![<«])|>(?!>)|<(?!<))+"/> + <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="<" 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="<" 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="<" char1="<" 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="<" 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="<" 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="<" char1="<" 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="<" 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="<" 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="<" char1="<" 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="<" 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="<" 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="<" char1="<" 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="<" 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="<" 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="<" char1="<" 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="<" 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;<>|;,]+|[&podfmt;](?![<«]))+"/> + <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;](?![<«]))+"/> + <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;<>|;,]+|[&podfmt;](?![<«])|>(?!>)|<(?!<))+"/> + <AnyChar String="|;," attribute="Pod Operator" context="#stay"/> + <Detect2Chars char="<" char1="<" 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="<" 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="<" 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=""" 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=""" 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=""" 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=""" context="#pop" attribute="String Delimiter"/> + <DetectChar char="\" context="SpecialChar" attribute="String Special Character"/> + <RegExpr String="(?:[^"\\]*|\\$)*" 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="[^"]" 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="[^"]" 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="[^]"]" 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="[^"]" 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="[^]"]" 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="<" context="#pop!Q_String<" 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<" 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_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=""" 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]|"ingconstruct;|$))*" 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="[^\\${@&]*" 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="<" context="#pop#pop!q_String<" 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="(?:[^()\\]*|\\(?![()\\]|"ingconstruct;|$))*" 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="(?:[^\[\]\\]*|\\(?![\[\]\\]|"ingconstruct;|$))*" 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="(?:[^{}\\]*|\\(?![{}\\]|"ingconstruct;|$))*" 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="(?:[^<>\\]*|\\(?![<>\\]|"ingconstruct;|$))*" 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]|"ingconstruct;|$))*" 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="(?:[^\\']*|\\(?![\\']|"ingconstruct;|$))*" 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="<" context="#pop#pop!qq_String<" 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="[^()\\${@&]*" 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="[^\[\]\\${@&]*" 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="[^{}\\$@&]*" 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="[^<>\\${@&]*" 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="[^«»\\${@&]*" context="#stay" attribute="String"/> + </context> + + <context name="qq_String<<" attribute="String" lineEndContext="#stay"> + <Detect2Chars char=">" char1=">" context="#pop" attribute="String Delimiter"/> + <Detect2Chars char="<" char1="<" context="qq_String<<" attribute="String Delimiter"/> + <IncludeRules context="find_qq_StringCommon"/> + <RegExpr String="([^<>\\${@&]*|<(?!<)|>(?!>))" 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\\${@&]*" dynamic="1" context="#stay" attribute="String"/> + </context> + + <context name="qq_RawString" attribute="String" lineEndContext="#stay"> + <DetectChar char=""" context="#pop" attribute="String Delimiter"/> + <IncludeRules context="find_qq_StringCommon"/> + <RegExpr String="[^\\"${@&]*" 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="&" 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="&&ident;\(" context="#pop!FunctionParameters" attribute="Function"/> + <DetectChar char="&" 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<<<" String="<<<" 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<<" char="<" char1="<" 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<" char="<" 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<<<" 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"/> + <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<<" 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"/> + <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<" 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="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; --> diff --git a/xml/rest.xml b/xml/rest.xml index 0e5d510..b27f6b9 100644 --- a/xml/rest.xml +++ b/xml/rest.xml @@ -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;[^">\s`\)]*[^\s!"'`\(\)\*,\.:;<>\?~\]\}\\](?=[[:punct:]]*(?:[\s\)]|$))" /> diff --git a/xml/ruby.xml b/xml/ruby.xml index 20fe7b9..d74dec9 100644 --- a/xml/ruby.xml +++ b/xml/ruby.xml @@ -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"/> diff --git a/xml/sed.xml b/xml/sed.xml index acc777e..aa2ce7b 100644 --- a/xml/sed.xml +++ b/xml/sed.xml @@ -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"> diff --git a/xml/spdx-comments.xml b/xml/spdx-comments.xml index f1058c2..b30198c 100644 --- a/xml/spdx-comments.xml +++ b/xml/spdx-comments.xml @@ -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> diff --git a/xml/sql-mysql.xml b/xml/sql-mysql.xml index dab5e96..d62293d 100644 --- a/xml/sql-mysql.xml +++ b/xml/sql-mysql.xml @@ -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="+-*/=<>"/> diff --git a/xml/sql-postgresql.xml b/xml/sql-postgresql.xml index 7b52d6e..902fa0e 100644 --- a/xml/sql-postgresql.xml +++ b/xml/sql-postgresql.xml @@ -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="""/> - <AnyChar attribute="Symbol" context="#stay" String=":&"/> - <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="+-*/=%^!<>&|@~#"/> <Detect2Chars attribute="Operator" context="#stay" char=":" char1="="/> + <AnyChar attribute="Symbol" context="#stay" String=":&"/> <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="+-*/=%^!<>&|@~#"/> </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="&"/> + <DetectChar attribute="Symbol" context="#stay" char="&"/> <DetectChar attribute="String" context="#pop" char="'"/> </context> <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop"> diff --git a/xml/sql.xml b/xml/sql.xml index 15aab91..a592d46 100644 --- a/xml/sql.xml +++ b/xml/sql.xml @@ -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="+-*/=<>"/> diff --git a/xml/typescript.xml b/xml/typescript.xml index e1f1cec..42e88c0 100644 --- a/xml/typescript.xml +++ b/xml/typescript.xml @@ -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="¶meter;" /> + <!-- unrecheable by Regex=&identifier; in "JSBase##JavaScript" included by "Normal Pt2" + <RegExpr context="#stay" attribute="Parameter" String="¶meter;" />--> </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" /> diff --git a/xml/verilog.xml b/xml/verilog.xml index 1f1f221..3bf63d0 100644 --- a/xml/verilog.xml +++ b/xml/verilog.xml @@ -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"/> diff --git a/xml/vhdl.xml b/xml/vhdl.xml index 31f8b08..0706cab 100644 --- a/xml/vhdl.xml +++ b/xml/vhdl.xml @@ -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_:#%@-]*"> - <!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,386 +209,387 @@ <contexts> <!-- start / global environment --> - <context name="start" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> - <IncludeRules context="preDetection"/> - - <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;"/> + <context name="start" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="preDeclaration"/> + + <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"/> - </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> - -<!-- 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="architecture" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="blank"/> + <RegExpr attribute="Name" context="arch_of" beginRegion="ArchitectureRegion1" + 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"/> - </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"/> - </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> - - -<!-- 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;)?)"/> - - <IncludeRules context="generalDetection"/> - </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> - - <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> - - -<!--====process ===============--> -<!-- process environment --> - - <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"/> - </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> - - - - -<!--====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> - - <!-- Inside a port or generic map--> - <context name="instanceMap" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> - <AnyChar attribute="Error" context="#stay" String="<;:"/> - <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"/> + <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> - <!-- 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="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> -<!--====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> - - <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="arch_decl" attribute="Normal Text" lineEndContext="#stay"> + <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> <!--====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="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="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="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> <!--====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"/> + <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> - <context name="case2" attribute="Normal Text" lineEndContext="#stay"> - <IncludeRules context="preDetection"/> - <RegExpr attribute="Control" context="#pop#pop" insensitive="true" endRegion="CaseRegion1" + <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*;"/> - <RegExpr attribute="Control" context="caseWhen" lookAhead="true" insensitive="true" - String="&bos;when(\s+&varname;)?&eos;"/> - <IncludeRules context="proc_rules"/> + <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true" + String="end" endRegion="CaseRegion1"/> </context> - <context name="caseWhen" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> - <Detect2Chars char="=" char1=">" 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="case_when" attribute="Normal Text" lineEndContext="#stay"> + <Detect2Chars char="=" char1=">" attribute="Operator" context="case_when2" beginRegion="CaseWhenRegion1"/> + <IncludeRules context="preExpression"/> + <WordDetect attribute="Control" insensitive="true" String="when"/> + <IncludeRules context="postExpression"/> </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"/> + <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> +<!--====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> + +<!--====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="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" dynamic="true"> - <IncludeRules context="preDetection"/> - <RegExpr attribute="Name" context="entity_main" beginRegion="EntityRegion1" insensitive="true" - String="(&varname;)"/> - <IncludeRules context="generalDetection"/> + <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> - <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="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> <!--====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*;"/> + <context name="configuration" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop"> + <IncludeRules context="blank"/> + <RegExpr attribute="Name" context="conf_of" beginRegion="ConfigurationRegion1" + String="(&identifier;)"/> + </context> + + <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> - <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="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="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> <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"/> + <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="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"/> + <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> <!--====Basic Stuff ===============--> -<!-- basic rules --> - <context name="preDetection" attribute="Normal Text" lineEndContext="#stay"> +<!-- 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> + +<!-- declaration --> + <context name="preDeclaration" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="blank"/> + <AnyChar attribute="Operator" context="#stay" String="[&><=:+-*/|`].,"/> <DetectChar attribute="Vector" context="string" char="""/> - <AnyChar attribute="Operator" context="#stay" String="[&><=:+\-*\/|].,"/> <DetectChar attribute="Attribute" context="attribute" char="'"/> + <Int attribute="Integer" context="#stay"/> + </context> + + <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> + +<!-- label --> + <context name="label" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Name" context="after_label" String="\b(?!process|constant|signal|variable)&varname;(?=\s*:(?!=))"/> + </context> + + <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> + + <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> + +<!-- 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="sequential_stmt_decl" attribute="Normal Text" lineEndContext="#stay"> + <DetectChar attribute="Normal Text" context="#pop" char=";"/> + <IncludeRules context="preDeclaration"/> + <IncludeRules context="postDeclaration"/> + </context> + +<!-- 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="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> + +<!-- 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> + +<!-- 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> +<!-- expression --> + <context name="preExpression" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="blank"/> + <AnyChar attribute="Operator" context="#stay" String="[&><=:+-*/|`].,"/> + <DetectChar attribute="Vector" context="string" char="""/> + <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 --> @@ -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=")=<>" lookAhead="true" /> + <AnyChar attribute="Attribute" context="#pop" String=")=<>;" 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;|"[^"]+"))?\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"/> |