summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnMacFarlane <>2021-02-23 06:22:00 (GMT)
committerhdiff <hdiff@hdiff.luite.com>2021-02-23 06:22:00 (GMT)
commite970471b447b11480265b02577b57eb75b3cc6dc (patch)
tree04b373b89a71a2d2502d931a68b509f3e4ba1592
parentcb2893417337d66693d781ea0576adf3781b431d (diff)
version 0.10.30.10.3
-rw-r--r--changelog.md17
-rw-r--r--skylighting-core.cabal2
-rw-r--r--src/Skylighting/Loader.hs2
-rw-r--r--test/expected/abc.ada.native451
-rw-r--r--test/expected/abc.c.native291
-rw-r--r--test/expected/abc.cpp.native383
-rw-r--r--test/expected/abc.cs.native451
-rw-r--r--test/expected/abc.d.native245
-rw-r--r--test/expected/abc.go.native239
-rw-r--r--test/expected/abc.php.native144
-rw-r--r--test/test-skylighting.hs8
-rw-r--r--xml/actionscript.xml4
-rw-r--r--xml/ada.xml4
-rw-r--r--xml/asp.xml3
-rw-r--r--xml/awk.xml6
-rw-r--r--xml/bash.xml112
-rw-r--r--xml/bibtex.xml12
-rw-r--r--xml/boo.xml3
-rw-r--r--xml/c.xml4
-rw-r--r--xml/cmake.xml10
-rw-r--r--xml/cpp.xml14
-rw-r--r--xml/cs.xml4
-rw-r--r--xml/d.xml4
-rw-r--r--xml/elm.xml9
-rw-r--r--xml/email.xml11
-rw-r--r--xml/fasm.xml5
-rw-r--r--xml/fsharp.xml4
-rw-r--r--xml/glsl.xml4
-rw-r--r--xml/gnuassembler.xml6
-rw-r--r--xml/go.xml4
-rw-r--r--xml/haskell.xml6
-rw-r--r--xml/haskell.xml.patch13
-rw-r--r--xml/idris.xml4
-rw-r--r--xml/isocpp.xml8
-rw-r--r--xml/javascript.xml3
-rw-r--r--xml/julia.xml4
-rw-r--r--xml/latex.xml2
-rw-r--r--xml/lilypond.xml22
-rw-r--r--xml/makefile.xml6
-rw-r--r--xml/mediawiki.xml4
-rw-r--r--xml/metafont.xml9
-rw-r--r--xml/mustache.xml3
-rw-r--r--xml/objectivec.xml4
-rw-r--r--xml/objectivecpp.xml6
-rw-r--r--xml/octave.xml4
-rw-r--r--xml/opencl.xml4
-rw-r--r--xml/perl.xml3
-rw-r--r--xml/php.xml534
-rw-r--r--xml/php.xml.patch17
-rw-r--r--xml/powershell.xml4
-rw-r--r--xml/prolog.xml4
-rw-r--r--xml/purebasic.xml4
-rw-r--r--xml/raku.xml1782
-rw-r--r--xml/rest.xml4
-rw-r--r--xml/ruby.xml7
-rw-r--r--xml/sed.xml6
-rw-r--r--xml/spdx-comments.xml23
-rw-r--r--xml/sql-mysql.xml3
-rw-r--r--xml/sql-postgresql.xml12
-rw-r--r--xml/sql.xml3
-rw-r--r--xml/typescript.xml6
-rw-r--r--xml/verilog.xml4
-rw-r--r--xml/vhdl.xml785
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="&lt;\s*\/\s*script\s*&gt;" insensitive="true" />
<DetectChar attribute="Comment" context="asp_onelinecomment" char="'" />
<DetectChar attribute="String" context="doublequotestring" char="&quot;" />
- <DetectChar attribute="String" context="singlequotestring" char="&#39;" />
<DetectChar attribute="Keyword" context="#stay" char="&amp;" />
<RegExpr attribute="String" context="#stay" String="[0123456789]*\.\.\.[0123456789]*" />
<HlCOct attribute="Octal" context="#stay" />
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 "&#009;">
- <!ENTITY funcname "([^&_fragpathseps;{}=#$]|[+!@](?!\())([^&_fragpathseps;{}=$]*+([+!@](?!\())?+)*+">
+ <!ENTITY funcname "([^&_fragpathseps;}=#$]|[+!@](?!\())([^&_fragpathseps;}=$]*+([+!@](?!\())?+)*+">
<!ENTITY varname "[A-Za-z_][A-Za-z0-9_]*">
<!ENTITY eos "(?=$|[ &tab;])"> <!-- eol or space following -->
<!ENTITY eoexpr "(?=$|[ &tab;&lt;>|&amp;;])">
@@ -12,23 +12,25 @@
<!ENTITY wordseps " &tab;&symbolseps;"> <!-- see man bash -->
<!ENTITY _fragpathseps "*?+!@&wordseps;&substseps;">
- <!ENTITY _fragpathnosep "(?:[+!@](?!\()|\\.)?+">
+ <!ENTITY _fragpathnosep "(?:[+!@](?!\()|\\.|&_brace_noexpansion;)?+">
<!ENTITY path "(?:[^&_fragpathseps;]*+&_fragpathnosep;)*+">
<!ENTITY fragpath "(?:[^&_fragpathseps;/]*+&_fragpathnosep;)*+">
<!ENTITY opt "(?:[^&_fragpathseps;=/]*+&_fragpathnosep;)*+">
<!ENTITY pathpart "(?:~|\.\.?|&fragpath;)(?:/&path;|(?=[*?]|[+!@]\(|&fragpath;(?:[/*?]|[+!@]\()))|(?:~|\.\.?)(?=[&wordseps;]|$)">
- <!ENTITY _braceexpansion_spe " &tab;{}\\`'&quot;$">
- <!ENTITY brace_noexpansion "\{[^&_braceexpansion_spe;,]*+\}">
+ <!ENTITY _braceexpansion_spe " &tab;&lt;>|&amp;;{}\\`'&quot;$">
+ <!ENTITY _brace_noexpansion "\{[^&_braceexpansion_spe;,]*+\}">
<!ENTITY _braceexpansion_var "\$(?:\{[^\[\]&_braceexpansion_spe;]*+(?:\[[*@a-zA-Z0-9]\])\})?">
<!ENTITY _braceexpansion_string "'[^']*'|&quot;([^&quot;\`]*+|`[^`]*`)*+&quot;">
- <!ENTITY _braceexpansion_consume "\\.|`[^`]*`|&_braceexpansion_string;|&_braceexpansion_var;|&brace_noexpansion;|(?R)?+">
- <!ENTITY braceexpansion "{(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_consume;)+?,(?:[^&_braceexpansion_spe;]++|&_braceexpansion_consume;)+?}">
+ <!ENTITY _braceexpansion_elems "\\.|`[^`]*`|&_braceexpansion_string;|&_braceexpansion_var;|&_brace_noexpansion;">
+ <!ENTITY _braceexpansion_consume "&_braceexpansion_elems;|{(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_elems;)*?}|(?R)?+">
+ <!ENTITY _braceexpansion "(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_consume;)*?,(?:[^&_braceexpansion_spe;]++|&_braceexpansion_consume;)*?}">
+ <!ENTITY braceexpansion "{&_braceexpansion;">
<!ENTITY heredocq "(?|&quot;([^&quot;]+)&quot;|'([^']+)'|\\(.[^&wordseps;&substseps;]*))">
]>
-<language name="Bash" version="17" kateversion="5.62" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;*.nix;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+<language name="Bash" version="24" kateversion="5.62" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;*.nix;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
<!-- (c) 2004 by Wilbert Berendsen (wilbert@kde.nl)
Changes by Matthew Woehlke (mw_triad@users.sourceforge.net)
@@ -71,6 +73,7 @@
<item>command</item>
<item>compgen</item>
<item>complete</item>
+ <item>coproc</item>
<item>dirs</item>
<item>disown</item>
<item>echo</item>
@@ -492,12 +495,14 @@
<AnyChar context="CommandMaybeRedirection" String="&lt;&gt;0123456789" lookAhead="1"/>
<AnyChar attribute="Error" context="#stay" String=")}"/>
+
+ <LineContinue attribute="Escape" context="#stay"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="MaybeBracketExpression" fallthroughContext="#pop!Command">
<!-- start expression in double brackets -->
- <RegExpr attribute="Keyword" context="ExprDblBracket" String="\[\[(?=$|[ &tab;(])" beginRegion="expression"/>
+ <RegExpr attribute="Keyword" context="#pop!ExprDblBracket" String="\[\[(?=$|[ &tab;(])" beginRegion="expression"/>
<!-- start expression in single brackets -->
- <RegExpr attribute="Builtin" context="ExprBracket" String="\[&eos;" beginRegion="expression"/>
+ <RegExpr attribute="Builtin" context="#pop!ExprBracket" String="\[&eos;" beginRegion="expression"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="MaybeGroup">
<!-- start a group command with { -->
@@ -561,14 +566,13 @@
</context>
<context attribute="OtherCommand" lineEndContext="#pop#pop" name="CommandName">
<DetectSpaces attribute="Normal Text" context="#pop#pop!CommandArgs"/>
+ <DetectIdentifier attribute="OtherCommand" context="#stay"/>
<DetectChar context="CommandVariables" char="$" lookAhead="1"/>
<IncludeRules context="FindStrings"/>
- <DetectChar context="#pop#pop" char="`" lookAhead="1"/>
<Detect2Chars attribute="Control" context="#pop#pop" char="&amp;" char1="&amp;"/>
<Detect2Chars attribute="Control" context="#pop#pop" char="|" char1="|"/>
<DetectChar attribute="Control" context="#pop#pop" char="|"/>
- <DetectChar attribute="Control" context="#pop#pop" char=";"/>
- <DetectChar context="#pop#pop" char=")" lookAhead="1"/>
+ <AnyChar context="#pop#pop" String=";)`" lookAhead="1"/>
<AnyChar context="#pop#pop!CommandArgs" String="&amp;&lt;>" lookAhead="1"/>
<!-- start expression in double parentheses -->
<Detect2Chars attribute="Error" context="#pop#pop!ExprDblParen" char="(" char1="(" beginRegion="expression"/>
@@ -604,9 +608,6 @@
<!-- handle &, |, ;, ` -->
<AnyChar context="#pop" String="&amp;|;`" lookAhead="1"/>
- <!-- handle process subst -->
- <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&lt;" char1="("/>
- <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&gt;" char1="("/>
<!-- handle redirection -->
<AnyChar context="CommandArgMaybeRedirection" String="&lt;&gt;0123456789" lookAhead="1"/>
@@ -626,7 +627,6 @@
<context attribute="Option" lineEndContext="#pop" name="ShortOption" fallthroughContext="#pop">
<DetectChar attribute="Path" context="PathThenPop" char="/"/>
- <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
<IncludeRules context="LongOption"/>
</context>
<context attribute="Option" lineEndContext="#pop" name="LongOption" fallthroughContext="#pop">
@@ -674,6 +674,7 @@
<!-- Only highlighting closed braces. The "BraceExpansion" context corrects
the closure of braces and allows recursive braces (bug #387915). -->
<RegExpr context="#pop!BraceExpansion" String="&braceexpansion;" lookAhead="1"/>
+ <RegExpr attribute="Escape" context="#pop!SequenceExpression" String="{(?=([-+]?[0-9]+\.\.[-+]?[0-9]+|[a-zA-Z]\.\.[a-zA-Z])(\.\.[-+]?[0-9]+)?\})"/>
</context>
<!-- FindPathThenPop consumes path -->
@@ -701,20 +702,18 @@
<IncludeRules context="IncExtGlob"/>
</context>
<context attribute="Path" lineEndContext="#stay" name="IncExtGlob">
- <DetectChar attribute="Glob" context="#stay" char="|"/>
<Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="?" char1="("/>
<Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="*" char1="("/>
<Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="+" char1="("/>
<Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="@" char1="("/>
<Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="!" char1="("/>
- <AnyChar attribute="Glob" context="#stay" String="?*"/>
+ <AnyChar attribute="Glob" context="#stay" String="|?*"/>
<IncludeRules context="FindWord"/>
<DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>
</context>
<context attribute="Path" lineEndContext="#pop#pop" name="PathThenPop">
<AnyChar context="#pop#pop" String="&wordseps;`" lookAhead="1"/>
<IncludeRules context="FindWord"/>
- <LineContinue attribute="Escape" context="#stay"/>
<IncludeRules context="FindExtGlobAndPop"/>
<AnyChar attribute="Glob" context="#stay" String="?*"/>
<DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>
@@ -742,16 +741,19 @@
<context attribute="Normal Text" lineEndContext="#pop" name="VarAssign" fallthroughContext="#pop">
<DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
- <DetectChar attribute="Variable" context="Assign" char="="/>
- <Detect2Chars attribute="Variable" context="Assign" char="+" char1="="/>
+ <DetectChar attribute="Operator" context="#pop!Assign" char="="/>
+ <Detect2Chars attribute="Operator" context="#pop!Assign" char="+" char1="="/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="DispatchKeyword">
<!-- match do and if blocks -->
- <Detect2Chars attribute="Control Flow" context="#pop" char="i" char1="f" beginRegion="if"/>
+ <Detect2Chars attribute="Control Flow" context="#pop!NotCond" char="i" char1="f" beginRegion="if"/>
<Detect2Chars attribute="Control Flow" context="#pop" char="f" char1="i" endRegion="if"/>
<StringDetect attribute="Control Flow" context="#pop" String="done" endRegion="do"/>
<Detect2Chars attribute="Control Flow" context="#pop" char="d" char1="o" beginRegion="do"/>
+ <!-- handle while/until as a special case -->
+ <StringDetect attribute="Control Flow" context="#pop!NotCond" String="while"/>
+ <StringDetect attribute="Control Flow" context="#pop!NotCond" String="until"/>
<!-- handle for as a special case -->
<StringDetect attribute="Control Flow" context="#pop!For" String="for"/>
<!-- handle select as a special case -->
@@ -767,6 +769,17 @@
<!-- handle keywords -->
<DetectIdentifier attribute="Control Flow" context="#pop"/>
</context>
+
+ <!-- if ! ..., while ! ... and until ! ... -->
+ <context attribute="Normal Text" lineEndContext="#pop" name="NotCond" fallthroughContext="#pop">
+ <DetectSpaces attribute="Normal Text" context="#pop!NotCond2"/>
+ </context>
+ <context attribute="Normal Text" lineEndContext="#pop" name="NotCond2" fallthroughContext="#pop">
+ <Detect2Chars attribute="Expression" context="#pop" char="!" char1="&tab;"/>
+ <Detect2Chars attribute="Expression" context="#pop" char="!" char1=" "/>
+ <LineContinue attribute="Expression" context="#pop" char="!"/>
+ </context>
+
<context attribute="Normal Text" lineEndContext="#pop" name="For" fallthroughContext="#pop">
<LineContinue attribute="Escape" context="#stay"/>
<DetectSpaces attribute="Normal Text" context="#stay"/>
@@ -790,6 +803,7 @@
<Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1=">"/>
<Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="|"/>
<Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char=">" char1="&amp;"/>
+ <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char=">" char1="("/>
<DetectChar attribute="Redirection" context="#pop!WordRedirection" char=">"/>
<StringDetect attribute="Redirection" context="#pop!StringRedirection" String="&lt;&lt;&lt;"/>
<!-- handle here document -->
@@ -797,6 +811,7 @@
<!-- handle input redirection -->
<Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char="&lt;" char1="&amp;"/>
<Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char="&lt;" char1=">"/>
+ <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char="&lt;" char1="("/>
<DetectChar attribute="Redirection" context="#pop!WordRedirection" char="&lt;"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection" fallthroughContext="#pop!FdRedirection2">
@@ -926,7 +941,8 @@
<DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
</context>
<context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQDispatchVariables">
- <IncludeRules context="DispatchVariables"/>
+ <IncludeRules context="DispatchSubstVariables"/>
+ <IncludeRules context="DispatchVarnameVariables"/>
<DetectChar attribute="String DoubleQ" context="#pop" char="$"/>
</context>
<context attribute="String DoubleQ" lineEndContext="#pop" name="StringDQEscape">
@@ -975,16 +991,19 @@
<!-- VarBraceStart is called as soon as ${ is encoutered -->
<context attribute="Variable" lineEndContext="#pop!VarBrace" name="VarBraceStart" fallthroughContext="#pop!VarBrace">
- <DetectChar attribute="Parameter Expansion" context="#pop!VarBracePrefix" char="!"/>
- <DetectChar attribute="Parameter Expansion" context="#pop!VarBrace" char="#"/>
+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBracePrefix" char="!"/>
+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBrace" char="#"/>
</context>
<!-- VarBracePrefix called as soon as ${! is encoutered -->
<context attribute="Variable" lineEndContext="#pop" name="VarBracePrefix">
<RegExpr attribute="Variable" context="#pop!VarBracePrefixSuffix" String="&varname;"/>
</context>
- <context attribute="Variable" lineEndContext="#pop" name="VarBracePrefixSuffix">
- <DetectChar attribute="Variable" context="#pop" char="}"/>
+ <context attribute="Variable" lineEndContext="#pop" name="VarBracePrefixSuffix" fallthroughContext="#pop!VarError">
+ <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+ <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="@*"/>
+ <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[@]"/>
+ <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[*]"/>
</context>
<!-- VarBrace is called as soon as ${ or ${# are encoutered -->
@@ -1006,14 +1025,14 @@
<Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=":" char1="+"/>
<Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="#" char1="#"/>
<Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="%" char1="%"/>
- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="^" char1="^"/>
- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="," char1=","/>
+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="^" char1="^"/>
+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="," char1=","/>
<DetectChar attribute="Parameter Expansion Operator" context="#pop!VarSub" char=":"/>
<DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="%"/>
<DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="#"/>
<DetectChar attribute="Parameter Expansion Operator" context="#pop!VarSubst" char="/"/>
- <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="^"/>
- <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=","/>
+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="^"/>
+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char=","/>
<DetectChar attribute="Parameter Expansion Operator" context="#pop!VarTransformation" char="@"/>
</context>
@@ -1033,13 +1052,20 @@
<DetectChar attribute="Error" context="#pop" char="$"/>
</context>
- <!-- called as soon as ${xxx:- ${xxx:= ${xxx:? ${xxx:+ ${xxx^ ${xxx ${xxx# and ${xxx% are encoutered -->
+ <!-- called as soon as ${xxx:- ${xxx:= ${xxx:? ${xxx:+ ${xxx# ${xxx% and ${xxx are encoutered -->
<context attribute="Normal Text" lineEndContext="#stay" name="AlternateValue">
<DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
<IncludeRules context="FindWord"/>
<IncludeRules context="FindPattern"/>
</context>
+ <!-- called as soon as ${xxx^ are ${xxx, are encoutered -->
+ <context attribute="Pattern" lineEndContext="#stay" name="AlternatePatternValue">
+ <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+ <IncludeRules context="FindWord"/>
+ <IncludeRules context="FindPattern"/>
+ </context>
+
<!-- called as soon as ${xxx/ is encoutered -->
<context attribute="Normal Text" lineEndContext="#stay" name="VarSubst" fallthroughContext="#pop!VarSubstPat">
<AnyChar attribute="Parameter Expansion Operator" context="#pop!VarSubstPat" String="/#%"/>
@@ -1070,14 +1096,19 @@
</context>
<context attribute="Escape" lineEndContext="#pop" name="EscapeMaybeBraceExpansion">
<IncludeRules context="DispatchBraceExpansion"/>
- <RegExpr attribute="Escape" context="#pop" String="&brace_noexpansion;"/>
- <DetectChar attribute="Escape" context="#pop" char="{"/>
+ <DetectChar attribute="Escape" context="#pop!BraceExpansion2" char="{"/>
</context>
<context attribute="Escape" lineEndContext="#pop" name="BraceExpansionVariables">
<IncludeRules context="DispatchVariables"/>
<DetectChar attribute="Escape" context="#pop" char="$"/>
</context>
+ <context attribute="Normal Text" lineEndContext="#pop" name="SequenceExpression">
+ <AnyChar attribute="Decimal" context="#stay" String="0123456789-+"/>
+ <Detect2Chars attribute="Escape" context="#stay" char="." char1="."/>
+ <DetectChar attribute="Escape" context="#pop" char="}"/>
+ </context>
+
<!-- ====== These are the contexts that can be branched to ======= -->
<!-- ExprDblParen consumes an expression started in command mode till )) -->
@@ -1131,7 +1162,7 @@
<RegExpr attribute="BaseN" context="#pop" String="[0-9a-zA-Z@_]+"/>
</context>
<context attribute="Error" lineEndContext="#pop" name="NumberError" fallthroughContext="#pop">
- <AnyChar attribute="Error" context="NumberError" String="8901234567"/>
+ <AnyChar attribute="Error" context="#stay" String="8901234567"/>
</context>
<!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable -->
@@ -1190,7 +1221,7 @@
<context attribute="Normal Text" lineEndContext="#stay" name="FindExprBracketEnd">
<LineContinue attribute="Escape" context="#stay"/>
- <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[ &tab;;|&amp;&lt;>]))" endRegion="expression"/>
+ <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[ &tab;;|&amp;&lt;>)]))" endRegion="expression"/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary" fallthroughContext="#pop!ExprBracketValue">
@@ -1271,7 +1302,7 @@
<LineContinue attribute="Escape" context="#stay"/>
<Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="&amp;" char1="&amp;"/>
<Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="|" char1="|"/>
- <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[ &tab;;|&amp;]))" endRegion="expression"/>
+ <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[ &tab;;|&amp;)]))" endRegion="expression"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketRegex">
@@ -1300,7 +1331,6 @@
<IncludeRules context="FindStrings"/>
<DetectChar context="RegexDispatchVariables" char="$" lookAhead="1"/>
<DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="RegexDispatchVariables">
<IncludeRules context="DispatchVariables"/>
@@ -1368,7 +1398,7 @@
<!-- Assign consumes an expression till EOL or whitespace -->
<context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthroughContext="#pop!Assign2">
- <DetectChar attribute="Variable" context="AssignArray" char="("/>
+ <DetectChar attribute="Variable" context="#pop!AssignArray" char="("/>
</context>
<context attribute="Normal Text" lineEndContext="#pop" name="Assign2" fallthroughContext="#pop">
<DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
@@ -1378,6 +1408,7 @@
<!-- AssignArray consumes everything till ), marking assignments -->
<context attribute="Normal Text" lineEndContext="#stay" name="AssignArray" fallthroughContext="NormalOption">
<DetectSpaces attribute="Normal Text" context="#stay"/>
+ <DetectChar attribute="Comment" context="Comment" char="#"/>
<DetectChar attribute="Variable" context="#pop!Assign2" char=")"/>
<DetectChar context="AssignArrayKey" char="[" lookAhead="1"/>
<DetectChar attribute="Backquote" context="AssignArrayBackq" char="`"/>
@@ -1422,6 +1453,7 @@
<context attribute="Normal Text" lineEndContext="#stay" name="CaseIn" fallthroughContext="CasePattern">
<DetectSpaces attribute="Normal Text" context="#stay"/>
<DetectChar attribute="Keyword" context="CasePattern" char="("/>
+ <DetectChar attribute="Comment" context="Comment" char="#"/>
</context>
<context attribute="Pattern" lineEndContext="#stay" name="CasePattern">
<DetectSpaces attribute="Normal Text" context="#stay"/>
@@ -1465,7 +1497,7 @@
<itemData name="Variable" defStyleNum="dsVariable"/>
<itemData name="Expression" defStyleNum="dsOthers"/>
<itemData name="Function" defStyleNum="dsFunction"/>
- <itemData name="Pattern" defStyleNum="dsNormal"/>
+ <itemData name="Pattern" defStyleNum="dsSpecialString"/>
<itemData name="Path" defStyleNum="dsNormal"/>
<itemData name="Glob" defStyleNum="dsPreprocessor"/>
<itemData name="Option" defStyleNum="dsAttribute"/>
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="&quot;" attribute="Normal Text" context="QuotedText"/>
<DetectChar char="," context="#stay"/>
<DetectChar char="#" context="#stay"/> <!-- the bibtex string concatenate character -->
- <RegExpr String="[0-9]+" context="#stay"/>
- <RegExpr String="&stringVariable;" attribute="String" /> <!-- assume this is a variable created with @String -->
- <DetectSpaces/>
+ <RegExpr String="[0-9]+" context="#stay"/>
+ <RegExpr String="&stringVariable;" attribute="String" /> <!-- assume this is a variable created with @String -->
<RegExpr String="." attribute="Error" context="#stay"/> <!--this rule catches all errors-->
</context>
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="+*/%|=;!&lt;&gt;!^&amp;~-" context="#stay"/>
- <RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
</context>
<context name="parenthesised" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
diff --git a/xml/c.xml b/xml/c.xml
index 12a34ba..ce42427 100644
--- a/xml/c.xml
+++ b/xml/c.xml
@@ -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>
diff --git a/xml/cs.xml b/xml/cs.xml
index b5d73c5..e22aec4 100644
--- a/xml/cs.xml
+++ b/xml/cs.xml
@@ -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>
diff --git a/xml/d.xml b/xml/d.xml
index 6bd89a1..1c6b6d7 100644
--- a/xml/d.xml
+++ b/xml/d.xml
@@ -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|\\&quot;|\\\\|\\u\{(10|0?[0-9])[0-9a-fA-F]{4}\})'" />
- <DetectChar attribute="String" context="string" char="&quot;" />
<StringDetect attribute="String" context="multilineString" String="&quot;&quot;&quot;"/>
+ <DetectChar attribute="String" context="string" char="&quot;" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="comment">
<DetectSpaces />
@@ -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="&quot;"/>
</context>
<context name="comment-context" attribute="Comment" lineEndContext="#stay">
+ <DetectChar attribute="Comment" context="comment-context" char="("/>
<DetectChar attribute="Comment" context="#pop" char=")"/>
+ <IncludeRules context="quoted-pair"/>
+ </context>
+
+ <context name="quoted-pair" attribute="Escaped Character" lineEndContext="#stay">
+ <RegExpr attribute="Escaped Character" context="#stay" String="\\[\x00-\x7F]"/>
</context>
<context name="body-context" attribute="Normal Text" lineEndContext="#stay">
@@ -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'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- OCaml character code escapes. -->
<!ENTITY DEC "[0-9][0-9_]*"> <!-- Decimal digits with underscores. -->
]>
-<language name="FSharp" version="8" kateversion="5.0" section="Sources" extensions="*.fs;*.fsi;*.fsx" mimetype="" priority="10" author="Bas Bossink (bas.bossink@gmail.com)" license="LGPL">
+<language name="FSharp" version="9" kateversion="5.0" section="Sources" extensions="*.fs;*.fsi;*.fsx" mimetype="" priority="10" author="Bas Bossink (bas.bossink@gmail.com)" license="LGPL">
<highlighting>
<list name="keywords">
@@ -256,7 +256,7 @@
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Identifier" defStyleNum="dsNormal"/>
- <itemData name="Symbol" defStyleNum="dsNormal"/>
+ <itemData name="Symbol" defStyleNum="dsOperator"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Core Data Type" defStyleNum="dsDataType"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
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>
diff --git a/xml/go.xml b/xml/go.xml
index 4026294..b1859f4 100644
--- a/xml/go.xml
+++ b/xml/go.xml
@@ -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="&quot;" />
<DetectChar attribute="Function Infix" context="infix" char="`"/>
<Detect2Chars attribute="EnumFromTo" context="#stay" char ="." char1="." />
- <AnyChar attribute="EnumFromTo" context="#stay" String="‥" />
+ <DetectChar attribute="EnumFromTo" context="#stay" char="‥" />
<RegExpr attribute="Normal" context="Hamlet" String="\[[wxs]?hamlet\|" />
<StringDetect attribute="Normal" context="Julius" String="[julius|" />
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="&quot;" />
+
+ <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="&quot;" />
<Int attribute="Decimal" context="#stay" />
<RegExpr attribute="Hex" context="#stay" String="0[Xx][0-9A-Fa-f]+"/>
- <RegExpr attribute="Octal" context="#stay" String="0[Xx][0-9A-Fa-f]+"/>
<RegExpr attribute="Float" context="#stay" String="\d+\.\d+([eE][-+]?\d+)?" />
<RegExpr attribute="Type" context="#stay" String="([A-Z][a-zA-Z0-9_]*'*|_\|_)" />
<RegExpr attribute="Normal" context="#stay" String="[a-z][a-zA-Z0-9_]*'*" />
@@ -159,7 +158,6 @@
<itemData name="String" defStyleNum="dsString" spellChecking="true" />
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />
<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false" />
- <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false" />
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />
<itemData name="Type" defStyleNum="dsDataType" spellChecking="false" />
<itemData name="MetaVar" defStyleNum="dsOthers" spellChecking="false" />
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="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?(?=')" />
<RegExpr context="_adjoint" attribute="Delimiter" String="[\)\]}](?=')" />
- <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" />
+ <!-- <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" /> -->
<!-- If ' is not the adjoint operator, it starts a character or an unterminated char -->
<RegExpr context="#stay" attribute="Char" String="'[^']*(''[^']*)*'(?=[^']|$)" />
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 "&#xd7;">
<!ENTITY envname "[a-zA-Z]+\*?">
]>
-<language name="LaTeX" version="16" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
+<language name="LaTeX" version="17" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
<highlighting>
<!-- NOTE: Keywords of kind "\something" do not need a delimiter before "\".
Using a DetectChar rule with lookAhead to detect "\" at the beginning
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(){}[\];$&quot;]*">
<!ENTITY schemefunc0 "\b(define|defined\?|define\*(-public)?|define-(\*|builtin-markup-(list-)?command|class|(extra-)?display-method|fonts?|grob-property|ly-syntax(-loc|-simple)?|macro(-public)?|markup-(list-)command|method|module|music-function|post-event-display-method|public(-macro|-toplevel)?|safe-public|span-event-display-method)|defmacro(\*(-public)?)?|lambda\*?|and|or|if|cond|case|let\*?|letrec|begin|do|delay|set!|else|(quasi)?quote|unquote(-splicing)?|(define|let|letrec)-syntax|syntax-rules)(?=($|\s|\)))">
@@ -56,7 +56,7 @@
]>
<language name="LilyPond" section="Other"
style="lilypond" indenter="lilypond"
- version="8" kateversion="5.0"
+ version="9" kateversion="5.0"
extensions="*.ly;*.LY;*.ily;*.ILY;*.lyi;*.LYI"
mimetype="text/x-lilypond"
author="Wilbert Berendsen (info@wilbertberendsen.nl)" license="LGPL">
@@ -1087,11 +1087,11 @@
<DetectChar char="{" attribute="Keyword" context="sectionrules" beginRegion="section"/>
<keyword String="contexts" attribute="Context"/>
<keyword String="deprecatedcontexts" attribute="Deprecated Context"/>
- <RegExpr String="(&quot;?)\b(&engravers00;)\b\1" attribute="Engraver"/>
- <RegExpr String="(&quot;?)\b(&engravers01;)\b\1" attribute="Engraver"/>
- <RegExpr String="(&quot;?)\b(&engravers02;)\b\1" attribute="Engraver"/>
- <RegExpr String="(&quot;?)\b(&engravers1;)\b\1" attribute="Engraver"/>
- <RegExpr String="(&quot;?)\b(&engravers2;)\b\1" attribute="Engraver"/>
+ <RegExpr String="(&quot;?)\b(?:&engravers00;)\b\1" attribute="Engraver"/>
+ <RegExpr String="(&quot;?)\b(?:&engravers01;)\b\1" attribute="Engraver"/>
+ <RegExpr String="(&quot;?)\b(?:&engravers02;)\b\1" attribute="Engraver"/>
+ <RegExpr String="(&quot;?)\b(?:&engravers1;)\b\1" attribute="Engraver"/>
+ <RegExpr String="(&quot;?)\b(?:&engravers2;)\b\1" attribute="Engraver"/>
<keyword String="layoutobjects" attribute="Layout Object"/>
<keyword String="properties" attribute="Property"/>
<RegExpr String="\b(&headervars;|&papervars;|&layoutvars;)\b" attribute="Variable"/>
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="&#xd7;" 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="--&gt;" endRegion="Comment" />
<RegExpr context="#stay" attribute="Error" String="-(?:-(?!-&gt;))+" />
<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=":!%&amp;()+,-/.*&lt;=&gt;?[]{|}~^&#59;"/>
</context>
@@ -276,7 +274,7 @@
<itemData name="String" defStyleNum="dsString"/>
<itemData name="String Char" defStyleNum="dsSpecialChar" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment"/>
- <itemData name="Symbol" defStyleNum="dsNormal" spellChecking="false"/>
+ <itemData name="Symbol" defStyleNum="dsOperator" spellChecking="false"/>
<itemData name="Preprocessor" defStyleNum="dsPreprocessor" spellChecking="false"/>
<itemData name="Prep. Lib" defStyleNum="dsImport" spellChecking="false"/>
<itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
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="&lt;\?(?:=|php)?" insensitive="true" />
+ <context name="start" lineEndContext="#stay" attribute="Normal Text" fallthrough="true" fallthroughContext="phpsource">
+ <StringDetect context="phpsource" attribute="Keyword" String="&lt;?php" insensitive="true" />
+ <Detect2Chars context="phpsource" attribute="Keyword" char="&lt;" char1="?" />
<Detect2Chars attribute="Keyword" context="#pop" char="?" char1="&gt;" />
</context>
<context name="phpsource" attribute="PHP Text" lineEndContext="#stay">
<DetectSpaces />
+
+ <Detect2Chars attribute="Symbol" context="#stay" char="-" char1=">"/>
+ <Detect2Chars attribute="Operator" context="#stay" char="?" char1="?"/>
+ <Detect2Chars attribute="Scope Resolution" context="#stay" char=":" char1=":" />
+ <DetectChar attribute="Scope Resolution" context="#stay" char="\" />
<Detect2Chars attribute="Keyword" context="#pop" char="?" char1="&gt;" lookAhead="true" />
+ <AnyChar attribute="Other" context="#stay" String=";,?:" />
- <!-- Alternate PHP Block Syntax
- - http://www.php.net/manual/en/control-structures.alternative-syntax.php
- -
- - We must treat the ternary and case/default statements specially so that the : in those can be
- - ignored. Then otherwise we treat the : as a block start, and the 5 different end statements as
- - a block end.
- -
- - The ternary and case/default switch to a context which short-circuits the : detection and
- - just pops back to this context instead of starting a block.
- -
- - We can not use case/default as starting a block because they can be terminated by break. return
- - or not at all, making it impossible to determine where the block should end.
- -
- - Additionally the paamayim nekudotayim (::) must not start a subcontext that is never terminated.
- -->
+ <IncludeRules context="FindComment"/>
- <DetectChar attribute="Other" context="ternary" char="?" />
- <RegExpr attribute="Keyword" context="case" String="(case|default)(\s|:|$)" />
- <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />
- <DetectChar attribute="Normal Text" context="#stay" char=":" beginRegion="Alternate Block" />
- <RegExpr attribute="Control Structures" context="#stay" String="(endif|endwhile|endfor|endforeach|endswitch)\b" endRegion="Alternate Block" />
- <!--/ Alternate PHP Block Syntax -->
+ <StringDetect attribute="Operator" context="#stay" String="&lt;=>" />
+ <Detect2Chars attribute="Symbol" context="#stay" char="=" char1=">"/>
+ <StringDetect context="heredocstart" String="&lt;&lt;&lt;" lookAhead="1" />
+ <AnyChar attribute="Operator" context="#stay" String="=&lt;>&amp;|!+-*/%^~"/>
- <DetectChar attribute="Comment" context="onelinecomment" char="#" />
- <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
- <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
- <keyword attribute="Error" context="#stay" String="deprecated"/>
- <keyword attribute="Control Structures" context="#stay" String="control structures" />
+ <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
+ <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+
+ <keyword attribute="Control Structures" context="control" String="control structures" lookAhead="1"/>
<keyword attribute="Keyword" context="#stay" String="keywords" />
<keyword attribute="Classes" context="#stay" String="predefined-classes"/>
- <DetectChar attribute="Error" context="#stay" char="@" />
<keyword attribute="Function" context="#stay" String="functions" />
<keyword attribute="Special method" context="#stay" String="special_methods" />
<keyword attribute="Library Constant" context="#stay" String="constants"/>
+ <keyword attribute="Operator" context="#stay" String="operators"/>
+ <keyword attribute="Types" context="#stay" String="types"/>
+ <keyword attribute="Error" context="#stay" String="deprecated"/>
<RegExpr attribute="Constant" context="#stay" String="\b[A-Z_][A-Z_0-9]*\b"/>
- <!-- Type casts -->
- <RegExpr attribute="Types" context="#stay" String="\(\s*(&types;)\s*\)"/>
-
<DetectIdentifier />
+
+ <StringDetect attribute="Symbol" context="#stay" String="..." />
+ <DetectChar context="dot" char="." lookAhead="1"/>
+ <AnyChar context="number" String="0123456789" lookAhead="1"/>
+
+ <keyword attribute="Special Variable" context="#stay" String="special-variables"/>
+ <RegExpr attribute="Variable" context="#stay" String="\$+&varid;" />
+
<DetectChar attribute="String" context="doublequotestring" char="&quot;" />
<DetectChar attribute="String" context="backquotestring" char="`" />
<DetectChar attribute="String" context="singlequotestring" char="'" />
- <RegExpr attribute="Backslash Code" context="htmlheredoc" String="&lt;&lt;&lt;&quot;((EO)?HTML)&quot;" beginRegion="Heredoc" />
- <RegExpr attribute="Backslash Code" context="cssheredoc" String="&lt;&lt;&lt;&quot;((EO)?CSS)&quot;" beginRegion="Heredoc" />
- <RegExpr attribute="Backslash Code" context="javascriptheredoc" String="&lt;&lt;&lt;&quot;((EO)?JAVASCRIPT)&quot;" beginRegion="Heredoc" />
- <RegExpr attribute="Backslash Code" context="mysqlheredoc" String="&lt;&lt;&lt;&quot;((EO)?MYSQL)&quot;" beginRegion="Heredoc" />
- <RegExpr attribute="Backslash Code" context="heredoc" String="&lt;&lt;&lt;&quot;([A-Za-z_][A-Za-z0-9_]*)&quot;" beginRegion="Heredoc" />
- <RegExpr attribute="Backslash Code" context="htmlheredoc" String="&lt;&lt;&lt;((EO)?HTML)\b" beginRegion="Heredoc" />
- <RegExpr attribute="Backslash Code" context="cssheredoc" String="&lt;&lt;&lt;((EO)?CSS)\b" beginRegion="Heredoc" />
- <RegExpr attribute="Backslash Code" context="javascriptheredoc" String="&lt;&lt;&lt;((EO)?JAVASCRIPT)\b" beginRegion="Heredoc" />
- <RegExpr attribute="Backslash Code" context="mysqlheredoc" String="&lt;&lt;&lt;((EO)?MYSQL)\b" beginRegion="Heredoc" />
- <RegExpr attribute="Backslash Code" context="heredoc" String="&lt;&lt;&lt;([A-Za-z_][A-Za-z0-9_]*)" beginRegion="Heredoc" />
- <RegExpr attribute="Backslash Code" context="htmlnowdoc" String="&lt;&lt;&lt;'((EO)?HTML)'" beginRegion="Nowdoc" />
- <RegExpr attribute="Backslash Code" context="cssnowdoc" String="&lt;&lt;&lt;'((EO)?CSS)'" beginRegion="Nowdoc" />
- <RegExpr attribute="Backslash Code" context="javascriptnowdoc" String="&lt;&lt;&lt;'((EO)?JAVASCRIPT)'" beginRegion="Nowdoc" />
- <RegExpr attribute="Backslash Code" context="mysqlnowdoc" String="&lt;&lt;&lt;'((EO)?MYSQL)'" beginRegion="Nowdoc" />
- <RegExpr attribute="Backslash Code" context="nowdoc" String="&lt;&lt;&lt;'([A-Za-z_][A-Za-z0-9_]*)'" beginRegion="Nowdoc" />
- <keyword attribute="Special Variable" context="#stay" String="special-variables"/>
- <RegExpr attribute="Variable" context="#stay" String="\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" />
- <RegExpr attribute="String" context="#stay" String="[0123456789]*\.\.\.[0123456789]*" />
- <RegExpr attribute="Binary" context="#stay" String="0[bB][01]+" />
- <HlCOct attribute="Octal" context="#stay" />
- <HlCHex attribute="Hex" context="#stay" />
- <Float attribute="Float" context="#stay" />
- <Int attribute="Decimal" context="#stay" />
- <DetectChar attribute="Normal Text" context="#stay" char="{" beginRegion="Brace1" />
- <DetectChar attribute="Normal Text" context="#stay" char="}" endRegion="Brace1" />
- <AnyChar attribute="Other" context="#stay" String=";(),[]" />
- </context>
- <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
- <IncludeRules context="##Doxygen" />
- <Detect2Chars attribute="Comment" context="#pop!onelinecomment" char="/" char1="/" />
- <Detect2Chars attribute="Comment" context="#pop!twolinecomment" char="/" char1="*" beginRegion="Comment" />
+ <DetectChar attribute="Error Control Operator" context="#stay" char="@" />
+
+ <!-- Type casts -->
+ <RegExpr attribute="Cast" context="#stay" String="\(\s*(&types;)\s*\)" insensitive="true"/>
+ <AnyChar attribute="Symbol" context="#stay" String="()[]"/>
</context>
- <context name="ternary" attribute="PHP Text" lineEndContext="#stay">
- <!-- the paamayim nekudotayim (::) must not start a subcontext that is never terminated. -->
- <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />
- <DetectChar attribute="Other" char=":" context="#pop" />
- <IncludeRules context="phpsource" />
+ <context name="FindComment" attribute="PHP Text" lineEndContext="#pop">
+ <DetectChar attribute="Comment" context="onelinecomment" char="#" />
+ <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
+ <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
</context>
- <context name="case" attribute="PHP Text" lineEndContext="#stay">
- <IncludeRules context="ternary" />
+ <context name="MatchComment" attribute="PHP Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+ <IncludeRules context="##Doxygen" />
+ <Detect2Chars attribute="Comment" context="#pop!onelinecomment" char="/" char1="/" />
+ <Detect2Chars attribute="Comment" context="#pop!twolinecomment" char="/" char1="*" beginRegion="Comment" />
</context>
<context name="onelinecomment" attribute="Comment" lineEndContext="#pop">
@@ -10938,116 +10990,244 @@ 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]*|&quot;[^&quot;]*&quot;|\$[a-zA-Z]*)|'[^']*'|\])*(-&gt;[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*(\[([0-9]*|&quot;[a-zA-Z_]*&quot;)|'[a-zA-Z_]*'|\]|\[.*\])*)*\}" />
+
+ <context name="doublestringvariablecommon" attribute="String" lineEndContext="#stay">
+ <keyword attribute="Special Variable" context="dqaftervarname" String="special-variables"/>
+ <RegExpr attribute="Variable" context="dqaftervarname" String="\$&varid;" />
+ <Detect2Chars attribute="Variable" context="dqcomplexvariable" char="{" char1="$" lookAhead="1"/>
+ <Detect2Chars attribute="Variable" context="dqvarnamebrace" char="$" char1="{" lookAhead="1"/>
+ </context>
+
+ <!--
+ $var->xxx
+ $var[-1]
+ $var[1]
+ $var[ident]
+
+ $var[$ident]
+ ^_ error
+ -->
+ <context name="dqaftervarname" attribute="String" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+ <DetectChar attribute="Symbol" context="#pop!dqarray" char="["/>
+ <Detect2Chars context="#pop!dqobject" char="-" char1=">" lookAhead="1"/>
+ </context>
+ <context name="dqarray" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+ <DetectIdentifier attribute="String" context="#pop!dqarrayclose"/>
+ <Int attribute="Decimal" context="#pop!dqarrayclose"/>
+ <DetectChar attribute="Operator" context="#stay" char="-"/>
+ <keyword attribute="Special Variable" context="#pop!dqarrayclose" String="special-variables"/>
+ <RegExpr attribute="Variable" context="#pop!dqarrayclose" String="\$&varid;"/>
+ <IncludeRules context="finddqarraycharerror"/>
+ </context>
+ <context name="dqarrayclose" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+ <DetectChar attribute="Symbol" context="#pop" char="]"/>
+ <IncludeRules context="finddqarraycharerror"/>
+ </context>
+ <context name="dqobject" attribute="String" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+ <RegExpr attribute="Symbol" context="#pop!dqobjectmem" String="->(?=&varid;)"/>
+ </context>
+ <context name="dqobjectmem" attribute="Variable" lineEndContext="#pop">
+ <DetectIdentifier attribute="PHP Text" context="#pop"/>
+ </context>
+ <context name="finddqarraycharerror" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+ <RegExpr attribute="Error" context="#pop" String="[^&quot;`]"/>
+ </context>
+
+ <context name="dqcomplexvariable" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!finddqarraycharerror">
+ <DetectChar attribute="Symbol" context="#stay" char="{"/>
+ <DetectChar attribute="Variable" context="#pop!dqcomplexvariable2" char="$"/>
+ </context>
+ <context name="dqcomplexvariable2" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!finddqarraycharerror">
+ <DetectIdentifier attribute="Variable" context="#pop!dqaftercomplexvariable"/>
+ <DetectChar attribute="Variable" context="#stay" char="$"/>
+ <IncludeRules context="finddqarraycharerror"/>
+ </context>
+ <context name="dqaftercomplexvariable" attribute="PHP Text" lineEndContext="#stay">
+ <DetectChar attribute="Symbol" context="#pop" char="}"/>
+ <DetectChar attribute="Symbol" context="dqaftercomplexvariable" char="{"/>
+ <IncludeRules context="phpsource"/>
</context>
+
+ <context name="dqvarnamebrace" attribute="Variable" lineEndContext="#stay">
+ <DetectChar attribute="Symbol" context="#pop!dqcomplexvariable2" char="{"/>
+ <DetectChar attribute="Variable" context="#stay" char="$"/>
+ </context>
+
<context name="backquotestring" attribute="String" lineEndContext="#stay">
- <IncludeRules context="doublebackquotestringcommon" />
- <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="`" />
+ <DetectChar context="backquotestringescaped" char="\" lookAhead="1"/>
+ <IncludeRules context="doublestringvariablecommon"/>
<DetectChar attribute="String" context="#pop" char="`" />
</context>
+ <context name="backquotestringescaped" attribute="String" lineEndContext="#stay">
+ <!-- Common rules for double quoted strings and backticks (execution operator) URL:
+ https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double -->
+ <RegExpr attribute="Backslash Code" context="#pop" String="\\([\\nrtvef$`]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u\{[0-9A-Fa-f]+\})"/>
+ <DetectChar attribute="String" context="#pop" char="\"/>
+ </context>
+
<context name="doublequotestring" attribute="String" lineEndContext="#stay">
- <IncludeRules context="doublebackquotestringcommon" />
- <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="&quot;" />
+ <DetectChar context="doublequotestringescaped" char="\" lookAhead="1"/>
+ <IncludeRules context="doublestringvariablecommon"/>
<DetectChar attribute="String" context="#pop" char="&quot;" />
</context>
+ <context name="doublequotestringescaped" attribute="String" lineEndContext="#stay">
+ <!-- Common rules for double quoted strings and backticks (execution operator) URL:
+ https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double -->
+ <RegExpr attribute="Backslash Code" context="#pop" String="\\([\\nrtvef$&quot;]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u\{[0-9A-Fa-f]+\})"/>
+ <DetectChar attribute="String" context="#pop" char="\"/>
+ </context>
+
<context name="singlequotestring" attribute="String" lineEndContext="#stay">
<Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="'" />
<Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="\" />
<DetectChar attribute="String" context="#pop" char="'" />
</context>
+
+ <context name="heredocstart" attribute="Normal Text" lineEndContext="#pop">
+ <RegExpr attribute="Heredoc" context="htmlheredoc" String="&lt;&lt;&lt;(?|&quot;((?:EO)?HTML)&quot;|((?:EO)?HTML)\b)" beginRegion="Heredoc" />
+ <RegExpr attribute="Heredoc" context="cssheredoc" String="&lt;&lt;&lt;(?|&quot;((?:EO)?CSS)&quot;|((?:EO)?CSS)\b)" beginRegion="Heredoc" />
+ <RegExpr attribute="Heredoc" context="javascriptheredoc" String="&lt;&lt;&lt;(?|&quot;((?:EO)?JAVASCRIPT)&quot;|((?:EO)?JAVASCRIPT)\b)" beginRegion="Heredoc" />
+ <RegExpr attribute="Heredoc" context="mysqlheredoc" String="&lt;&lt;&lt;(?|&quot;((?:EO)?MYSQL)&quot;|((?:EO)?MYSQL)\b)" beginRegion="Heredoc" />
+ <RegExpr attribute="Heredoc" context="heredoc" String="&lt;&lt;&lt;(?|&quot;([A-Za-z_][A-Za-z0-9_]*)&quot;|([A-Za-z_][A-Za-z0-9_]*))" beginRegion="Heredoc" />
+ <RegExpr attribute="Nowdoc" context="htmlnowdoc" String="&lt;&lt;&lt;'((?:EO)?HTML)'" beginRegion="Nowdoc" />
+ <RegExpr attribute="Nowdoc" context="cssnowdoc" String="&lt;&lt;&lt;'((?:EO)?CSS)'" beginRegion="Nowdoc" />
+ <RegExpr attribute="Nowdoc" context="javascriptnowdoc" String="&lt;&lt;&lt;'((?:EO)?JAVASCRIPT)'" beginRegion="Nowdoc" />
+ <RegExpr attribute="Nowdoc" context="mysqlnowdoc" String="&lt;&lt;&lt;'((?:EO)?MYSQL)'" beginRegion="Nowdoc" />
+ <RegExpr attribute="Nowdoc" context="nowdoc" String="&lt;&lt;&lt;'([A-Za-z_][A-Za-z0-9_]*)'" beginRegion="Nowdoc" />
+ <StringDetect attribute="Error" context="#pop" String="&lt;&lt;&lt;" />
+ </context>
+
<context name="htmlheredoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
- <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Heredoc" column="0" />
- <IncludeRules context="commonheredoc" />
+ <IncludeRules context="heredoc" />
<IncludeRules context="##HTML" />
</context>
<context name="cssheredoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
- <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Heredoc" column="0" />
- <IncludeRules context="commonheredoc" />
+ <IncludeRules context="heredoc" />
<IncludeRules context="##CSS" />
</context>
<context name="mysqlheredoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
- <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Heredoc" column="0" />
- <IncludeRules context="commonheredoc" />
+ <IncludeRules context="heredoc" />
<IncludeRules context="##SQL (MySQL)" />
</context>
<context name="javascriptheredoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
- <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Heredoc" column="0" />
- <IncludeRules context="commonheredoc" />
+ <IncludeRules context="heredoc" />
<IncludeRules context="Normal##JavaScript" />
</context>
<context name="heredoc" attribute="String" lineEndContext="#stay" dynamic="true">
- <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Heredoc" column="0" />
- <IncludeRules context="commonheredoc" />
- </context>
- <context name="commonheredoc" attribute="String" lineEndContext="#stay">
- <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*" />
- <RegExpr attribute="Variable" context="#stay" String="\$\{[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*\}" />
- <RegExpr attribute="Variable" context="#stay" String="\{\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[([0-9]*|&quot;[a-zA-Z_]*&quot;)|'[a-zA-Z_]*'|\])*(-&gt;[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*(\[([0-9]*|&quot;[a-zA-Z_]*&quot;)|'[a-zA-Z_]*'|\])*)*\}" />
+ <IncludeRules context="doublestringvariablecommon" />
+ <RegExpr attribute="Heredoc" context="#pop" String="^%1(?=;?$)" dynamic="true" endRegion="Heredoc" column="0" />
</context>
+
<context name="htmlnowdoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
- <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Nowdoc" column="0" />
- <IncludeRules context="commonnowdoc" />
+ <IncludeRules context="nowdoc" />
<IncludeRules context="##HTML" />
</context>
<context name="cssnowdoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
- <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Nowdoc" column="0" />
- <IncludeRules context="commonnowdoc" />
+ <IncludeRules context="nowdoc" />
<IncludeRules context="##CSS" />
</context>
<context name="mysqlnowdoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
- <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Nowdoc" column="0" />
- <IncludeRules context="commonnowdoc" />
+ <IncludeRules context="nowdoc" />
<IncludeRules context="##SQL (MySQL)" />
</context>
<context name="javascriptnowdoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
- <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Nowdoc" column="0" />
- <IncludeRules context="commonnowdoc" />
+ <IncludeRules context="nowdoc" />
<IncludeRules context="Normal##JavaScript" />
</context>
<context name="nowdoc" attribute="String" lineEndContext="#stay" dynamic="true">
- <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" endRegion="Nowdoc" column="0" />
- <IncludeRules context="commonnowdoc" />
+ <RegExpr attribute="Nowdoc" context="#pop" String="^%1(?=;?$)" dynamic="true" endRegion="Nowdoc" column="0" />
</context>
- <context name="commonnowdoc" attribute="String" lineEndContext="#stay">
+
+ <context name="number" attribute="PHP Text" lineEndContext="#stay">
+ <IncludeRules context="findfloat"/>
+ <RegExpr attribute="Hex" context="#pop" String="\b0[xX][0-9a-fA-F]++(_[0-9a-fA-F]++)*+\b"/>
+ <RegExpr attribute="Binary" context="#pop" String="\b0[bB][01]++(_[01]++)*+\b"/>
+ <RegExpr attribute="Octal" context="#pop" String="\b0_*+[0-7]++(_[0-7]++)*+\b"/>
+ <RegExpr attribute="Decimal" context="#pop" String="\b(0|[1-9][0-9]*+(_[0-9]++)*+)\b"/>
+ <AnyChar attribute="Error" context="#pop" String="0123456789"/>
+ </context>
+ <context name="findfloat" attribute="PHP Text" lineEndContext="#stay">
+ <RegExpr attribute="Float" context="#pop" String="&float;"/>
</context>
+
+ <context name="dot" attribute="PHP Text" lineEndContext="#stay">
+ <IncludeRules context="findfloat"/>
+ <DetectChar attribute="Operator" context="#pop" char="."/>
+ </context>
+
+ <context name="control" attribute="Control Structures" lineEndContext="#stay">
+ <StringDetect attribute="Control Structures" context="#pop!yield" String="yield"/>
+ <!-- Alternate PHP Block Syntax
+ - http://www.php.net/manual/en/control-structures.alternative-syntax.php
+ -->
+ <Detect2Chars attribute="Control Structures" context="#pop!MaybeAlternateBlock" char="i" char1="f"/>
+ <StringDetect attribute="Control Structures" context="#pop!MaybeAlternateBlock" String="switch"/>
+ <StringDetect attribute="Control Structures" context="#pop!MaybeAlternateBlock" String="foreach"/>
+ <StringDetect attribute="Control Structures" context="#pop!MaybeAlternateBlock" String="for"/>
+ <StringDetect attribute="Control Structures" context="#pop!MaybeAlternateBlock" String="while"/>
+ <!-- end statements as a block end -->
+ <StringDetect attribute="Control Structures" context="#pop!AlternateBlockEnd" String="end" lookAhead="1"/>
+ <!--/ Alternate PHP Block Syntax -->
+ <DetectIdentifier attribute="Control Structures" context="#pop"/>
+ </context>
+ <context name="yield" attribute="PHP Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+ <DetectSpaces attribute="PHP Text" context="#stay"/>
+ <WordDetect attribute="Control Structures" context="#pop" String="from"/>
+ </context>
+ <context name="AlternateBlockEnd" attribute="Control Structures" lineEndContext="#stay">
+ <DetectIdentifier attribute="Control Structures" context="#pop" endRegion="Alternate Block"/>
+ </context>
+
+ <context name="MaybeAlternateBlock" attribute="PHP Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+ <DetectChar attribute="Symbol" context="#pop!MaybeAlternateBlockOpen" char="("/>
+ <DetectSpaces attribute="PHP Text"/>
+ <IncludeRules context="FindComment"/>
+ </context>
+ <context name="MaybeAlternateBlockOpen" attribute="PHP Text" lineEndContext="#stay">
+ <DetectChar attribute="Symbol" context="ParenOpen" char="("/>
+ <DetectChar attribute="Symbol" context="#pop!MaybeAlternateBlockClose" char=")"/>
+ <IncludeRules context="phpsource"/>
+ </context>
+ <context name="ParenOpen" attribute="PHP Text" lineEndContext="#stay">
+ <DetectChar attribute="Symbol" context="ParenOpen" char="("/>
+ <DetectChar attribute="Symbol" context="#pop" char=")"/>
+ <IncludeRules context="phpsource"/>
+ </context>
+ <context name="MaybeAlternateBlockClose" attribute="PHP Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+ <DetectChar attribute="Other" context="#pop" char=":" beginRegion="Alternate Block"/>
+ <DetectSpaces attribute="PHP Text"/>
+ </context>
+
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="PHP Text" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />
- <itemData name="Classes" defStyleNum="dsKeyword" spellChecking="false" />
+ <itemData name="Classes" defStyleNum="dsBuiltIn" spellChecking="false" />
<itemData name="Function" defStyleNum="dsFunction" spellChecking="false" />
- <itemData name="Special method" defStyleNum="dsFunction" spellChecking="false" />
+ <itemData name="Special method" defStyleNum="dsBuiltIn" spellChecking="false" />
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />
<itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false" />
<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false" />
<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false" />
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />
<itemData name="String" defStyleNum="dsString" />
+ <itemData name="Heredoc" defStyleNum="dsSpecialString" />
+ <itemData name="Nowdoc" defStyleNum="dsVerbatimString" />
<itemData name="Comment" defStyleNum="dsComment" />
- <itemData name="Special Variable" defStyleNum="dsKeyword" color="#5555FF" selColor="#ffffff" bold="1" italic="0" spellChecking="false" />
- <itemData name="Variable" defStyleNum="dsKeyword" color="#5555FF" selColor="#ffffff" bold="0" italic="0" spellChecking="false" />
- <itemData name="Library Constant" defStyleNum="dsKeyword" bold="1" spellChecking="false" />
- <itemData name="Constant" defStyleNum="dsKeyword" bold="0" spellChecking="false" />
- <itemData name="Control Structures" defStyleNum="dsKeyword" color="#A1A100" selColor="#ffffff" bold="0" italic="0" spellChecking="false" />
- <itemData name="Backslash Code" defStyleNum="dsKeyword" color="#0F0F8F" selColor="#ffffff" bold="1" italic="0" spellChecking="false" />
+ <itemData name="Special Variable" defStyleNum="dsVariable" bold="1" spellChecking="false" />
+ <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false" />
+ <itemData name="Library Constant" defStyleNum="dsConstant" bold="1" spellChecking="false" />
+ <itemData name="Constant" defStyleNum="dsConstant" spellChecking="false" />
+ <itemData name="Control Structures" defStyleNum="dsControlFlow" spellChecking="false" />
+ <itemData name="Backslash Code" defStyleNum="dsSpecialChar" spellChecking="false" />
+ <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false" />
+ <itemData name="Symbol" defStyleNum="dsNormal" spellChecking="false" />
+ <itemData name="Scope Resolution" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Other" defStyleNum="dsOthers" spellChecking="false" />
-
<itemData name="Types" defStyleNum="dsDataType" spellChecking="false" />
+ <itemData name="Cast" defStyleNum="dsDataType" spellChecking="false" />
+ <itemData name="Error Control Operator" defStyleNum="dsPreprocessor" spellChecking="false" />
<itemData name="Error" defStyleNum="dsError" spellChecking="false" />
</itemDatas>
</highlighting>
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="&lt;\?(?:=|php)?" insensitive="true" />
- <StringDetect attribute="Keyword" context="#pop" String="?&gt;" />
++ <!-- JGM: Added fallthrough so it will handle snippets that don't begin with <?php -->
++ <context name="start" lineEndContext="#stay" attribute="Normal Text" fallthrough="true" fallthroughContext="phpsource">
+ <StringDetect context="phpsource" attribute="Keyword" String="&lt;?php" insensitive="true" />
+ <Detect2Chars context="phpsource" attribute="Keyword" char="&lt;" char1="?" />
+ <Detect2Chars attribute="Keyword" context="#pop" char="?" char1="&gt;" />
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 "&#x9;">
<!ENTITY bs "\">
]>
<language name="Prolog" section="Sources"
- version="13" kateversion="5.62"
+ version="14" kateversion="5.62"
mimetype="text/x-prolog"
extensions="*.prolog;*.dcg;*.pro"
author="Torsten Eichstädt (torsten.eichstaedt@web.de)"
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 "*?!.&lt;^:=~">
+
+ <!ENTITY podfmt "BCEIKLMNPRTUVXZ">
+ <!ENTITY allnopodfmt "(?:[^&podfmt;]+|[&podfmt;](?![&lt;«]))+">
+ <!ENTITY allnopodfmt1 "(?:[^&podfmt;&lt;>]+|[&podfmt;](&lt;(?:&lt;*(?=&lt;))|(?![&lt;«])))+">
+ <!ENTITY allnopodfmt2 "(?:[^&podfmt;«»]+|[&podfmt;](?![&lt;«]))+">
+ <!ENTITY allnopodfmt3 "(?:[^&podfmt;&lt;>]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+">
+
+ <!ENTITY quotingform_q "(?:q?(?::?[xsahfcb]|:?ww?|:(?:v|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)|)(?::[xsahfcbv]|ww?|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)*)">
+ <!ENTITY quotingform_q_assert "(?:\s+(?=\()|\s*(?=[^()>」\]}a-zA-Z0-9]|$))">
+ <!ENTITY quotingconstruct "q&quotingform_q;&quotingform_q_assert;">
+
+ <!ENTITY int10 "(?:[0-9]+(?:_[0-9]+)*)">
+ <!ENTITY intN "(?:[0-9a-zA-Z]+(?:_[0-9a-zA-Z]+)*)">
+
+ <!-- <!ENTITY operators "(?:\b(?:X[*~]|Z=|xx=)|\((?:[&lt;>][+=]|[-&amp;+.&lt;>|^]|cont|elem)\)|\+[&amp;+&lt;=>^|]?|~[&amp;&lt;>^|~]?|\.(?::&lt;[^>]+>|\.\.?\^?|[=?^*+.])?|\^(?:fff?\b|\.\.)?\^?|(?:[?…]|f?ff)\^|\[[*+]\]|=(?:==?|=>>?|>|~=)?|&lt;(?:&lt;==|=[=>]?)?|\*\*=?|\?[?|]?|!(?:[=]|eqv\b)?|&#37;&#37;?|&amp;&amp;?|//?|\|\|?|>=?|-[-=]?|::|[−∈∉∋∌∘∩∪≅≠≤≥≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖×÷∖*…])"> -->
+ <!-- <!ENTITY hyperoperators "(?:[«»]|&lt;&lt;|&gt;&gt;)"> -->
+ <!ENTITY safesymboloperators "−∈∉∋∌∘∩∪≅≠≤≥≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖×÷∖*…?.+-/=!~&amp;|^&#37;">
+ <!ENTITY unsafesymboloperators "&lt;>«»">
+ <!ENTITY symboloperators "&safesymboloperators;&unsafesymboloperators;">
+ <!ENTITY bracehyperoperator "(?:\[[^\s]+\]|\([^\s]+\))">
+ <!ENTITY prefixoperator "R?(?:[XZ]|xx)?">
+ <!ENTITY extrasymboloperators "(?:\^fff?\b\^?|\bf?ff\^|\((?:[&lt;>][+=]|[-&amp;+.&lt;>|^]|cont|elem)\))">
+ <!ENTITY hyperoperators1 "[«»]&prefixoperator;(?:&amp;&ident;|[&safesymboloperators;&lt;>]+|&bracehyperoperator;)[«»]">
+ <!ENTITY hyperoperators2 "(?:&lt;&lt;|&gt;&gt;)&prefixoperator;(?:&amp;&ident;|[&safesymboloperators;«»]+|&bracehyperoperator;)(?:&lt;&lt;|&gt;&gt;)">
+ <!ENTITY hyperoperators "&hyperoperators1;|&hyperoperators2;">
+ <!ENTITY startstringasoperator "&prefixoperator;&lt;[&symboloperators;]*(?=\s|$)">
+ <!ENTITY funcoperator "\[\[\&amp;&ident;\]\]">
+ <!ENTITY reductionoperator "\[&prefixoperator;[&symboloperators;]+\]">
+ <!ENTITY innerbraceoperator "[&symboloperators;'&quot;]+">
+ <!ENTITY operators "&prefixoperator;(?:(?:[&safesymboloperators;>]|&extrasymboloperators;)[&symboloperators;]*|\(&innerbraceoperator;\)|\[&innerbraceoperator;\]|&lt;[&safesymboloperators;'&quot;]+>)">
+
+ <!-- <!ENTITY regadverb "(?!\()\s*(?::\w+\s*)*(?=[^\w\s])"> -->
+ <!ENTITY regadverb "(?!\()\s*(?=[^\w\s])">
+]>
+<language name="Raku" version="8" kateversion="5.53" section="Scripts" extensions="*.raku;*.rakumod;*.rakudoc;*.rakutest;*.pl6;*.PL6;*.p6;*.pm6;*.pod6" priority="6" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
+ <highlighting>
+
+ <list name="pod">
+ <item>begin</item>
+ <item>end</item>
+ <item>finish</item>
+ <item>for</item>
+ <include>podtypename</include>
+ </list>
+
+ <list name="podblocktypename">
+ <item>pod</item>
+ <include>podtypename</include>
+ </list>
+
+ <list name="podvalue">
+ <item>True</item>
+ <item>False</item>
+ </list>
+
+ <list name="podtypename">
+ <item>head1</item>
+ <item>head2</item>
+ <item>head3</item>
+ <item>head4</item>
+ <item>head5</item>
+ <item>head6</item>
+ <item>item</item>
+ <item>item1</item>
+ <item>item2</item>
+ <item>item3</item>
+ <item>item4</item>
+ <item>item5</item>
+ <item>item6</item>
+ <item>para</item>
+ <item>code</item>
+ <item>defn</item>
+ <item>comment</item>
+ <item>table</item>
+ <item>input</item>
+ <item>output</item>
+ </list>
+
+ <list name="quoting">
+ <item>exec</item>
+ <item>words</item>
+ <item>quotewords</item>
+ <item>scalar</item>
+ <item>array</item>
+ <item>hash</item>
+ <item>function</item>
+ <item>closure</item>
+ <item>backslash</item>
+ <item>heredoc</item>
+ <item>val</item>
+ </list>
+
+ <list name="declareRoutine">
+ <item>macro</item>
+ <item>sub</item>
+ <item>submethod</item>
+ <item>method</item>
+ <item>multi</item>
+ <item>proto</item>
+ <item>only</item>
+ <item>category</item>
+ </list>
+
+ <list name="regexKeyword">
+ <item>rule</item>
+ <item>token</item>
+ <item>regex</item>
+ </list>
+
+ <list name="value">
+ <include>podvalue</include>
+ <item>self</item>
+ </list>
+
+ <list name="varStorage">
+ <item>let</item>
+ <item>my</item>
+ <item>our</item>
+ <item>state</item>
+ <item>temp</item>
+ <item>has</item>
+ <item>constant</item>
+ </list>
+
+ <list name="controlFlow">
+ <!-- conditional -->
+ <item>if</item>
+ <item>else</item>
+ <item>elsif</item>
+ <item>unless</item>
+ <!-- repeat -->
+ <item>for</item>
+ <item>loop</item>
+ <item>repeat</item>
+ <item>while</item>
+ <item>until</item>
+ <item>gather</item>
+ <item>given</item>
+ <!-- control flow -->
+ <item>take</item>
+ <item>do</item>
+ <item>when</item>
+ <item>next</item>
+ <item>last</item>
+ <item>redo</item>
+ <item>return</item>
+ <item>contend</item>
+ <item>maybe</item>
+ <item>defer</item>
+ <item>default</item>
+ <item>exit</item>
+ <item>make</item>
+ <item>continue</item>
+ <item>break</item>
+ <item>goto</item>
+ <item>leave</item>
+ <item>async</item>
+ <item>lift</item>
+ <!-- exception -->
+ <item>die</item>
+ <item>fail</item>
+ <item>try</item>
+ <item>warn</item>
+ </list>
+
+ <list name="keyword">
+ <!-- include -->
+ <item>no</item>
+ <item>use</item>
+ <item>require</item>
+ <!-- typeConstraint -->
+ <item>is</item>
+ <item>as</item>
+ <item>but</item>
+ <item>trusts</item>
+ <item>of</item>
+ <item>returns</item>
+ <item>handles</item>
+ <item>where</item>
+ <item>augment</item>
+ <item>supersede</item>
+ <!-- module -->
+ <item>module</item>
+ <item>class</item>
+ <item>role</item>
+ <item>package</item>
+ <item>enum</item>
+ <item>grammar</item>
+ <item>slang</item>
+ <item>subset</item>
+ <!-- closure trait -->
+ <item>BEGIN</item>
+ <item>CHECK</item>
+ <item>INIT</item>
+ <item>START</item>
+ <item>FIRST</item>
+ <item>ENTER</item>
+ <item>LEAVE</item>
+ <item>KEEP</item>
+ <item>UNDO</item>
+ <item>NEXT</item>
+ <item>LAST</item>
+ <item>PRE</item>
+ <item>POST</item>
+ <item>END</item>
+ <item>CATCH</item>
+ <item>CONTROL</item>
+ <item>TEMP</item>
+ </list>
+
+ <list name="property">
+ <item>prec</item>
+ <item>irs</item>
+ <item>ofs</item>
+ <item>ors</item>
+ <item>export</item>
+ <item>deep</item>
+ <item>binary</item>
+ <item>unary</item>
+ <item>reparsed</item>
+ <item>rw</item>
+ <item>parsed</item>
+ <item>cached</item>
+ <item>readonly</item>
+ <item>defequiv</item>
+ <item>will</item>
+ <item>ref</item>
+ <item>copy</item>
+ <item>inline</item>
+ <item>tighter</item>
+ <item>looser</item>
+ <item>equiv</item>
+ <item>assoc</item>
+ <item>required</item>
+ </list>
+
+ <list name="isProperty">
+ <include>property</include>
+ <item>signature</item>
+ <item>context</item>
+ <item>also</item>
+ <item>shape</item>
+ </list>
+
+ <list name="Number">
+ <item>NaN</item>
+ <item>Inf</item>
+ </list>
+
+ <list name="type">
+ <item>Object</item>
+ <item>Any</item>
+ <item>Junction</item>
+ <item>Whatever</item>
+ <item>Capture</item>
+ <item>Match</item>
+ <item>Signature</item>
+ <item>Proxy</item>
+ <item>Matcher</item>
+ <item>Package</item>
+ <item>Module</item>
+ <item>Class</item>
+ <item>Grammar</item>
+ <item>Scalar</item>
+ <item>Array</item>
+ <item>Hash</item>
+ <item>KeyHash</item>
+ <item>KeySet</item>
+ <item>KeyBag</item>
+ <item>Pair</item>
+ <item>List</item>
+ <item>Seq</item>
+ <item>Range</item>
+ <item>Set</item>
+ <item>Bag</item>
+ <item>Mapping</item>
+ <item>Void</item>
+ <item>Undef</item>
+ <item>Failure</item>
+ <item>Exception</item>
+ <item>Code</item>
+ <item>Block</item>
+ <item>Routine</item>
+ <item>Sub</item>
+ <item>Macro</item>
+ <item>Method</item>
+ <item>Submethod</item>
+ <item>Regex</item>
+ <item>Str</item>
+ <item>Blob</item>
+ <item>Char</item>
+ <item>Byte</item>
+ <item>Codepoint</item>
+ <item>Grapheme</item>
+ <item>StrPos</item>
+ <item>StrLen</item>
+ <item>Version</item>
+ <item>Num</item>
+ <item>Complex</item>
+ <item>num</item>
+ <item>complex</item>
+ <item>Bit</item>
+ <item>bit</item>
+ <item>bool</item>
+ <item>True</item>
+ <item>False</item>
+ <item>Increasing</item>
+ <item>Decreasing</item>
+ <item>Ordered</item>
+ <item>Callable</item>
+ <item>AnyChar</item>
+ <item>Positional</item>
+ <item>Associative</item>
+ <item>Ordering</item>
+ <item>KeyExtractor</item>
+ <item>Comparator</item>
+ <item>OrderingPair</item>
+ <item>IO</item>
+ <item>KitchenSink</item>
+ <item>Role</item>
+ <item>Int</item>
+ <item>int</item>
+ <item>int1</item>
+ <item>int2</item>
+ <item>int4</item>
+ <item>int8</item>
+ <item>int16</item>
+ <item>int32</item>
+ <item>int64</item>
+ <item>Rat</item>
+ <item>rat</item>
+ <item>rat1</item>
+ <item>rat2</item>
+ <item>rat4</item>
+ <item>rat8</item>
+ <item>rat16</item>
+ <item>rat32</item>
+ <item>rat64</item>
+ <item>Buf</item>
+ <item>buf</item>
+ <item>buf1</item>
+ <item>buf2</item>
+ <item>buf4</item>
+ <item>buf8</item>
+ <item>buf16</item>
+ <item>buf32</item>
+ <item>buf64</item>
+ <item>UInt</item>
+ <item>uint</item>
+ <item>uint1</item>
+ <item>uint2</item>
+ <item>uint4</item>
+ <item>uint8</item>
+ <item>uint16</item>
+ <item>uint32</item>
+ <item>uint64</item>
+ <item>Abstraction</item>
+ <item>utf8</item>
+ <item>utf16</item>
+ <item>utf32</item>
+ </list>
+
+ <list name="operator">
+ <item>X</item>
+ <item>gcd</item>
+ <item>ge</item>
+ <item>gt</item>
+ <item>lcm</item>
+ <item>le</item>
+ <item>leg</item>
+ <item>let</item>
+ <item>lt</item>
+ <item>map</item>
+ <item>max</item>
+ <item>min</item>
+ <item>minmax</item>
+ <item>mod</item>
+ <item>ne</item>
+ <item>not</item>
+ <item>notandthen</item>
+ <item>o</item>
+ <item>or</item>
+ <item>orelse</item>
+ <item>print</item>
+ <item>push</item>
+ <item>say</item>
+ <item>so</item>
+ <item>substr</item>
+ <item>temp</item>
+ <item>unicmp</item>
+ <item>x</item>
+ <item>xor</item>
+ <item>xx</item>
+ <item>Xeqv</item>
+ <item>Z</item>
+ <item>and</item>
+ <item>andthen</item>
+ <item>any</item>
+ <item>but</item>
+ <item>cmp</item>
+ <item>coll</item>
+ <item>die</item>
+ <item>div</item>
+ <item>does</item>
+ <item>eq</item>
+ <item>eqv</item>
+ <item>ff</item>
+ <item>fff</item>
+ </list>
+
+ <list name="unicodeGeneralCategories">
+ <item>L</item> <item>Letter</item>
+ <item>LC</item> <item>Cased_Letter</item>
+ <item>Lu</item> <item>Uppercase_Letter</item>
+ <item>Ll</item> <item>Lowercase_Letter</item>
+ <item>Lt</item> <item>Titlecase_Letter</item>
+ <item>Lm</item> <item>Modifier_Letter</item>
+ <item>Lo</item> <item>Other_Letter</item>
+ <item>M</item> <item>Mark</item>
+ <item>Mn</item> <item>Nonspacing_Mark</item>
+ <item>Mc</item> <item>Spacing_Mark</item>
+ <item>Me</item> <item>Enclosing_Mark</item>
+ <item>N</item> <item>Number</item>
+ <item>Nd</item> <item>Decimal_Number</item> <item>digit</item>
+ <item>Nl</item> <item>Letter_Number</item>
+ <item>No</item> <item>Other_Number</item>
+ <item>P</item> <item>Punctuation</item> <item>punct</item>
+ <item>Pc</item> <item>Connector_Punctuation</item>
+ <item>Pd</item> <item>Dash_Punctuation</item>
+ <item>Ps</item> <item>Open_Punctuation</item>
+ <item>Pe</item> <item>Close_Punctuation</item>
+ <item>Pi</item> <item>Initial_Punctuation</item>
+ <item>Pf</item> <item>Final_Punctuation</item>
+ <item>Po</item> <item>Other_Punctuation</item>
+ <item>S</item> <item>Symbol</item>
+ <item>Sm</item> <item>Math_Symbol</item>
+ <item>Sc</item> <item>Currency_Symbol</item>
+ <item>Sk</item> <item>Modifier_Symbol</item>
+ <item>So</item> <item>Other_Symbol</item>
+ <item>Z</item> <item>Separator</item>
+ <item>Zs</item> <item>Space_Separator</item>
+ <item>Zl</item> <item>Line_Separator</item>
+ <item>Zp</item> <item>Paragraph_Separator</item>
+ <item>C</item> <item>Other</item>
+ <item>Cc</item> <item>Control</item> <item>cntrl</item>
+ <item>Cf</item> <item>Format</item>
+ <item>Cs</item> <item>Surrogate</item>
+ <item>Co</item> <item>Private_Use</item>
+ <item>Cn</item> <item>Unassigned</item>
+ </list>
+
+ <list name="assertion">
+ <item>before</item>
+ <item>after</item>
+ </list>
+
+ <contexts>
+
+ <context name="Shebang" attribute="Comment" lineEndContext="#pop!base" fallthrough="1" fallthroughContext="#pop!base">
+ <RegExpr attribute="Keyword" context="#pop!base" String="^#!\/.*" column="0"/>
+ </context>
+
+ <context name="base" attribute="Normal Text" lineEndContext="#stay">
+ <DetectSpaces/>
+ <DetectChar attribute="Comment" context="StartComment" char="#"/>
+ <!-- <DetectChar attribute="Unspace" context="#stay" char="\"/> -->
+ <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>
+ <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>
+ <DetectChar char="{" context="Interpolation" attribute="Operator" beginRegion="block"/>
+ <RegExpr String="(?:s|tr|TR)&regadverb;" context="RegexSubstitution" attribute="Operator"/>
+ <RegExpr String="(?:rx|m)&regadverb;" context="Regex" attribute="Operator"/>
+ <IncludeRules context="find_Variable"/>
+ <DetectChar attribute="Pod" context="StartPod" char="=" firstNonSpace="1"/>
+ <RegExpr String="»\.|&lt;&lt;\.|&hyperoperators;|&startstringasoperator;|&funcoperator;|&reductionoperator;|&operators;" context="MaybeRegex" attribute="Operator"/>
+ <DetectChar char="(" context="SubExpression(" attribute="Operator" beginRegion="block"/>
+ <DetectChar char="[" context="SubExpression[" attribute="Operator" beginRegion="block"/>
+ <AnyChar String=",;" context="#stay" attribute="Separator Symbol"/>
+ <DetectChar attribute="String Delimiter" context="qq_String«" char="«"/>
+ <Detect2Chars attribute="String Delimiter" context="qq_String&lt;&lt;" char="&lt;" char1="&lt;"/>
+ <DetectChar attribute="String Delimiter" context="q_String&lt;" char="&lt;"/>
+ <DetectChar attribute="String Delimiter" context="Q_String「" char="「"/>
+ <RegExpr String="Q(\s++(?=['(_]|$)|\s*+(?=[^()>」\]}'&rangealphabetic;&rangenumeric;]|$))" context="Q_String" attribute="String"/>
+ <DetectChar char=":" context="MaybeAttribute" attribute="Operator"/>
+ <AnyChar String="0123456789." context="Number" lookAhead="1"/>
+ <RegExpr attribute="Operator" context="q_QuotingForm" String="q(?=&quotingform_q;&quotingform_q_assert;)"/>
+ <keyword String="operator" context="#stay" attribute="Operator"/>
+ <keyword String="varStorage" context="#stay" attribute="Variable Storage"/>
+ <keyword String="type" context="#stay" attribute="Data Type"/>
+ <keyword String="controlFlow" context="#stay" attribute="Control Flow"/>
+ <WordDetect String="is" context="Is" attribute="Keyword"/>
+ <keyword String="keyword" context="#stay" attribute="Keyword"/>
+ <keyword String="declareRoutine" context="#stay" attribute="Declare Routine"/>
+ <keyword String="property" context="#stay" attribute="Property"/>
+ <keyword String="regexKeyword" context="RegexKeyword" attribute="Keyword"/>
+ <keyword String="value" context="#stay" attribute="Keyword Value"/>
+ <keyword String="Number" context="#stay" attribute="Float"/>
+ <RegExpr String="[A-Z](?:[a-z]+[a-zA-Z0-9]*)+" context="#stay" attribute="Data Type"/>
+ <RegExpr String="&ident;" context="#stay" attribute="Normal Text"/>
+ </context>
+
+ <context name="Is" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+ <DetectSpaces/>
+ <keyword String="isProperty" context="#pop" attribute="Property"/>
+ </context>
+
+ <context name="Interpolation" attribute="Normal Text" lineEndContext="#stay">
+ <DetectChar char="}" context="#pop" attribute="Operator" endRegion="block"/>
+ <IncludeRules context="base"/>
+ </context>
+
+ <context name="SubExpression(" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="base"/>
+ <DetectChar char=")" context="#pop" attribute="Operator" endRegion="block"/>
+ </context>
+
+ <context name="SubExpression[" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="base"/>
+ <DetectChar char="]" context="#pop" attribute="Operator" endRegion="block"/>
+ </context>
+
+ <context name="find_Variable" attribute="Normal Text" lineEndContext="#stay">
+ <RegExpr String="[%&amp;](?=[?*]&alphabetic;)|(?:\$[&twigils;]|::\?)(?=&alphabetic;)" context="Twigil" attribute="Variable"/>
+ <RegExpr String="[$@]\(\)|[%@]?\$/|\$!|\$[0-9]+|[\\@%&amp;$]&ident;" context="#stay" attribute="Variable"/>
+ </context>
+
+ <context name="MaybeRegex" attribute="Normal Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+ <DetectSpaces/>
+ <DetectChar char="/" context="#pop!Regex" attribute="Operator" lookAhead="1"/>
+ </context>
+
+ <context name="Twigil" attribute="Variable" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+ <AnyChar String="&twigils;" context="#stay" attribute="Twigil"/>
+ <RegExpr String="&ident;" context="#pop" attribute="Variable"/>
+ </context>
+
+ <context name="RegexKeyword" attribute="Normal Text" lineEndContext="#pop">
+ <DetectChar char="{" context="#pop!RegexKeyword-Pattern{" attribute="Operator" beginRegion="regex"/>
+ </context>
+ <context name="RegexKeyword-Pattern{" attribute="Pattern" lineEndContext="#stay">
+ <DetectChar char="}" context="#pop" attribute="Operator" endRegion="regex"/>
+ <IncludeRules context="find_Pattern"/>
+ </context>
+
+ <!-- Regex -->
+
+ <context name="Regex" attribute="Pattern" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+ <IncludeRules context="find_RegexClosure"/>
+ <RegExpr String="([^\w\s])" context="Pattern" attribute="Operator" beginRegion="regex"/>
+ </context>
+
+ <context name="find_RegexClosure" attribute="Pattern" lineEndContext="#stay">
+ <DetectChar char=":" context="RegexModifier" attribute="Pattern Modifier"/>
+ <DetectChar char="{" context="Pattern{" attribute="Operator" beginRegion="regex"/>
+ <DetectChar char="(" context="Pattern(" attribute="Operator" beginRegion="regex"/>
+ <DetectChar char="[" context="Pattern[" attribute="Operator" beginRegion="regex"/>
+ <DetectChar char="&lt;" context="Pattern&lt;" attribute="Operator" beginRegion="regex"/>
+ <DetectSpaces/>
+ </context>
+
+ <context name="RegexModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+ <Detect2Chars char="P" char1="5" context="RegexPerl5" attribute="Pattern Modifier"/>
+ <StringDetect String="Perl5" context="RegexPerl5" attribute="Pattern Modifier"/>
+ <DetectIdentifier context="#pop" attribute="Pattern Modifier"/>
+ </context>
+
+ <context name="RegexPerl5" attribute="Pattern Modifier" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop!IsRegexPerl5">
+ <DetectSpaces/>
+ </context>
+
+ <context name="IsRegexPerl5" attribute="Pattern" lineEndContext="#stay">
+ <IncludeRules context="find_pattern##Perl"/>
+ </context>
+
+ <context name="Pattern{" attribute="Pattern" lineEndContext="#stay">
+ <DetectChar char="}" context="#pop#pop" attribute="Operator" endRegion="regex"/>
+ <IncludeRules context="find_Pattern"/>
+ </context>
+
+ <context name="Pattern[" attribute="Pattern" lineEndContext="#stay">
+ <DetectChar char="]" context="#pop#pop" attribute="Operator" endRegion="regex"/>
+ <IncludeRules context="find_Pattern"/>
+ </context>
+
+ <context name="Pattern(" attribute="Pattern" lineEndContext="#stay">
+ <DetectChar char=")" context="#pop#pop" attribute="Operator" endRegion="regex"/>
+ <IncludeRules context="find_Pattern"/>
+ </context>
+
+ <context name="Pattern&lt;" attribute="Pattern" lineEndContext="#stay">
+ <DetectChar char=">" context="#pop#pop" attribute="Operator" endRegion="regex"/>
+ <IncludeRules context="find_Pattern"/>
+ </context>
+
+ <context name="Pattern" attribute="Pattern" lineEndContext="#stay">
+ <DetectChar char="1" dynamic="1" context="#pop#pop" attribute="Operator" endRegion="regex"/>
+ <IncludeRules context="find_Pattern"/>
+ </context>
+
+ <context name="find_Pattern" attribute="Pattern" lineEndContext="#stay">
+ <DetectChar attribute="Operator" context="SubPattern" char="("/>
+ <DetectChar char="\" context="PatternMetaChar" attribute="Pattern Character Class"/>
+ <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>
+ <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>
+ <DetectChar attribute="Pattern Modifier" context="PatternModifier" char=":" lookAhead="1"/>
+ <DetectChar char="{" context="Interpolation" attribute="Operator" beginRegion="block"/>
+ <Detect2Chars attribute="Operator" context="RecursivePattern" char="&lt;" char1="("/>
+ <Detect2Chars attribute="Operator" context="PatternAssertion" char="&lt;" char1="?"/>
+ <Detect2Chars attribute="Operator" context="PatternAssertion" char="&lt;" char1="!"/>
+ <Detect2Chars attribute="Operator" context="#stay" char="&lt;" char1="&lt;"/>
+ <Detect2Chars attribute="Operator" context="#stay" char=">" char1=">"/>
+ <DetectChar attribute="Pattern Meta Character" context="RegexClass" char="&lt;"/>
+ <AnyChar attribute="Pattern Quantifier" context="#stay" String="?*+%"/>
+ <Detect2Chars attribute="Pattern Quantifier" context="#stay" char="." char1="."/>
+ <AnyChar attribute="Operator" context="#stay" String="[]«»~"/>
+ <DetectChar attribute="Pattern Special Character" context="#stay" char="."/>
+ <Detect2Chars attribute="Variable" context="PatternVariable" char="$" char1="&lt;"/>
+ <AnyChar attribute="Pattern Control Flow" context="#stay" String="&amp;|^$"/>
+ <DetectChar attribute="Comment" context="StartComment" char="#"/>
+ <IncludeRules context="find_Variable"/>
+ <RegExpr String="[&rangealphabetic;&rangenumeric;\s]+" context="#stay" attribute="Pattern"/>
+ </context>
+
+ <context name="SubPattern" attribute="Pattern" lineEndContext="#stay">
+ <DetectChar char=")" context="#pop" attribute="Operator"/>
+ <IncludeRules context="find_Pattern"/>
+ </context>
+
+ <context name="RecursivePattern" attribute="Variable" lineEndContext="#stay">
+ <Detect2Chars attribute="Operator" context="#pop" char=")" char1=">"/>
+ <IncludeRules context="find_Pattern"/>
+ </context>
+
+ <context name="PatternModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+ <RegExpr context="#pop" attribute="Pattern Modifier" String=":\w+"/>
+ <DetectChar attribute="Pattern Control Flow" context="#pop" char=":"/>
+ </context>
+
+ <context name="PatternVariable" attribute="Variable" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+ <RegExpr String="&ident;>?" context="#pop" attribute="Variable"/>
+ </context>
+
+ <context name="PatternAssertion" attribute="Normal Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!RegexClass">
+ <DetectChar attribute="Operator" context="#pop" char=">"/>
+ <DetectChar attribute="Operator" context="PatternAssertionCond" char="{"/>
+ <keyword attribute="Keyword" String="assertion" context="SubPatternAssertion"/>
+ </context>
+ <context name="SubPatternAssertion" attribute="Pattern" lineEndContext="#stay">
+ <DetectChar char=">" context="#pop#pop" attribute="Operator"/>
+ <IncludeRules context="find_Pattern"/>
+ </context>
+
+ <context name="PatternAssertionCond" attribute="Normal Text" lineEndContext="#stay">
+ <Detect2Chars attribute="Operator" context="#pop#pop" char="}" char1=">"/>
+ <IncludeRules context="base"/>
+ </context>
+
+ <context name="PatternMetaChar" attribute="Pattern Meta Character" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!CharError">
+ <AnyChar attribute="Pattern Character Class" context="#pop" String="nthvsdwNTHVSDW"/>
+ <RegExpr String="[^&rangealphabetic;&rangenumeric;]" context="#pop" attribute="Pattern Meta Character"/>
+ </context>
+
+
+ <!-- Pattern Character Classes -->
+
+ <context name="RegexClass" attribute="Pattern Meta Character" lineEndContext="#stay">
+ <DetectSpaces/>
+ <AnyChar attribute="Operator" context="#stay" String="-!+()"/>
+ <DetectChar attribute="Pattern Meta Character" context="RegexClassRange" char="["/>
+ <DetectChar attribute="Pattern Unicode Property" context="RegexClassName" char=":"/>
+ <DetectChar attribute="Pattern Meta Character" context="#pop" char=">"/>
+ <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>
+ <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>
+ <DetectChar attribute="String Delimiter" context="Q_String「" char="「"/>
+ <DetectChar attribute="String Delimiter" context="q_String&lt;" char="&lt;"/>
+ <DetectChar attribute="String Delimiter" context="qq_String«" char="«"/>
+ <RegExpr attribute="String" context="#stay" String="[^-!+()?:&lt;>'&quot;「«]+"/>
+ </context>
+
+ <context name="RegexClassName" attribute="Pattern Unicode Property" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+ <RegExpr String="\w+" context="#pop" attribute="Pattern Unicode Property"/>
+ <!-- auto-completion only -->
+ <keyword attribute="Pattern Unicode Property" context="#pop" String="unicodeGeneralCategories"/>
+ </context>
+
+ <context name="RegexClassRange" attribute="Pattern Character" lineEndContext="#stay">
+ <DetectSpaces/>
+ <DetectChar char="\" context="RegexClassRangeMetaChar" attribute="Pattern Character Class"/>
+ <Detect2Chars char="." char1="." context="#stay" attribute="Pattern Quantifier"/>
+ <DetectChar attribute="Pattern Meta Character" context="#pop" char="]"/>
+ </context>
+
+ <context name="RegexClassRangeMetaChar" attribute="Pattern Meta Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+ <DetectSpaces/>
+ <IncludeRules context="find_SpecialChar"/>
+ <IncludeRules context="PatternMetaChar"/>
+ </context>
+
+
+ <!-- Regex Substitution -->
+
+ <context name="RegexSubstitution" attribute="Operator" lineEndContext="#stay">
+ <IncludeRules context="find_RegexClosure"/>
+ <RegExpr String="([^\w\s])" context="RegexSubstitutionPattern" attribute="Operator" beginRegion="regex"/>
+ </context>
+
+ <context name="RegexSubstitutionPattern" attribute="Pattern" lineEndContext="#stay">
+ <RegExpr String="(%1)" dynamic="1" context="RegexSubstitutionString" attribute="Operator" endRegion="regex"/>
+ <IncludeRules context="find_Pattern"/>
+ </context>
+
+ <context name="RegexSubstitutionString" attribute="String" lineEndContext="#stay">
+ <DetectChar char="1" dynamic="1" context="#pop#pop#pop" attribute="Operator"/>
+ </context>
+
+
+ <!-- Number -->
+
+ <context name="Number" attribute="Decimal" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!CharErrorIfNoSep">
+ <RegExpr String="&int10;(?:\.&int10;(?:[eE][+-]?&int10;)?|[eE][+-]?&int10;)i?|\.&int10;(?:[eE][+-]?&int10;)?i?" context="CheckNumberError" attribute="Float"/>
+ <Detect2Chars char="0" char1="x" context="HexNumber" attribute="Hex"/>
+ <Detect2Chars char="0" char1="o" context="OctalNumber" attribute="Octal"/>
+ <RegExpr String="&int10;i?" context="CheckNumberError" attribute="Decimal"/>
+ <DetectChar char="." context="#pop" attribute="Operator"/>
+ </context>
+
+ <context name="HexNumber" attribute="Hex" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">
+ <RegExpr String="[a-fA-F0-9]+(?:_[a-fA-F0-9]+)*i?" context="#pop!CheckNumberError" attribute="Hex"/>
+ </context>
+
+ <context name="OctalNumber" attribute="Octal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">
+ <RegExpr String="[0-7]+(?:_[0-7]+)*i?" context="#pop!CheckNumberError" attribute="Octal"/>
+ </context>
+
+ <context name="BaseNumber" attribute="Decimal" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop!CharErrorIfNoSep">
+ <DetectChar char="&gt;" context="#pop#pop#pop" attribute="Error"/>
+ <RegExpr String="&intN;\.&intN;|\.&intN;" context="#pop#pop!BaseNumberClose" attribute="Float"/>
+ <RegExpr String="&intN;" context="#pop#pop!BaseNumberClose" attribute="Decimal"/>
+ </context>
+ <context name="BaseNumberClose" attribute="Decimal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">
+ <DetectChar char="&gt;" context="#pop#pop" attribute="Operator"/>
+ <IncludeRules context="CheckNumberError"/>
+ </context>
+
+ <context name="CheckNumberError" attribute="Octal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
+ <RegExpr String="&alnum;+" context="#pop#pop" attribute="Error"/>
+ </context>
+
+
+ <!-- Attribute or Key -->
+
+ <context name="MaybeAttribute" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+ <Int context="MaybeAttribute2" attribute="Decimal"/>
+ <DetectChar char="!" context="#pop" attribute="Operator"/>
+ <RegExpr String="&ident;" context="#pop" attribute="Attribute"/>
+ </context>
+
+ <context name="MaybeAttribute2" attribute="Decimal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
+ <DetectChar char="&lt;" context="BaseNumber" attribute="Operator"/>
+ </context>
+
+
+ <!-- Pod -->
+
+ <context name="StartPod" attribute="Pod Typename" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+ <WordDetect String="begin" context="PodBegin" attribute="Pod Block"/>
+ <WordDetect String="for" context="PodFor" attribute="Pod Typename"/>
+ <keyword String="pod" context="PodTypenameValue" attribute="Pod Typename"/>
+ <RegExpr String="[_A-Z][-_A-Z0-9]*\b" context="PodTypenameValue" attribute="Pod Typename"/>
+ <RegExpr String="&ident;" context="PodTypenameValue" attribute="Pod Unknown"/>
+ </context>
+
+ <context name="PodTypenameValue" attribute="Pod Typename Value" lineEndContext="PodTypenameValueNextLine" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Typename Value" context="#stay" String="&allnopodfmt;"/>
+ </context>
+
+ <context name="PodTypenameValueNextLine" attribute="Pod Typename Value" lineEndContext="#stay" lineEmptyContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop">
+ <DetectSpaces attribute="Normal Text" context="PodTypenameValueOrEmpty"/>
+ <DetectChar attribute="Pod" context="#pop#pop#pop" char="=" lookAhead="true"/>
+ </context>
+
+ <context name="PodTypenameValueOrEmpty" attribute="Pod Typename Value" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
+ <DetectChar attribute="Pod" context="#pop#pop#pop#pop" char="=" lookAhead="true"/>
+ </context>
+
+
+ <!-- Pod formatting -->
+
+ <context name="PodFormat" attribute="Pod Typename Value" lineEndContext="#stay">
+ <Detect2Chars char="B" char1="&lt;" attribute="Pod Bold" context="#pop!PodFormatB"/>
+ <Detect2Chars char="B" char1="«" attribute="Pod Bold" context="#pop!PodFormatB2"/>
+ <Detect2Chars char="I" char1="&lt;" attribute="Pod Italic" context="#pop!PodFormatI"/>
+ <Detect2Chars char="I" char1="«" attribute="Pod Italic" context="#pop!PodFormatI2"/>
+ <Detect2Chars char="L" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
+ <Detect2Chars char="L" char1="«" attribute="Pod Link" context="#pop!PodFormatL2"/>
+ <Detect2Chars char="N" char1="&lt;" attribute="Pod Note" context="#pop!PodFormatN"/>
+ <Detect2Chars char="N" char1="«" attribute="Pod Note" context="#pop!PodFormatN2"/>
+ <Detect2Chars char="P" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
+ <Detect2Chars char="P" char1="«" attribute="Pod Link" context="#pop!PodFormatL2"/>
+ <Detect2Chars char="Z" char1="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ"/>
+ <Detect2Chars char="Z" char1="«" attribute="Pod Comment" context="#pop!PodFormatZ2"/>
+ <Detect2Chars char="U" char1="&lt;" attribute="Pod Underline" context="#pop!PodFormatU"/>
+ <Detect2Chars char="U" char1="«" attribute="Pod Underline" context="#pop!PodFormatU2"/>
+ <Detect2Chars char="C" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+ <Detect2Chars char="C" char1="«" attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+ <Detect2Chars char="E" char1="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE"/>
+ <Detect2Chars char="E" char1="«" attribute="Pod Unicode" context="#pop!PodFormatE2"/>
+ <Detect2Chars char="K" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+ <Detect2Chars char="K" char1="«" attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+ <Detect2Chars char="R" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+ <Detect2Chars char="R" char1="«" attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+ <Detect2Chars char="T" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+ <Detect2Chars char="T" char1="«" attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+ <Detect2Chars char="V" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV"/>
+ <Detect2Chars char="V" char1="«" attribute="Pod Verbatim" context="#pop!PodFormatV2"/>
+ <Detect2Chars char="X" char1="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX"/>
+ <Detect2Chars char="X" char1="«" attribute="Pod Indexed Terms" context="#pop!PodFormatX2"/>
+ <Detect2Chars char="M" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+ <Detect2Chars char="M" char1="«" attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+ </context>
+
+ <context name="PodFormatB" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatB1">
+ <DetectChar char="&lt;" attribute="Pod Bold" context="#pop!PodFormatB3"/>
+ </context>
+ <context name="PodFormatB1" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt1;"/>
+ <DetectChar char="&lt;" attribute="Pod Bold" context="PodFormatB1"/>
+ <DetectChar char=">" attribute="Pod Bold" context="#pop"/>
+ </context>
+ <context name="PodFormatB2" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt2;"/>
+ <DetectChar char="«" attribute="Pod Bold" context="PodFormatB2"/>
+ <DetectChar char="»" attribute="Pod Bold" context="#pop"/>
+ </context>
+ <context name="PodFormatB3" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt3;"/>
+ <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Bold" context="PodFormatB3"/>
+ <Detect2Chars char=">" char1=">" attribute="Pod Bold" context="#pop"/>
+ </context>
+
+ <context name="PodFormatE" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatE1">
+ <DetectChar char="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE3"/>
+ </context>
+ <context name="PodFormatE1" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt1;"/>
+ <DetectChar char="&lt;" attribute="Pod Unicode" context="PodFormatE1"/>
+ <DetectChar char=">" attribute="Pod Unicode" context="#pop"/>
+ </context>
+ <context name="PodFormatE2" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt2;"/>
+ <DetectChar char="«" attribute="Pod Unicode" context="PodFormatE2"/>
+ <DetectChar char="»" attribute="Pod Unicode" context="#pop"/>
+ </context>
+ <context name="PodFormatE3" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt3;"/>
+ <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Unicode" context="PodFormatE3"/>
+ <Detect2Chars char=">" char1=">" attribute="Pod Unicode" context="#pop"/>
+ </context>
+
+ <context name="PodFormatI" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatI1">
+ <DetectChar char="&lt;" attribute="Pod Italic" context="#pop!PodFormatI3"/>
+ </context>
+ <context name="PodFormatI1" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt1;"/>
+ <DetectChar char="&lt;" attribute="Pod Italic" context="PodFormatI1"/>
+ <DetectChar char=">" attribute="Pod Italic" context="#pop"/>
+ </context>
+ <context name="PodFormatI2" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt2;"/>
+ <DetectChar char="«" attribute="Pod Italic" context="PodFormatI2"/>
+ <DetectChar char="»" attribute="Pod Italic" context="#pop"/>
+ </context>
+ <context name="PodFormatI3" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt3;"/>
+ <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Italic" context="PodFormatI3"/>
+ <Detect2Chars char=">" char1=">" attribute="Pod Italic" context="#pop"/>
+ </context>
+
+ <context name="PodFormatL" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatL1">
+ <DetectChar char="&lt;" attribute="Pod Link" context="#pop!PodFormatL3"/>
+ </context>
+ <context name="PodFormatL1" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«]))+"/>
+ <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
+ <DetectChar char=">" attribute="Pod Link" context="#pop"/>
+ </context>
+ <context name="PodFormatL2" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|]+|[&podfmt;](?![&lt;«]))+"/>
+ <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
+ <DetectChar char="»" attribute="Pod Link" context="#pop"/>
+ </context>
+ <context name="PodFormatL3" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
+ <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
+ <Detect2Chars char=">" char1=">" attribute="Pod Link" context="#pop"/>
+ </context>
+
+ <context name="PodFormatN" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatN1">
+ <DetectChar char="&lt;" attribute="Pod Note" context="#pop!PodFormatN3"/>
+ </context>
+ <context name="PodFormatN1" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt1;"/>
+ <DetectChar char="&lt;" attribute="Pod Note" context="PodFormatN1"/>
+ <DetectChar char=">" attribute="Pod Note" context="#pop"/>
+ </context>
+ <context name="PodFormatN2" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt2;"/>
+ <DetectChar char="«" attribute="Pod Note" context="PodFormatN2"/>
+ <DetectChar char="»" attribute="Pod Note" context="#pop"/>
+ </context>
+ <context name="PodFormatN3" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt3;"/>
+ <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Note" context="PodFormatN3"/>
+ <Detect2Chars char=">" char1=">" attribute="Pod Note" context="#pop"/>
+ </context>
+
+ <context name="PodFormatU" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatU1">
+ <DetectChar char="&lt;" attribute="Pod Underline" context="#pop!PodFormatU3"/>
+ </context>
+ <context name="PodFormatU1" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt1;"/>
+ <DetectChar char="&lt;" attribute="Pod Underline" context="PodFormatU1"/>
+ <DetectChar char=">" attribute="Pod Underline" context="#pop"/>
+ </context>
+ <context name="PodFormatU2" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt2;"/>
+ <DetectChar char="«" attribute="Pod Underline" context="PodFormatU2"/>
+ <DetectChar char="»" attribute="Pod Underline" context="#pop"/>
+ </context>
+ <context name="PodFormatU3" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt3;"/>
+ <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Underline" context="PodFormatU3"/>
+ <Detect2Chars char=">" char1=">" attribute="Pod Underline" context="#pop"/>
+ </context>
+
+ <context name="PodFormatV" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatV1">
+ <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV3"/>
+ </context>
+ <context name="PodFormatV1" attribute="Pod Verbatim" lineEndContext="#stay">
+ <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
+ <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatV1"/>
+ <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
+ </context>
+ <context name="PodFormatV2" attribute="Pod Verbatim" lineEndContext="#stay">
+ <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
+ <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatV2"/>
+ <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
+ </context>
+ <context name="PodFormatV3" attribute="Pod Verbatim" lineEndContext="#stay">
+ <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
+ <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatV3"/>
+ <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
+ </context>
+
+ <context name="PodFormatVT" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatVT1">
+ <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT3"/>
+ </context>
+ <context name="PodFormatVT1" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
+ <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatVT1"/>
+ <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
+ </context>
+ <context name="PodFormatVT2" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
+ <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatVT2"/>
+ <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
+ </context>
+ <context name="PodFormatVT3" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
+ <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatVT3"/>
+ <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
+ </context>
+
+ <context name="PodFormatZ" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatZ1">
+ <DetectChar char="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ3"/>
+ </context>
+ <context name="PodFormatZ1" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt1;"/>
+ <DetectChar char="&lt;" attribute="Pod Comment" context="PodFormatZ1"/>
+ <DetectChar char=">" attribute="Pod Comment" context="#pop"/>
+ </context>
+ <context name="PodFormatZ2" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt2;"/>
+ <DetectChar char="«" attribute="Pod Comment" context="PodFormatZ2"/>
+ <DetectChar char="»" attribute="Pod Comment" context="#pop"/>
+ </context>
+ <context name="PodFormatZ3" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt3;"/>
+ <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Comment" context="PodFormatZ3"/>
+ <Detect2Chars char=">" char1=">" attribute="Pod Comment" context="#pop"/>
+ </context>
+
+ <context name="PodFormatX" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatX1">
+ <DetectChar char="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX3"/>
+ </context>
+ <context name="PodFormatX1" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«]))+"/>
+ <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
+ <DetectChar char=">" attribute="Pod Indexed Terms" context="#pop"/>
+ </context>
+ <context name="PodFormatX2" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|;,]+|[&podfmt;](?![&lt;«]))+"/>
+ <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
+ <DetectChar char="«" attribute="Pod Indexed Terms" context="PodFormatX2"/>
+ <DetectChar char="»" attribute="Pod Indexed Terms" context="#pop"/>
+ </context>
+ <context name="PodFormatX3" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
+ <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
+ <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
+ <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Indexed Terms" context="PodFormatX3"/>
+ <Detect2Chars char=">" char1=">" attribute="Pod Indexed Terms" context="#pop"/>
+ </context>
+
+ <!-- Pod =begin -->
+
+ <context name="PodBegin" attribute="Pod Typename Value" lineEndContext="#pop#pop!Error">
+ <DetectSpaces attribute="Normal Text"/>
+ <WordDetect String="code" context="PodBeginCode" attribute="Pod Typename Value" beginRegion="pod"/>
+ <WordDetect String="comment" context="PodBeginComment" attribute="Pod Typename Value" beginRegion="pod"/>
+ <RegExpr String="(&ident;)" context="PodBeginTypename" attribute="Pod Typename Value" beginRegion="pod"/>
+ <!-- auto-completion only -->
+ <keyword String="podblocktypename" context="#stay" attribute="Pod Typename Value"/>
+ </context>
+
+ <context name="PodBeginCode" attribute="Error" lineEndContext="PodInnerCode">
+ <DetectSpaces attribute="Normal Text"/>
+ <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
+ <DetectChar char="=" context="PodEndCode" attribute="Pod" firstNonSpace="1"/>
+ </context>
+
+ <context name="PodInnerCode" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodCode">
+ <RegExpr String="^\s*=end\s+code\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
+ </context>
+ <context name="PodCode" attribute="Pod Verbatim" lineEndContext="#pop"/>
+
+ <context name="PodEndCode" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
+ <StringDetect String="end" context="PodEndCodeName" attribute="Pod Block" endRegion="pod"/>
+ </context>
+ <context name="PodEndCodeName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop#pop!Error">
+ <DetectSpaces attribute="Normal Text"/>
+ <StringDetect String="code" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
+ </context>
+
+
+ <context name="PodBeginComment" attribute="Error" lineEndContext="PodInnerComment">
+ <DetectSpaces attribute="Normal Text"/>
+ <DetectChar char="=" context="PodEndComment" attribute="Pod" firstNonSpace="1"/>
+ </context>
+
+ <context name="PodInnerComment" attribute="Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodComment">
+ <RegExpr String="^\s*=end\s+comment\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
+ </context>
+ <context name="PodComment" attribute="Comment" lineEndContext="#pop"/>
+
+ <context name="PodEndComment" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
+ <StringDetect String="end" context="PodEndCommentName" attribute="Pod Block" endRegion="pod"/>
+ </context>
+ <context name="PodEndCommentName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop#pop!Error">
+ <DetectSpaces attribute="Normal Text"/>
+ <StringDetect String="comment" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
+ </context>
+
+
+ <context name="PodBeginTypename" attribute="Error" lineEndContext="PodInnerBlock">
+ <RegExpr String="^\s*=end\s+%1\b" dynamic="1" context="PodEnd" attribute="Pod" column="0" lookAhead="1"/>
+ <DetectSpaces attribute="Normal Text"/>
+ <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
+ <DetectChar char="=" context="PodEndError" attribute="Pod" firstNonSpace="1"/>
+ </context>
+
+ <context name="PodInnerBlock" attribute="Pod Paragraph" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodInnerBlockFormat">
+ <RegExpr String="^\s*=end\b" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
+ <DetectSpaces/>
+ <DetectChar char="=" context="StartPod" attribute="Pod" firstNonSpace="1"/>
+ <RegExpr attribute="Pod Paragraph" context="#stay" String="&allnopodfmt;"/>
+ </context>
+
+ <context name="PodInnerBlockFormat" attribute="Pod Paragraph" lineEndContext="#stay">
+ <IncludeRules context="PodFormat"/>
+ </context>
+
+ <context name="PodEnd" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
+ <DetectSpaces attribute="Normal Text"/>
+ <DetectChar char="=" context="#stay" attribute="Pod"/>
+ <StringDetect String="end" context="PodEndName" attribute="Pod Block" endRegion="pod"/>
+ </context>
+ <context name="PodEndName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop">
+ <DetectSpaces attribute="Normal Text"/>
+ <RegExpr String="&ident;" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
+ </context>
+
+ <context name="PodEndError" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
+ <StringDetect String="end" attribute="Pod Block" context="#pop#pop#pop!Error" endRegion="pod"/>
+ </context>
+
+ <!-- Pod configuration for =begin -->
+
+ <context name="PodBlockConfigError" attribute="Error" lineEndContext="#pop#pop!PodInnerBlock"/>
+
+ <context name="PodBlockConfigKey" attribute="Pod Key" lineEndContext="#pop!PodInnerBlock" fallthrough="1" fallthroughContext="PodBlockConfigError">
+ <DetectChar char="!" context="#pop!PodBlockConfigKeyName" attribute="Pod Operator"/>
+ <Int context="PodBlockConfigKeyIntName" attribute="Decimal"/>
+ <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
+ </context>
+
+ <context name="PodBlockConfigKeyName" attribute="Pod Key" lineEndContext="#pop!PodTypenameValue" fallthrough="1" fallthroughContext="PodBlockConfigError">
+ <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
+ </context>
+
+ <context name="PodBlockConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop!PodBlockConfigError" fallthrough="1" fallthroughContext="#pop!PodBlockConfigError">
+ <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
+ </context>
+
+ <context name="PodBlockConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop">
+ <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
+ <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
+ <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
+ </context>
+
+
+ <!-- Pod =for -->
+
+ <context name="PodFor" attribute="Pod Typename" lineEndContext="#pop#pop!Error" fallthrough="1" fallthroughContext="#pop#pop!Error">
+ <DetectSpaces attribute="Normal Text"/>
+ <keyword String="podtypename" context="#pop!PodConfig" attribute="Pod Typename"/>
+ </context>
+
+ <!-- Pod configuration for =for -->
+
+ <context name="PodConfigError" attribute="Error" lineEndContext="#pop#pop!PodTypenameValue"/>
+
+ <context name="PodConfig" attribute="Normal Text" lineEndContext="#pop!PodTypenameValue" fallthrough="1" fallthroughContext="PodConfigError">
+ <DetectSpaces/>
+ <DetectChar char=":" context="PodConfigKey" attribute="Pod Operator"/>
+ </context>
+
+ <context name="PodConfigKey" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthrough="1" fallthroughContext="#pop!PodConfigError">
+ <DetectChar char="!" context="#pop!PodConfigKeyName" attribute="Pod Operator"/>
+ <Int context="PodConfigKeyIntName" attribute="Decimal"/>
+ <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
+ </context>
+
+ <context name="PodConfigKeyName" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthrough="1" fallthroughContext="#pop!PodConfigError">
+ <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
+ </context>
+
+ <context name="PodConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop#pop!PodConfigError" fallthrough="1" fallthroughContext="#pop#pop!PodConfigError">
+ <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
+ </context>
+
+ <context name="PodConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
+ <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
+ <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
+ <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
+ </context>
+
+ <context name="PodParamSequence" attribute="Pod Config" lineEndContext="#stay">
+ <DetectSpaces/>
+ <keyword String="podvalue" context="#stay" attribute="Data Type"/>
+ <DetectIdentifier/>
+ <AnyChar String="0123456789." context="Number" lookAhead="1"/>
+ <DetectChar char=">" context="#pop#pop#pop" attribute="Pod Operator"/>
+ <DetectChar char="'" context="PodSQString" attribute="String"/>
+ <DetectChar char="&quot;" context="PodQString" attribute="String"/>
+ </context>
+
+ <context name="PodParamHash" attribute="Pod Config" lineEndContext="#stay">
+ <DetectSpaces/>
+ <Detect2Chars char="=" char1=">" context="#stay" attribute="Pod Operator"/>
+ <DetectChar char="," context="#stay" attribute="Pod Operator"/>
+ <keyword String="podvalue" context="#stay" attribute="Data Type"/>
+ <DetectIdentifier/>
+ <DetectChar char="'" context="PodSQString" attribute="String"/>
+ <DetectChar char="&quot;" context="PodQString" attribute="String"/>
+ <AnyChar String="0123456789." context="Number" lookAhead="1"/>
+ <DetectChar char="}" context="#pop#pop#pop" attribute="Pod Operator"/>
+ </context>
+
+ <context name="PodParamList" attribute="Pod Config" lineEndContext="#stay">
+ <DetectSpaces/>
+ <DetectChar char="," context="#stay" attribute="Pod Operator"/>
+ <keyword String="podvalue" context="#stay" attribute="Data Type"/>
+ <DetectIdentifier/>
+ <DetectChar char="'" context="PodSQString" attribute="String"/>
+ <DetectChar char="&quot;" context="PodQString" attribute="String"/>
+ <AnyChar String="0123456789." context="Number" lookAhead="1"/>
+ <AnyChar String="])" context="#pop#pop#pop" attribute="Pod Operator"/>
+ </context>
+
+
+ <!-- Pod String -->
+
+ <context name="PodSQString" attribute="String" lineEndContext="#stay">
+ <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
+ <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
+ <RegExpr String="(?:[^\\']*|\\[^']|\\$)*" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="PodQString" attribute="String" lineEndContext="#stay">
+ <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="\" context="SpecialChar" attribute="String Special Character"/>
+ <RegExpr String="(?:[^&quot;\\]*|\\$)*" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="find_SpecialChar" attribute="String Special Character" lineEndContext="#stay">
+ <Detect2Chars char="c" char1="[" context="UnicodeCodepoint" attribute="String Special Character"/>
+ <DetectChar char="c" context="UnicodeCodepointDecimal" attribute="String Special Character"/>
+ <DetectChar char="x" context="HexaString" attribute="String Special Character"/>
+ <DetectChar char="o" context="OctalString" attribute="String Special Character"/>
+ </context>
+
+ <context name="SpecialChar" attribute="String Special Character" lineEndContext="#pop">
+ <IncludeRules context="find_SpecialChar"/>
+ <RegExpr String="." context="#pop" attribute="String"/>
+ </context>
+
+ <context name="UnicodeCodepoint" attribute="String Special Character" lineEndContext="#stay">
+ <DetectSpaces/>
+ <DetectIdentifier/>
+ <DetectChar char="]" context="#pop#pop" attribute="String Special Character"/>
+ <DetectChar char="," context="#stay" attribute="Separator Symbol"/>
+ </context>
+
+ <context name="UnicodeCodepointDecimal" attribute="String Special Character" lineEndContext="#pop#pop">
+ <!-- 0 to 1114111 -->
+ <RegExpr String="0*(?:1(?:0\d{5}|1(?:O\d{4}|(?:1[0-3]\d{3}|4(?:0\d\d|1(?:0\d|1[01]))))))|\d{1,6}|0+" context="UnicodeCodepointDecimalCheck" attribute="String Special Character"/>
+ <RegExpr String="[^&quot;]" context="#pop" attribute="Error"/>
+ </context>
+ <context name="UnicodeCodepointDecimalCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">
+ <AnyChar String="0123456789" context="#pop#pop#pop" attribute="Error"/>
+ </context>
+
+ <context name="HexaString" attribute="String Special Character" lineEndContext="#pop#pop">
+ <DetectChar char="[" context="HexaStringBracket" attribute="String Special Character"/>
+ <!-- 0 to 0x10FFFF -->
+ <RegExpr String="0*(?:10[0-9a-fA-F]{4}|[0-9a-fA-F]{1,5})|0+" context="HexaStringCheck" attribute="String Special Character"/>
+ <RegExpr String="[^&quot;]" context="#pop#pop" attribute="Error"/>
+ </context>
+ <context name="HexaStringCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">
+ <AnyChar String="0123456789abcdefABCDEF" context="#pop#pop#pop" attribute="Error"/>
+ </context>
+ <context name="HexaStringBracket" attribute="String Special Character" lineEndContext="#stay">
+ <DetectSpaces/>
+ <DetectChar char="]" context="#pop#pop#pop" attribute="Error"/>
+ <!-- 0 to 0x10FFFF -->
+ <RegExpr String="0*(?:10[0-9a-fA-F]{4}|[0-9a-fA-F]{1,5})|0+" context="HexaStringBracketCheck" attribute="String Special Character"/>
+ </context>
+ <context name="HexaStringBracketCheck" attribute="String Special Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop#pop">
+ <DetectChar char="]" context="#pop#pop#pop#pop" attribute="String Special Character"/>
+ <DetectChar char="," context="#pop" attribute="Separator Symbol"/>
+ <RegExpr String="[^]&quot;]" context="#stay" attribute="Error"/>
+ </context>
+
+ <context name="OctalString" attribute="String Special Character" lineEndContext="#pop#pop">
+ <DetectChar char="[" context="OctalStringBracket" attribute="String Special Character"/>
+ <!-- 0 to 0o4177777 -->
+ <RegExpr String="0*(?:[0-3][0-7]{6}|4[01]|[0-7])[0-7]{0,5}|0+" context="OctalStringCheck" attribute="String Special Character"/>
+ <RegExpr String="[^&quot;]" context="#stay" attribute="Error"/>
+ </context>
+ <context name="OctalStringCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">
+ <AnyChar String="01234567" context="#pop#pop#pop" attribute="Error"/>
+ </context>
+ <context name="OctalStringBracket" attribute="String Special Character" lineEndContext="#stay">
+ <DetectChar char="]" context="#pop#pop#pop" attribute="Error"/>
+ <!-- 0 to 0o4177777 -->
+ <RegExpr String="0*(?:[0-3][0-7]{6}|4[01]|[0-7])[0-7]{0,5}|0+" context="OctalStringBracketCheck" attribute="String Special Character"/>
+ </context>
+ <context name="OctalStringBracketCheck" attribute="String Special Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop#pop">
+ <DetectChar char="]" context="#pop#pop#pop#pop" attribute="String Special Character"/>
+ <DetectChar char="," context="#pop" attribute="Separator Symbol"/>
+ <RegExpr String="[^]&quot;]" context="#stay" attribute="Error"/>
+ </context>
+
+
+ <!-- Q String -->
+
+ <context name="Q_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+ <DetectSpaces attribute="String"/>
+ <DetectChar char=":" context="#pop!Q_StringModifier" attribute="Operator"/>
+ <DetectChar char="(" context="#pop!Q_String(" attribute="String Delimiter"/>
+ <DetectChar char="[" context="#pop!Q_String[" attribute="String Delimiter"/>
+ <DetectChar char="{" context="#pop!Q_String{" attribute="String Delimiter"/>
+ <DetectChar char="「" context="#pop!Q_String「" attribute="String Delimiter"/>
+ <DetectChar char="&lt;" context="#pop!Q_String&lt;" attribute="String Delimiter"/>
+ <RegExpr String="([^()>」\]}'&_rangealphabetic;&rangenumeric;])" context="#pop!Q_StringAny" attribute="String Delimiter"/>
+ </context>
+
+ <context name="Q_String(" attribute="String" lineEndContext="#stay">
+ <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="(" context="Q_String(" attribute="String Delimiter"/>
+ <RegExpr String="[^()]*" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="Q_String[" attribute="String" lineEndContext="#stay">
+ <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="[" context="Q_String[" attribute="String Delimiter"/>
+ <RegExpr String="[^\[\]]*" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="Q_String{" attribute="String" lineEndContext="#stay">
+ <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="{" context="Q_String{" attribute="String Delimiter"/>
+ <RegExpr String="[^{}]*" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="Q_String「" attribute="String" lineEndContext="#stay">
+ <DetectChar char="」" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="「" context="Q_String「" attribute="String Delimiter"/>
+ <RegExpr String="[^「」]*" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="Q_String&lt;" attribute="String" lineEndContext="#stay">
+ <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="&lt;" context="Q_String&lt;" attribute="String Delimiter"/>
+ <RegExpr String="[^&lt;>]*" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="Q_StringAny" attribute="String" lineEndContext="#stay">
+ <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
+ <RegExpr String="[^%1]*" dynamic="1" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="q_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop!q_String">
+ <DetectChar char=":" context="#pop#pop!q_QuotingForm2" attribute="Operator"/>
+ </context>
+
+ <context name="qq_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop!qq_String">
+ <DetectChar char=":" context="#pop!qq_QuotingForm" attribute="Operator"/>
+ </context>
+
+ <context name="Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!q_QuotingForm2">
+ <DetectChar char="q" context="#pop!q_QuotingForm" attribute="Operator"/>
+ <DetectChar char="'" context="q_Q_StringModifier" attribute="Operator"/>
+ <DetectChar char="&quot;" context="qq_Q_StringModifier" attribute="Operator"/>
+ </context>
+
+ <context name="q_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!q_QuotingForm2">
+ <DetectChar char="q" context="#pop!qq_QuotingForm" attribute="Operator"/>
+ <DetectChar char=":" context="#pop!q_QuotingForm2" attribute="Operator"/>
+ </context>
+ <context name="q_QuotingForm2" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="q_String">
+ <WordDetect String="heredoc" context="q_Heredoc" attribute="Operator"/>
+ <keyword String="quoting" context="#stay" attribute="Operator"/>
+ <AnyChar String="wvx:sahfb" context="#stay" attribute="Operator"/>
+ <!-- :closure as qq -->
+ <DetectChar char="c" context="#pop!qq_QuotingForm" attribute="Operator"/>
+ <Detect2Chars char="t" char1="o" context="q_Heredoc" attribute="Operator"/>
+ </context>
+
+ <context name="qq_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="qq_String">
+ <WordDetect String="heredoc" context="qq_Heredoc" attribute="Operator"/>
+ <keyword String="quoting" context="#stay" attribute="Operator"/>
+ <AnyChar String="wvx:sahfcb" context="#stay" attribute="Operator"/>
+ <Detect2Chars char="t" char1="o" context="qq_Heredoc" attribute="Operator"/>
+ </context>
+
+
+ <!-- q and qq Heredoc -->
+
+ <context name="q_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
+ <RegExpr String="/([^/]+)/" context="q_HeredocTerminator" attribute="String Delimiter"/>
+ </context>
+ <context name="q_HeredocTerminator" attribute="String" lineEndContext="#stay">
+ <DetectSpaces/>
+ <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
+ <RegExpr String="(?:[^\\]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
+ <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+ </context>
+
+ <context name="qq_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
+ <RegExpr String="/([^/]+)/" context="qq_HeredocTerminator" attribute="String Delimiter"/>
+ </context>
+ <context name="qq_HeredocTerminator" attribute="String" lineEndContext="#stay">
+ <DetectSpaces/>
+ <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
+ <IncludeRules context="find_qq_StringCommon"/>
+ <RegExpr String="[^\\${@&amp;]*" context="#stay" attribute="String"/>
+ </context>
+
+
+ <!-- q String -->
+
+ <context name="q_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop">
+ <DetectSpaces/>
+ <DetectChar char="(" context="#pop#pop!q_String(" attribute="String Delimiter"/>
+ <DetectChar char="[" context="#pop#pop!q_String[" attribute="String Delimiter"/>
+ <DetectChar char="{" context="#pop#pop!q_String{" attribute="String Delimiter"/>
+ <DetectChar char="&lt;" context="#pop#pop!q_String&lt;" attribute="String Delimiter"/>
+ <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!q_StringAny" attribute="String Delimiter"/>
+ </context>
+
+ <context name="q_String(" attribute="String" lineEndContext="#stay">
+ <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="(" context="q_String(" attribute="String Delimiter"/>
+ <Detect2Chars char="\" char1="(" context="#stay" attribute="String Special Character"/>
+ <Detect2Chars char="\" char1=")" context="#stay" attribute="String Special Character"/>
+ <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
+ <RegExpr String="(?:[^()\\]*|\\(?![()\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+ <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+ </context>
+
+ <context name="q_String[" attribute="String" lineEndContext="#stay">
+ <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="[" context="q_String[" attribute="String Delimiter"/>
+ <Detect2Chars char="\" char1="[" context="#stay" attribute="String Special Character"/>
+ <Detect2Chars char="\" char1="]" context="#stay" attribute="String Special Character"/>
+ <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
+ <RegExpr String="(?:[^\[\]\\]*|\\(?![\[\]\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+ <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+ </context>
+
+ <context name="q_String{" attribute="String" lineEndContext="#stay">
+ <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="{" context="q_String{" attribute="String Delimiter"/>
+ <Detect2Chars char="\" char1="{" context="#stay" attribute="String Special Character"/>
+ <Detect2Chars char="\" char1="}" context="#stay" attribute="String Special Character"/>
+ <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
+ <RegExpr String="(?:[^{}\\]*|\\(?![{}\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+ <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+ </context>
+
+ <context name="q_String&lt;" attribute="String" lineEndContext="#stay">
+ <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="&lt;" context="q_String&lt;" attribute="String Delimiter"/>
+ <Detect2Chars char="\" char1="&lt;" context="#stay" attribute="String Special Character"/>
+ <Detect2Chars char="\" char1=">" context="#stay" attribute="String Special Character"/>
+ <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
+ <RegExpr String="(?:[^&lt;>\\]*|\\(?![&lt;>\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+ <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+ </context>
+
+ <context name="q_StringAny" attribute="String" lineEndContext="#stay">
+ <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
+ <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
+ <RegExpr String="(?:[^\\%1]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
+ <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+ </context>
+
+ <context name="q_RawString" attribute="String" lineEndContext="#stay">
+ <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
+ <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
+ <RegExpr String="(?:[^\\']*|\\(?![\\']|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+ <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+ </context>
+
+ <!-- qq String -->
+
+ <context name="qq_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop">
+ <DetectSpaces/>
+ <DetectChar char="(" context="#pop#pop!qq_String(" attribute="String Delimiter"/>
+ <DetectChar char="[" context="#pop#pop!qq_String[" attribute="String Delimiter"/>
+ <DetectChar char="{" context="#pop#pop!qq_String{" attribute="String Delimiter"/>
+ <DetectChar char="&lt;" context="#pop#pop!qq_String&lt;" attribute="String Delimiter"/>
+ <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!qq_StringAny" attribute="String Delimiter"/>
+ </context>
+
+ <context name="qq_String(" attribute="String" lineEndContext="#stay">
+ <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="(" context="qq_String(" attribute="String Delimiter"/>
+ <IncludeRules context="find_qq_StringCommon"/>
+ <RegExpr String="[^()\\${@&amp;]*" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="qq_String[" attribute="String" lineEndContext="#stay">
+ <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="[" context="qq_String[" attribute="String Delimiter"/>
+ <IncludeRules context="find_qq_StringCommon"/>
+ <RegExpr String="[^\[\]\\${@&amp;]*" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="qq_String{" attribute="String" lineEndContext="#stay">
+ <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="{" context="qq_String{" attribute="String Delimiter"/>
+ <IncludeRules context="find_qq_StringCommon"/>
+ <RegExpr String="[^{}\\$@&amp;]*" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="qq_String&lt;" attribute="String" lineEndContext="#stay">
+ <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="&lt;" context="qq_String&lt;" attribute="String Delimiter"/>
+ <IncludeRules context="find_qq_StringCommon"/>
+ <RegExpr String="[^&lt;>\\${@&amp;]*" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="qq_String«" attribute="String" lineEndContext="#stay">
+ <DetectChar char="»" context="#pop" attribute="String Delimiter"/>
+ <DetectChar char="«" context="qq_String«" attribute="String Delimiter"/>
+ <IncludeRules context="find_qq_StringCommon"/>
+ <RegExpr String="[^«»\\${@&amp;]*" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="qq_String&lt;&lt;" attribute="String" lineEndContext="#stay">
+ <Detect2Chars char=">" char1=">" context="#pop" attribute="String Delimiter"/>
+ <Detect2Chars char="&lt;" char1="&lt;" context="qq_String&lt;&lt;" attribute="String Delimiter"/>
+ <IncludeRules context="find_qq_StringCommon"/>
+ <RegExpr String="([^&lt;>\\${@&amp;]*|&lt;(?!&lt;)|>(?!>))" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="qq_StringAny" attribute="String" lineEndContext="#stay">
+ <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
+ <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
+ <IncludeRules context="find_qq_StringCommon"/>
+ <RegExpr String="[^%1\\${@&amp;]*" dynamic="1" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="qq_RawString" attribute="String" lineEndContext="#stay">
+ <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
+ <IncludeRules context="find_qq_StringCommon"/>
+ <RegExpr String="[^\\&quot;${@&amp;]*" context="#stay" attribute="String"/>
+ </context>
+
+ <context name="find_qq_StringCommon" attribute="String" lineEndContext="#stay">
+ <DetectChar char="\" context="qq_StringEscape" attribute="Operator" lookAhead="1"/>
+ <DetectChar char="{" context="qq_Interpolation" attribute="String (interpolated)"/>
+ <DetectChar char="$" context="qq_StringMaybeVar$" attribute="String" lookAhead="1"/>
+ <AnyChar String="@%" context="qq_StringMaybeVar" attribute="String" lookAhead="1"/>
+ <DetectChar char="&amp;" context="qq_StringSigil" attribute="String" lookAhead="1"/>
+ </context>
+
+ <context name="qq_StringEscape" attribute="String Special Character" lineEndContext="#pop">
+ <Detect2Chars char="\" char1="q" context="#pop!q_QuotingForm" attribute="Operator"/>
+ <Detect2Chars char="\" char1="x" context="HexaString" attribute="String Special Character"/>
+ <StringDetect String="\c[" context="UnicodeCodepoint" attribute="String Special Character"/>
+ <Detect2Chars char="\" char1="c" context="UnicodeCodepointDecimal" attribute="String Special Character"/>
+ <Detect2Chars char="\" char1="o" context="OctalString" attribute="String Special Character"/>
+ <RegExpr String="\\.?" context="#pop" attribute="String Special Character"/>
+ </context>
+
+ <context name="qq_Interpolation" attribute="String (interpolated)" lineEndContext="#stay">
+ <DetectChar char="}" context="#pop" attribute="String (interpolated)"/>
+ <IncludeRules context="base"/>
+ </context>
+
+ <context name="qq_StringSigil" attribute="Function" lineEndContext="#stay">
+ <RegExpr String="&amp;&ident;\(" context="#pop!FunctionParameters" attribute="Function"/>
+ <DetectChar char="&amp;" context="#pop" attribute="String"/>
+ </context>
+
+ <context name="qq_StringMaybeVar$" attribute="String" lineEndContext="#stay">
+ <RegExpr String="\$(?=[&twigils;]?&prefixdollarvarname;)" context="qq_InterpolationVar" attribute="Variable"/>
+ <DetectChar char="$" context="#pop" attribute="String"/>
+ </context>
+
+ <context name="qq_StringMaybeVar" attribute="String" lineEndContext="#stay">
+ <RegExpr String="@\(\)|[%@]\$/|[@%]&ident;" context="qq_Interpolation1" attribute="Variable"/>
+ <AnyChar String="@%" context="#pop" attribute="String"/>
+ </context>
+
+ <context name="qq_InterpolationVar" attribute="String" lineEndContext="#stay">
+ <AnyChar String="&twigils;" context="#stay" attribute="Twigil"/>
+ <RegExpr String="&dollarvarname;" context="#pop!qq_Interpolation1" attribute="Variable"/>
+ </context>
+
+ <context name="qq_Interpolation1" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
+ <DetectChar char="[" context="qq_InterpolationIndex" attribute="Function"/>
+ <DetectChar char="." context="qq_InterpolationFunction" attribute="Function" lookAhead="1"/>
+ </context>
+
+ <context name="qq_InterpolationIndex" attribute="String" lineEndContext="#stay">
+ <DetectChar char="]" context="#pop#pop#pop" attribute="Function"/>
+ <IncludeRules context="base"/>
+ </context>
+
+ <context name="qq_InterpolationFunction" attribute="String" lineEndContext="#stay">
+ <RegExpr String="(?:\.&ident;)*\.&ident;\(" context="#pop#pop#pop!FunctionParameters" attribute="Function"/>
+ <DetectChar char="." context="#pop#pop#pop" attribute="String"/>
+ </context>
+
+ <context name="FunctionParameters" attribute="String" lineEndContext="#stay">
+ <DetectChar char=")" context="#pop" attribute="Function"/>
+ <DetectChar char="(" context="FunctionParameters" attribute="Function"/>
+ <IncludeRules context="base"/>
+ </context>
+
+
+ <!-- Comment -->
+
+ <context name="StartComment" attribute="Comment" lineEndContext="#pop" fallthrough="1" fallthroughContext="SingleLineComment">
+ <DetectChar attribute="Comment" context="MultilineComment" char="`"/>
+ <AnyChar attribute="Pod Operator" context="MultilineComment" String="=|"/>
+ </context>
+
+ <context name="MultilineComment" attribute="Comment" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop!SingleLineComment">
+ <!-- TODO a new rule is needed to find the corresponding closures -->
+ <StringDetect attribute="Comment" context="#pop#pop!MultilineComment(((" String="(((" beginRegion="comment"/>
+ <StringDetect attribute="Comment" context="#pop#pop!MultilineComment[[[" String="[[[" beginRegion="comment"/>
+ <StringDetect attribute="Comment" context="#pop#pop!MultilineComment{{{" String="{{{" beginRegion="comment"/>
+ <StringDetect attribute="Comment" context="#pop#pop!MultilineComment«««" String="«««" beginRegion="comment"/>
+ <StringDetect attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;&lt;" String="&lt;&lt;&lt;" beginRegion="comment"/>
+ <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment((" char="(" char1="(" beginRegion="comment"/>
+ <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment[[" char="[" char1="[" beginRegion="comment"/>
+ <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment{{" char="{" char1="{" beginRegion="comment"/>
+ <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment««" char="«" char1="«" beginRegion="comment"/>
+ <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;" char="&lt;" char1="&lt;" beginRegion="comment"/>
+ <DetectChar attribute="Comment" context="#pop#pop!MultilineComment(" char="(" beginRegion="comment"/>
+ <DetectChar attribute="Comment" context="#pop#pop!MultilineComment[" char="[" beginRegion="comment"/>
+ <DetectChar attribute="Comment" context="#pop#pop!MultilineComment{" char="{" beginRegion="comment"/>
+ <DetectChar attribute="Comment" context="#pop#pop!MultilineComment«" char="«" beginRegion="comment"/>
+ <DetectChar attribute="Comment" context="#pop#pop!MultilineComment&lt;" char="&lt;" beginRegion="comment"/>
+ <!-- etc -->
+ </context>
+
+ <context name="MultilineComment(((" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <StringDetect String=")))" attribute="Comment" context="#pop" endRegion="comment"/>
+ <StringDetect String="(((" attribute="Comment" context="MultilineComment(((" beginRegion="comment"/>
+ </context>
+ <context name="MultilineComment[[[" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <StringDetect String="]]]" attribute="Comment" context="#pop" endRegion="comment"/>
+ <StringDetect String="[[[" attribute="Comment" context="MultilineComment[[[" beginRegion="comment"/>
+ </context>
+ <context name="MultilineComment{{{" attribute="Comment" lineEndContext="#stay">
+ <StringDetect String="}}}" attribute="Comment" context="#pop" endRegion="comment"/>
+ <StringDetect String="{{{" attribute="Comment" context="MultilineComment{{{" beginRegion="comment"/>
+ <IncludeRules context="SingleLineComment"/>
+ </context>
+ <context name="MultilineComment«««" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <StringDetect String="»»»" attribute="Comment" context="#pop" endRegion="comment"/>
+ <StringDetect String="«««" attribute="Comment" context="MultilineComment«««" beginRegion="comment"/>
+ </context>
+ <context name="MultilineComment&lt;&lt;&lt;" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <StringDetect String=">>>" attribute="Comment" context="#pop" endRegion="comment"/>
+ <StringDetect String="&lt;&lt;&lt;" attribute="Comment" context="MultilineComment&lt;&lt;&lt;" beginRegion="comment"/>
+ </context>
+
+ <context name="MultilineComment((" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <Detect2Chars char=")" char1=")" attribute="Comment" context="#pop" endRegion="comment"/>
+ <Detect2Chars char="(" char1="(" attribute="Comment" context="MultilineComment((" beginRegion="comment"/>
+ </context>
+ <context name="MultilineComment[[" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <Detect2Chars char="]" char1="]" attribute="Comment" context="#pop" endRegion="comment"/>
+ <Detect2Chars char="[" char1="[" attribute="Comment" context="MultilineComment[[" beginRegion="comment"/>
+ </context>
+ <context name="MultilineComment{{" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <Detect2Chars char="}" char1="}" attribute="Comment" context="#pop" endRegion="comment"/>
+ <Detect2Chars char="{" char1="{" attribute="Comment" context="MultilineComment{{" beginRegion="comment"/>
+ </context>
+ <context name="MultilineComment««" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <Detect2Chars char="»" char1="»" attribute="Comment" context="#pop" endRegion="comment"/>
+ <Detect2Chars char="«" char1="«" attribute="Comment" context="MultilineComment««" beginRegion="comment"/>
+ </context>
+ <context name="MultilineComment&lt;&lt;" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <Detect2Chars char=">" char1=">" attribute="Comment" context="#pop" endRegion="comment"/>
+ <Detect2Chars char="&lt;" char1="&lt;" attribute="Comment" context="MultilineComment&lt;&lt;" beginRegion="comment"/>
+ </context>
+
+ <context name="MultilineComment(" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <DetectChar char=")" attribute="Comment" context="#pop" endRegion="comment"/>
+ <DetectChar char="(" attribute="Comment" context="MultilineComment(" beginRegion="comment"/>
+ </context>
+ <context name="MultilineComment[" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <DetectChar char="]" attribute="Comment" context="#pop" endRegion="comment"/>
+ <DetectChar char="[" attribute="Comment" context="MultilineComment[" beginRegion="comment"/>
+ </context>
+ <context name="MultilineComment{" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <DetectChar char="}" attribute="Comment" context="#pop" endRegion="comment"/>
+ <DetectChar char="{" attribute="Comment" context="MultilineComment{" beginRegion="comment"/>
+ </context>
+ <context name="MultilineComment«" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <DetectChar char="»" attribute="Comment" context="#pop" endRegion="comment"/>
+ <DetectChar char="«" attribute="Comment" context="MultilineComment«" beginRegion="comment"/>
+ </context>
+ <context name="MultilineComment&lt;" attribute="Comment" lineEndContext="#stay">
+ <IncludeRules context="SingleLineComment"/>
+ <DetectChar char=">" attribute="Comment" context="#pop" endRegion="comment"/>
+ <DetectChar char="&lt;" attribute="Comment" context="MultilineComment&lt;" beginRegion="comment"/>
+ </context>
+
+ <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop#pop">
+ <DetectSpaces/>
+ <IncludeRules context="##Comments"/>
+ <DetectIdentifier/>
+ </context>
+
+
+ <!-- Error -->
+
+ <context name="Error" attribute="Error" lineEndContext="#pop"/>
+
+ <context name="CharErrorIfNoSep" attribute="Error" lineEndContext="#pop">
+ <RegExpr String="[^;)]" context="#pop" attribute="Error"/>
+ </context>
+
+ <context name="CharError" attribute="Error" lineEndContext="#pop">
+ <RegExpr String="." context="#pop" attribute="Error"/>
+ </context>
+
+ </contexts>
+
+ <itemDatas>
+ <itemData name="Normal Text" defStyleNum="dsNormal"/>
+ <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+ <itemData name="Keyword Value" defStyleNum="dsKeyword" spellChecking="false"/>
+ <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
+ <itemData name="Twigil" defStyleNum="dsAttribute" spellChecking="false"/>
+ <itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>
+ <itemData name="Variable Storage" defStyleNum="dsKeyword" spellChecking="false" bold="1"/>
+ <itemData name="Property" defStyleNum="dsBuiltIn" spellChecking="false" italic="1"/>
+ <itemData name="Declare Routine" defStyleNum="dsBuiltIn" spellChecking="false"/>
+ <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
+ <itemData name="Operator" defStyleNum="dsKeyword" spellChecking="false"/>
+ <itemData name="Separator Symbol" defStyleNum="dsNormal" spellChecking="false"/>
+ <itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false"/>
+ <itemData name="Attribute" defStyleNum="dsAttribute" spellChecking="false"/>
+ <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/>
+ <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>
+ <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
+ <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
+ <itemData name="String" defStyleNum="dsString"/>
+ <itemData name="String Delimiter" defStyleNum="dsChar" spellChecking="false"/>
+ <itemData name="String (interpolated)" defStyleNum="dsString"/>
+ <itemData name="String Special Character" defStyleNum="dsChar"/>
+ <itemData name="Pattern" defStyleNum="dsOthers" spellChecking="false"/>
+ <itemData name="Pattern Meta Character" defStyleNum="dsChar" spellChecking="false"/>
+ <itemData name="Pattern Character Class" defStyleNum="dsBaseN" spellChecking="false"/>
+ <itemData name="Pattern Unicode Property" defStyleNum="dsBaseN" spellChecking="false"/>
+ <itemData name="Pattern Character" defStyleNum="dsChar" spellChecking="false"/>
+ <itemData name="Pattern Modifier" defStyleNum="dsKeyword" spellChecking="false"/>
+ <itemData name="Pattern Quantifier" defStyleNum="dsControlFlow" spellChecking="false"/>
+ <itemData name="Pattern Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>
+ <itemData name="Pattern Special Character" defStyleNum="dsBuiltIn" spellChecking="false"/>
+ <itemData name="Comment" defStyleNum="dsComment"/>
+ <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
+ <itemData name="Pod" defStyleNum="dsDocumentation" spellChecking="false"/>
+ <itemData name="Pod Paragraph" defStyleNum="dsDocumentation"/>
+ <itemData name="Pod Block" defStyleNum="dsRegionMarker" spellChecking="false"/>
+ <itemData name="Pod Typename" defStyleNum="dsAnnotation" spellChecking="false"/>
+ <itemData name="Pod Typename Value" defStyleNum="dsCommentVar" spellChecking="false"/>
+ <itemData name="Pod Unknown" defStyleNum="dsError" spellChecking="false"/>
+ <itemData name="Pod Operator" defStyleNum="dsOperator" spellChecking="false"/>
+ <itemData name="Pod Key" defStyleNum="dsAttribute" spellChecking="false"/>
+ <itemData name="Pod Config" defStyleNum="dsCommentVar" spellChecking="false"/>
+ <itemData name="Pod Bold" defStyleNum="dsDocumentation" bold="1"/>
+ <itemData name="Pod Italic" defStyleNum="dsDocumentation" italic="1"/>
+ <itemData name="Pod Underline" defStyleNum="dsDocumentation" underline="1"/>
+ <itemData name="Pod Link" defStyleNum="dsOthers" underline="1"/>
+ <itemData name="Pod Note" defStyleNum="dsInformation"/>
+ <itemData name="Pod Comment" defStyleNum="dsComment"/>
+ <itemData name="Pod Verbatim" defStyleNum="dsInformation" spellChecking="false"/>
+ <itemData name="Pod Unicode" defStyleNum="dsChar" spellChecking="false"/>
+ <itemData name="Pod Indexed Terms" defStyleNum="dsOthers" spellChecking="false"/>
+ </itemDatas>
+ </highlighting>
+ <general>
+ <comments>
+ <comment name="singleLine" start="#"/>
+ </comments>
+ <keywords casesensitive="1" weakDeliminator="-'"/>
+ </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
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;[^&quot;&gt;\s`\)]*[^\s!&quot;&apos;`\(\)\*,\.:;&lt;&gt;\?~\]\}\\](?=[[: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="+-*/=&lt;&gt;"/>
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="&quot;"/>
- <AnyChar attribute="Symbol" context="#stay" String=":&#38;"/>
- <RegExpr attribute="Preprocessor" context="Preprocessor" String="@@?[^@ \t\r\n]" column="0"/>
- <RegExpr attribute="Operator" context="MultiLineString" String="\$([^\$\n\r]*)\$"/>
- <AnyChar attribute="Operator" context="#stay" String="+-*/=%^!&lt;&gt;&amp;|@~#"/>
<Detect2Chars attribute="Operator" context="#stay" char=":" char1="="/>
+ <AnyChar attribute="Symbol" context="#stay" String=":&amp;"/>
<Detect2Chars attribute="Operator" context="#stay" char="." char1="."/>
<!-- geometric operators -->
<Detect2Chars attribute="Operator" context="#stay" char="?" char1="#"/>
<Detect2Chars attribute="Operator" context="#stay" char="?" char1="-"/>
<Detect2Chars attribute="Operator" context="#stay" char="?" char1="|"/>
+ <RegExpr attribute="Preprocessor" context="Preprocessor" String="@@?[^@ \t\r\n]" column="0"/>
+ <RegExpr attribute="Operator" context="MultiLineString" String="\$([^\$\n\r]*)\$"/>
+ <AnyChar attribute="Operator" context="#stay" String="+-*/=%^!&lt;&gt;&amp;|@~#"/>
</context>
<context name="CreateFunction" attribute="Normal Text" lineEndContext="#stay">
<RegExpr attribute="Function" context="FunctionBody" String="\$([^\$\n\r]*)\$"/>
@@ -1033,7 +1033,7 @@
<context name="String" attribute="String" lineEndContext="#stay">
<LineContinue attribute="String" context="#pop"/>
<HlCStringChar attribute="String Char" context="#stay"/>
- <DetectChar attribute="Symbol" context="#stay" char="&#38;"/>
+ <DetectChar attribute="Symbol" context="#stay" char="&amp;"/>
<DetectChar attribute="String" context="#pop" char="'"/>
</context>
<context name="SingleLineComment" attribute="Comment" lineEndContext="#pop">
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="+-*/=&lt;&gt;"/>
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="&parameter;" />
+ <!-- unrecheable by Regex=&identifier; in "JSBase##JavaScript" included by "Normal Pt2"
+ <RegExpr context="#stay" attribute="Parameter" String="&parameter;" />-->
</context>
<context name="ConditionalExpressionEnd" attribute="Normal Text" lineEndContext="#stay">
<AnyChar context="#pop" String=";,}])" lookAhead="true" />
@@ -579,7 +580,6 @@
<RegExpr context="#stay" attribute="Object Member" String="&identifier;(?=&objectPoint;)" />
<RegExpr context="#pop!NoRegExp" attribute="Object Member" String="&identifier;" />
<IncludeRules context="NoRegExp" />
- <DetectSpaces />
<!-- Generic functions -->
<keyword context="#pop!NoRegExp" attribute="Function Name" String="functions" />
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_:#&#37;@-]*">
- <!ENTITY varname "\b(?!(?:process|constant|signal|variable))([A-Za-z_][A-Za-z0-9_]*)\b">
- <!ENTITY bos "(\b)"> <!-- bol or space following -->
- <!ENTITY eos "\b"> <!-- eol or space following -->
- <!ENTITY noword "(?![\w$+-])"> <!-- no word, $, + or - following -->
- <!ENTITY label "((&varname;)\s*:\s*)?">
-
+ <!ENTITY varname "[A-Za-z_][A-Za-z0-9_]*">
+ <!ENTITY identifier "\b(?:[A-Za-z_][A-Za-z0-9_]*)\b|/(?:[^/]++(?://)?+)*+/">
+ <!ENTITY bos "\b"> <!-- bol or space following -->
]>
-<language name="VHDL" version="11" kateversion="5.0" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">
+<language name="VHDL" version="13" kateversion="5.62" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">
<highlighting>
<list name="keywordsToplevel">
<item>file</item>
<item>library</item>
<item>use</item>
+ <item>with</item>
</list>
<list name="keywords">
@@ -30,6 +28,7 @@
<item>block</item>
<item>body</item>
<item>bus</item>
+ <item>case</item>
<item>component</item>
<item>constant</item>
<item>context</item>
@@ -37,8 +36,9 @@
<item>default</item>
<item>disconnect</item>
<item>downto</item>
+ <item>else</item>
+ <item>elsif</item>
<item>end</item>
- <item>exit</item>
<item>fairness</item>
<item>falling_edge</item>
<item>file</item>
@@ -49,6 +49,7 @@
<item>generic</item>
<item>group</item>
<item>guarded</item>
+ <item>if</item>
<item>impure</item>
<item>inertial</item>
<item>is</item>
@@ -57,7 +58,6 @@
<item>literal</item>
<item>map</item>
<item>new</item>
- <item>next</item>
<item>null</item>
<item>of</item>
<item>on</item>
@@ -77,7 +77,6 @@
<item>reject</item>
<item>release</item>
<item>report</item>
- <item>return</item>
<item>rising_edge</item>
<item>select</item>
<item>sequence</item>
@@ -86,6 +85,7 @@
<item>shared</item>
<item>strong</item>
<item>subtype</item>
+ <item>then</item>
<item>to</item>
<item>transport</item>
<item>type</item>
@@ -125,11 +125,10 @@
<item>srl</item>
</list>
- <list name="if">
- <item>if</item>
- <item>else</item>
- <item>elsif</item>
- <item>then</item>
+ <list name="controls">
+ <item>exit</item>
+ <item>next</item>
+ <item>return</item>
</list>
<list name="signals">
@@ -146,11 +145,6 @@
<item>others</item>
</list>
- <list name="case">
- <item>case</item>
- <item>when</item>
- </list>
-
<list name="timeunits">
<item>fs</item>
<item>ps</item>
@@ -215,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="&lt;;:"/>
- <DetectChar attribute="Error" context="#stay" char=":" />
- <IncludeRules context="preDetection"/>
- <DetectChar attribute="Normal Text" context="#pop" char=")" endRegion="InstanceMapRegion"/>
- <DetectChar attribute="Normal Text" context="instanceInnerPar" char="("/>
- <IncludeRules context="generalDetection"/>
+ <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="&gt;" attribute="Operator" context="caseWhen2" beginRegion="CaseWhenRegion1"/>
- <IncludeRules context="preDetection"/>
- <RegExpr attribute="Control" insensitive="true"
- String="&bos;when&eos;"/>
- <RegExpr attribute="Name" insensitive="true" dynamic="true"
- String="&bos;%2&eos;"/>
- <IncludeRules context="proc_rules"/>
+ <context name="case_when" attribute="Normal Text" lineEndContext="#stay">
+ <Detect2Chars char="=" char1="&gt;" attribute="Operator" context="case_when2" beginRegion="CaseWhenRegion1"/>
+ <IncludeRules context="preExpression"/>
+ <WordDetect attribute="Control" insensitive="true" String="when"/>
+ <IncludeRules context="postExpression"/>
</context>
- <context name="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="[&amp;&gt;&lt;=:+-*/|`].,"/>
<DetectChar attribute="Vector" context="string" char="&quot;"/>
- <AnyChar attribute="Operator" context="#stay" String="[&amp;&gt;&lt;=:+\-*\/|].,"/>
<DetectChar attribute="Attribute" context="attribute" char="'"/>
+ <Int attribute="Integer" context="#stay"/>
+ </context>
+
+ <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="[&amp;&gt;&lt;=:+-*/|`].,"/>
+ <DetectChar attribute="Vector" context="string" char="&quot;"/>
+ <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=")=&lt;&gt;" lookAhead="true" />
+ <AnyChar attribute="Attribute" context="#pop" String=")=&lt;&gt;;" lookAhead="true" />
</context>
<context name="quot in att" attribute="Attribute" lineEndContext="#stay">
@@ -623,10 +618,145 @@
</context>
<context name="signal" attribute="Normal Text" lineEndContext="#stay">
- <IncludeRules context="preDetection"/>
- <DetectChar attribute="Normal Text" lookAhead="true" context="#pop" char=";" endRegion="sig"/>
- <IncludeRules context="generalDetection"/>
+ <IncludeRules context="preExpression"/>
+ <DetectChar attribute="Normal Text" context="#pop" char=";"/>
+ <IncludeRules context="postExpression"/>
+ </context>
+
+<!-- type -->
+ <context name="type" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="blank"/>
+ <WordDetect attribute="Signal" context="type_is" insensitive="1" String="is"/>
+ <DetectIdentifier attribute="Normal Text"/>
+ </context>
+
+ <context name="type_is" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop!signal">
+ <IncludeRules context="blank"/>
+ <WordDetect attribute="Keyword" context="#pop#pop!type_record" insensitive="1" String="record" beginRegion="sig"/>
+ <WordDetect attribute="Keyword" context="#pop#pop!type_range" insensitive="1" String="range"/>
+ </context>
+
+<!-- type range -->
+ <context name="type_range" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="preExpression"/>
+ <WordDetect attribute="Control" context="type_range_units" insensitive="1" String="units" beginRegion="UnitRegion1"/>
+ <IncludeRules context="postExpression"/>
+ </context>
+
+ <context name="type_range_units" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="type_range_units_decl">
+ <RegExpr attribute="Control" context="#pop#pop" insensitive="1"
+ String="&bos;end\s+units(\s+&varname;)?\s*;" endRegion="UnitRegion1"/>
+ <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"
+ String="end" endRegion="GenerateRegion1"/>
+ </context>
+
+ <context name="type_range_units_decl" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="preExpression"/>
+ <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>
+ <IncludeRules context="postExpression"/>
+ </context>
+
+<!-- type record -->
+ <context name="type_record" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="type_record_body">
+ <IncludeRules context="blank"/>
+ <RegExpr attribute="Keyword" context="#pop" insensitive="1"
+ String="&bos;end\s+record;" endRegion="sig"/>
+ <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+ String="end" endRegion="sig"/>
+ </context>
+
+ <context name="type_record_body" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="blank"/>
+ <DetectChar attribute="Normal Text" context="#stay" char=";"/>
+ <DetectChar attribute="Operator" context="#stay" char=":"/>
+ <WordDetect attribute="Keyword" context="#pop" insensitive="true" String="end" lookAhead="1"/>
+ <DetectIdentifier attribute="Normal Text"/>
+ </context>
+
+<!-- function -->
+ <context name="function" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="function_name">
+ <IncludeRules context="blank"/>
+ <DetectIdentifier attribute="Name" context="function_name"/>
+ </context>
+
+ <context name="function_name" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="preExpression"/>
+ <WordDetect attribute="Control" context="function_return" insensitive="true" String="return"/>
+ <IncludeRules context="postExpression"/>
+ </context>
+
+ <context name="function_return" attribute="Normal Text" lineEndContext="#stay">
+ <DetectSpaces attribute="Normal Text" context="#stay"/>
+ <DetectChar attribute="Normal Text" context="#pop#pop#pop" char=";"/>
+ <WordDetect attribute="Keyword" context="#pop#pop#pop!function_is" insensitive="1" String="is" beginRegion="FunctionRegion1"/>
+ <keyword attribute="Data Type" context="#stay" String="types"/>
+ </context>
+
+ <context name="function_is" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="preExpression"/>
+ <WordDetect attribute="Redirection" context="#pop!function_begin" insensitive="true"
+ String="begin" beginRegion="FunctionRegion1"/>
+ <keyword attribute="Signal" context="signal" String="signals"/>
+ <IncludeRules context="postExpression"/>
</context>
+
+ <context name="function_begin" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt">
+ <RegExpr attribute="Redirection" context="#pop" insensitive="1"
+ String="&bos;end(\s+function\b)?(\s+(&varname;|&quot;[^&quot;]+&quot;))?\s*;" endRegion="FunctionRegion1"/>
+ <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+ String="end" endRegion="FunctionRegion1"/>
+ </context>
+
+<!-- procedure -->
+ <context name="procedure" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="blank"/>
+ <DetectIdentifier attribute="Name" context="procedure_name"/>
+ </context>
+
+ <context name="procedure_name" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="preExpression"/>
+ <WordDetect attribute="Control" context="#pop#pop!procedure_is" insensitive="true" String="is"/>
+ <keyword attribute="Signal" context="signal" String="signals"/>
+ <IncludeRules context="postExpression"/>
+ </context>
+
+ <context name="procedure_is" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="preExpression"/>
+ <WordDetect attribute="Redirection" context="#pop!procedure_begin" insensitive="true"
+ String="begin" endRegion="ProcedureRegion1"/>
+ <keyword attribute="Signal" context="signal" String="signals"/>
+ <IncludeRules context="postExpression"/>
+ </context>
+
+ <context name="procedure_begin" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt">
+ <RegExpr attribute="Redirection" context="#pop" insensitive="1"
+ String="&bos;end(\s+procedure)?(\s+&varname;)?\s*;" endRegion="ProcedureRegion1"/>
+ <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+ String="end" endRegion="ProcedureRegion1"/>
+ </context>
+
+<!-- component -->
+ <context name="component" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+ <IncludeRules context="blank"/>
+ <RegExpr attribute="Name" context="component_main" beginRegion="ComponentRegion1"
+ String="(&identifier;)"/>
+ </context>
+
+ <context name="component_main" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="component_body">
+ <RegExpr attribute="Control" context="#pop#pop" dynamic="1" insensitive="1"
+ String="&bos;end\s+component\b(\s+%1)?\s*;" endRegion="ComponentRegion1"/>
+ <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"
+ String="end" endRegion="ComponentRegion1"/>
+ </context>
+
+ <context name="component_body" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="preExpression"/>
+ <WordDetect attribute="Keyword" context="#stay" insensitive="true" String="generic"/>
+ <WordDetect attribute="Keyword" context="#stay" insensitive="true" String="port"/>
+ <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>
+ <IncludeRules context="postExpression"/>
+ </context>
+
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
@@ -634,7 +764,6 @@
<itemData name="Data Type" defStyleNum="dsDataType"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Integer" defStyleNum="dsDecVal"/>
- <itemData name="Bit" defStyleNum="dsChar"/>
<itemData name="Reference" defStyleNum="dsFunction"/>
<itemData name="Error" defStyleNum="dsError" bold="1"/>
<itemData name="Vector" defStyleNum="dsString"/>