skylighting-core 0.14.4 → 0.14.5
raw patch · 26 files changed
+4558/−1939 lines, 26 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- changelog.md +9/−0
- skylighting-core.cabal +1/−1
- test/expected/abc.ruby.native +17/−14
- xml/bash.xml +36/−14
- xml/cmake.xml +239/−34
- xml/commonlisp.xml +1/−2
- xml/isocpp.xml +6/−6
- xml/javascript-react.xml +1/−1
- xml/json.xml +2/−2
- xml/julia.xml +2/−2
- xml/latex.xml +3/−3
- xml/lua.xml +1/−1
- xml/markdown.xml +9/−4
- xml/modelines.xml +21/−28
- xml/nix.xml +28/−6
- xml/odin.xml +290/−0
- xml/orgmode.xml +211/−2
- xml/php.xml +2/−2
- xml/python.xml +2232/−876
- xml/rhtml.xml +1/−1
- xml/ruby.xml +1390/−918
- xml/swift.xml +26/−10
- xml/xml.xml +2/−1
- xml/yaml.xml +2/−2
- xml/zig.xml +2/−1
- xml/zsh.xml +24/−8
changelog.md view
@@ -1,5 +1,14 @@ # Revision history for skylighting and skylighting-core +## 0.14.5++ * Update xml syntax definitions for bash, cmake, commonlisp, isocpp,+ javascript-react, julia, latex, lua, markdown, modelines, nix, orgmode,+ php, python, rhtml, ruby, swift, xml, yaml, zig, zsh. Add odin (required+ by orgmode).++ * Update JSON syntax definition from upstream. (#203)+ ## 0.14.4 * Add `gdscript`, `typst`, `tlaplus` syntax (#184, #199).
skylighting-core.cabal view
@@ -1,5 +1,5 @@ name: skylighting-core-version: 0.14.4+version: 0.14.5 synopsis: syntax highlighting library description: Skylighting is a syntax highlighting library. It derives its tokenizers from XML syntax
test/expected/abc.ruby.native view
@@ -1,10 +1,11 @@ [ [ ( NormalTok , "words " )- , ( KeywordTok , "=" )- , ( OtherTok , " %w(" )- , ( StringTok , "A BaRK BOoK tREaT COmMOn SqUAD CoNfuSE" )+ , ( OperatorTok , "=" )+ , ( NormalTok , " " )+ , ( OtherTok , "%w(" )+ , ( VerbatimStringTok , "A BaRK BOoK tREaT COmMOn SqUAD CoNfuSE" ) , ( OtherTok , ")" ) , ( NormalTok , " " )- , ( KeywordTok , "<<" )+ , ( OperatorTok , "<<" ) , ( NormalTok , " " ) , ( StringTok , "\"\"" ) ]@@ -14,36 +15,38 @@ , ( NormalTok , " " ) , ( ControlFlowTok , "do" ) , ( NormalTok , " " )- , ( KeywordTok , "|" )+ , ( OperatorTok , "|" ) , ( NormalTok , "word" )- , ( KeywordTok , "|" )+ , ( OperatorTok , "|" ) ] , [ ( NormalTok , " blocks " )- , ( KeywordTok , "=" )+ , ( OperatorTok , "=" ) , ( NormalTok , " " ) , ( StringTok , "\"BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM\"" ) ] , [ ( NormalTok , " res " )- , ( KeywordTok , "=" )+ , ( OperatorTok , "=" ) , ( NormalTok , " word" ) , ( AttributeTok , ".each_char.all?" )- , ( KeywordTok , "{|" )+ , ( OperatorTok , "{|" ) , ( NormalTok , "c" )- , ( KeywordTok , "|" )+ , ( OperatorTok , "|" ) , ( NormalTok , " blocks" ) , ( AttributeTok , ".sub!" ) , ( NormalTok , "(" )- , ( SpecialStringTok , "/\\w?" )+ , ( SpecialStringTok , "/" )+ , ( SpecialCharTok , "\\w" )+ , ( SpecialStringTok , "?" ) , ( SpecialCharTok , "#{" ) , ( NormalTok , "c" )- , ( SpecialCharTok , "}" )- , ( SpecialStringTok , "\\w?/i" )+ , ( SpecialCharTok , "}\\w" )+ , ( SpecialStringTok , "?/i" ) , ( NormalTok , ", " ) , ( StringTok , "\"\"" ) , ( NormalTok , ")" )- , ( KeywordTok , "}" )+ , ( OperatorTok , "}" ) , ( NormalTok , " " ) , ( CommentTok , "#regexps can be interpolated like strings" ) ]
xml/bash.xml view
@@ -56,17 +56,22 @@ <!ENTITY arithmetic_as_subshell "\(((?:[^`'"()$]++|\$\{[^`'"(){}$]+\}|\$(?=[^{`'"()])|`[^`]*+`|\((?1)(?:[)]|(?=['"])))++)(?:[)](?=$|[^)])|["'])"> - <!ENTITY unary_operators "-[abcdefghkprstuwxGLNOSovRnz]&eos;">- <!ENTITY binary_operators "(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)&eos;">+ <!ENTITY unary_operators "-[abcdefghkprstuwxGLNOSovRnz](?=\\?$|[ &tab;])">+ <!ENTITY binary_operators "(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)(?=\\?$|[ &tab;])"> <!ENTITY dblbracket_close "\]\](?=($|[ &tab;;|&)]))"> <!ENTITY weakDeliminatorSymbols "^%#[]$.{}:-/"> ]> +<!--+https://git.savannah.gnu.org/cgit/bash.git/tree/NEWS+current: bash-5.2+-->+ <language name="Bash"- version="51"+ version="53" kateversion="5.79" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;*.exlib;*.exheres-0;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD"@@ -872,6 +877,7 @@ <!-- FindPathThenPopInAlternateValue consumes path in ${xx:here}--> <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPopInAlternateValue">+ <DetectChar attribute="Variable" char="&"/> <Detect2Chars context="#pop!PathThenPopInAlternateValue" char="?" char1="(" lookAhead="1"/> <Detect2Chars context="#pop!PathThenPopInAlternateValue" char="*" char1="(" lookAhead="1"/> <Detect2Chars context="#pop!PathThenPopInAlternateValue" char="+" char1="(" lookAhead="1"/>@@ -1239,12 +1245,12 @@ <IncludeRules context="Start"/> </context> - <!-- StringEsc eats till ', but escaping many characters -->+ <!-- StringEsc eats till ', but escaping many characters in $'...' --> <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc"> <DetectSpaces attribute="String SingleQ"/> <DetectIdentifier attribute="String SingleQ"/> <DetectChar attribute="String SingleQ" context="#pop" char="'"/>- <RegExpr attribute="String Escape" context="#stay" String="\\(?:[abefnrtv\\']|[0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)"/>+ <RegExpr attribute="String Escape" context="#stay" String="\\(?:[abeEfnrtv\\'"?]|[0-7]{1,3}|x[A-Fa-f0-9]{1,2}|u[A-Fa-f0-9]{1,4}|U[A-Fa-f0-9]{1,8}|c.)"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="FindWord">@@ -1368,7 +1374,7 @@ <!-- called as soon as ${xxx@ is encoutered --> <context attribute="Normal Text" lineEndContext="#stay" name="VarTransformation" fallthroughContext="#pop!VarError"> <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>- <AnyChar attribute="Parameter Expansion" context="#stay" String="UuLQEPAKa"/>+ <AnyChar attribute="Parameter Expansion" context="#stay" String="UuLQEPAKak"/> </context> <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion">@@ -1495,13 +1501,19 @@ <IncludeRules context="FindNormalText"/> </context> - <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2" fallthroughContext="ExprBracketValue">+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2" fallthroughContext="#pop!ExprBracketParam2_Value">+ <LineContinue attribute="Escape" context="SkipSpaces"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2_Value" fallthroughContext="ExprBracketValue"> <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam3"/> <AnyChar context="TestMaybeBinary" String="-=!" lookAhead="1"/> <IncludeRules context="FindExprBracketEnd"/> </context> - <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3" fallthroughContext="ExprBracketValue">+ <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3" fallthroughContext="#pop!ExprBracketParam3_Value">+ <LineContinue attribute="Escape" context="SkipSpaces"/>+ </context>+ <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3_Value" fallthroughContext="ExprBracketValue"> <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketFinal"/> <IncludeRules context="FindExprBracketEnd"/> </context>@@ -1525,8 +1537,12 @@ <RegExpr attribute="Expression" context="#pop" String="&binary_operators;"/> </context> + <context attribute="Normal Text" lineEndContext="#pop" name="SkipSpaces" fallthroughContext="#pop">+ <DetectSpaces context="#pop"/>+ </context> - <!-- ExprDblBracket consumes an expression till ]] -->++ <!-- ExprDblBracket consumes an expression till ]] in [[ ... ]] --> <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket" fallthroughContext="#pop!ExprDblBracketNot"> <DetectSpaces attribute="Normal Text" context="#stay"/> <DetectChar attribute="Comment" context="Comment" char="#"/>@@ -1641,7 +1657,10 @@ <DetectChar attribute="Operator" context="ExprDblBracketValuePattern" char=")" endRegion="expression" beginRegion="subshell"/> </context> - <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2" fallthroughContext="ExprDblBracketValuePattern">+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2" fallthroughContext="#pop!ExprDblBracketParam2_Value">+ <LineContinue attribute="Escape" context="SkipSpaces"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2_Value" fallthroughContext="ExprDblBracketValuePattern"> <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/> <AnyChar context="TestMaybeBinary2" String="-=!" lookAhead="1"/> <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="<>"/>@@ -1657,7 +1676,10 @@ <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/> </context> - <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3" fallthroughContext="ExprDblBracketValuePattern">+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3" fallthroughContext="#pop!ExprDblBracketParam3_Value">+ <LineContinue attribute="Escape" context="SkipSpaces"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3_Value" fallthroughContext="ExprDblBracketValuePattern"> <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/> <IncludeRules context="FindExprDblBracketEnd"/> <AnyChar attribute="Error" context="#stay" String="<>"/>@@ -1773,7 +1795,7 @@ <DetectChar attribute="Error" context="#pop" char="]"/> </context> - <!-- SubShell consumes shell input till ) -->+ <!-- SubShell consumes shell input till ) in (...) --> <context attribute="Normal Text" lineEndContext="#stay" name="SubShell" fallthroughContext="Command"> <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell"/> <IncludeRules context="Start"/>@@ -1788,7 +1810,7 @@ <IncludeRules context="NormalOption"/> </context> - <!-- AssignArray consumes everything till ), marking assignments -->+ <!-- AssignArray consumes everything till ) in var=(...), marking assignments --> <context attribute="Normal Text" lineEndContext="#stay" name="AssignArray" fallthroughContext="NormalOption"> <DetectSpaces attribute="Normal Text" context="#stay"/> <DetectChar attribute="Comment" context="Comment" char="#"/>@@ -1807,7 +1829,7 @@ <IncludeRules context="Start"/> </context> - <!-- Subscript consumes anything till ], marks as Variable -->+ <!-- Subscript consumes anything till ] in [ ... ], marks as Variable --> <context attribute="Normal Text" lineEndContext="#stay" name="Subscript" fallthroughContext="#pop!Subscript2"> <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/> <AnyChar attribute="Decimal" context="#stay" String="0123456789"/>
xml/cmake.xml view
@@ -18,14 +18,13 @@ --> <!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT *****- cd data/generators- # increase version of cmake.xml.tpl then- ./generate-cmake-syntax.py cmake.yaml > ../syntax/cmake.xml+ $ cd data/generators+ $ ./generate-cmake-syntax.py cmake.yaml > ../syntax/cmake.xml --> <language name="CMake"- version="50"+ version="53" kateversion="5.62" section="Other" extensions="CMakeLists.txt;*.cmake;*.cmake.in"@@ -44,6 +43,7 @@ <item>cmake_minimum_required</item> <item>cmake_parse_arguments</item> <item>cmake_path</item>+ <item>cmake_pkg_config</item> <item>cmake_policy</item> <item>configure_file</item> <item>continue</item>@@ -214,6 +214,7 @@ <item>DEFER</item> <item>DIRECTORY</item> <item>EVAL</item>+ <item>EXIT</item> <item>GET_CALL</item> <item>GET_CALL_IDS</item> <item>GET_MESSAGE_LOG_LEVEL</item>@@ -277,6 +278,31 @@ <item>TO_CMAKE_PATH_LIST</item> <item>TO_NATIVE_PATH_LIST</item> </list>+ <list name="cmake_pkg_config_nargs">+ <item>ALLOW_SYSTEM_INCLUDES</item>+ <item>ALLOW_SYSTEM_LIBS</item>+ <item>DISABLE_UNINSTALLED</item>+ <item>ENV_MODE</item>+ <item>EXACT</item>+ <item>EXTRACT</item>+ <item>PC_LIBDIR</item>+ <item>PC_PATH</item>+ <item>PC_SYSROOT_DIR</item>+ <item>QUIET</item>+ <item>REQUIRED</item>+ <item>STRICTNESS</item>+ <item>SYSTEM_INCLUDE_DIRS</item>+ <item>SYSTEM_LIBRARY_DIRS</item>+ <item>TOP_BUILD_DIR</item>+ </list>+ <list name="cmake_pkg_config_sargs">+ <item>BEST_EFFORT</item>+ <item>FDO</item>+ <item>IGNORE</item>+ <item>PERMISSIVE</item>+ <item>PKGCONF</item>+ <item>STRICT</item>+ </list> <list name="cmake_policy_nargs"> <item>GET</item> <item>POP</item>@@ -315,8 +341,11 @@ <item>IN_LIST</item> <item>IS_ABSOLUTE</item> <item>IS_DIRECTORY</item>+ <item>IS_EXECUTABLE</item> <item>IS_NEWER_THAN</item>+ <item>IS_READABLE</item> <item>IS_SYMLINK</item>+ <item>IS_WRITABLE</item> <item>LESS</item> <item>LESS_EQUAL</item> <item>MATCHES</item>@@ -480,6 +509,7 @@ <item>TIMESTAMP</item> <item>TLS_CAINFO</item> <item>TLS_VERIFY</item>+ <item>TLS_VERSION</item> <item>TOUCH</item> <item>TOUCH_NOCREATE</item> <item>TO_CMAKE_PATH</item>@@ -490,6 +520,7 @@ <item>USE_SOURCE_PERMISSIONS</item> <item>UTC</item> <item>VERBOSE</item>+ <item>WORKING_DIRECTORY</item> <item>WRITE</item> </list> <list name="file_sargs">@@ -848,6 +879,7 @@ <item>APPEND</item> <item>ARGS</item> <item>BYPRODUCTS</item>+ <item>CODEGEN</item> <item>COMMAND</item> <item>COMMAND_EXPAND_LISTS</item> <item>COMMENT</item>@@ -970,11 +1002,17 @@ <list name="export_nargs"> <item>ANDROID_MK</item> <item>APPEND</item>+ <item>AUTO</item>+ <item>ENABLED</item> <item>EXPORT</item> <item>EXPORT_LINK_INTERFACE_LIBRARIES</item> <item>FILE</item> <item>NAMESPACE</item>+ <item>PACKAGE_DEPENDENCY</item>+ <item>SETUP</item>+ <item>TARGET</item> <item>TARGETS</item>+ <item>XCFRAMEWORK_LOCATION</item> </list> <list name="get_source_file_property_nargs"> <item>DIRECTORY</item>@@ -1047,14 +1085,28 @@ <item>USE_SOURCE_PERMISSIONS</item> </list> <list name="install_sargs">+ <item>BIN</item>+ <item>DATA</item>+ <item>DOC</item> <item>GROUP_EXECUTE</item> <item>GROUP_READ</item> <item>GROUP_WRITE</item>+ <item>INCLUDE</item>+ <item>INFO</item>+ <item>LIB</item>+ <item>LIBEXEC</item>+ <item>LOCALE</item>+ <item>LOCALSTATE</item>+ <item>MAN</item> <item>OWNER_EXECUTE</item> <item>OWNER_READ</item> <item>OWNER_WRITE</item>+ <item>RUNSTATE</item>+ <item>SBIN</item> <item>SETGID</item> <item>SETUID</item>+ <item>SHAREDSTATE</item>+ <item>SYSCONF</item> <item>WORLD_EXECUTE</item> <item>WORLD_READ</item> <item>WORLD_WRITE</item>@@ -1358,8 +1410,10 @@ <item>EXCLUDE_FIXTURE</item> <item>EXCLUDE_FIXTURE_CLEANUP</item> <item>EXCLUDE_FIXTURE_SETUP</item>+ <item>EXCLUDE_FROM_FILE</item> <item>EXCLUDE_LABEL</item> <item>INCLUDE</item>+ <item>INCLUDE_FROM_FILE</item> <item>INCLUDE_LABEL</item> <item>PARALLEL_LEVEL</item> <item>QUIET</item>@@ -1468,6 +1522,28 @@ <item>SameMajorVersion</item> <item>SameMinorVersion</item> </list>+ <list name="generate_apple_platform_selection_file_nargs">+ <item>INSTALL_DESTINATION</item>+ <item>INSTALL_PREFIX</item>+ <item>IOS_INCLUDE_FILE</item>+ <item>IOS_SIMULATOR_INCLUDE_FILE</item>+ <item>MACOS_INCLUDE_FILE</item>+ <item>TVOS_INCLUDE_FILE</item>+ <item>TVOS_SIMULATOR_INCLUDE_FILE</item>+ <item>VISIONOS_INCLUDE_FILE</item>+ <item>VISIONOS_SIMULATOR_INCLUDE_FILE</item>+ <item>WATCHOS_INCLUDE_FILE</item>+ <item>WATCHOS_SIMULATOR_INCLUDE_FILE</item>+ </list>+ <list name="generate_apple_architecture_selection_file_nargs">+ <item>ERROR_VARIABLE</item>+ <item>INSTALL_DESTINATION</item>+ <item>INSTALL_PREFIX</item>+ <item>SINGLE_ARCHITECTURES</item>+ <item>SINGLE_ARCHITECTURE_INCLUDE_FILES</item>+ <item>UNIVERSAL_ARCHITECTURES</item>+ <item>UNIVERSAL_INCLUDE_FILE</item>+ </list> <list name="cmake_print_properties_nargs"> <item>CACHE_ENTRIES</item> <item>DIRECTORIES</item>@@ -1667,6 +1743,7 @@ <item>TIMEOUT</item> <item>TLS_CAINFO</item> <item>TLS_VERIFY</item>+ <item>TLS_VERSION</item> <item>TMP_DIR</item> <item>UPDATE_COMMAND</item> <item>UPDATE_DISCONNECTED</item>@@ -1878,6 +1955,7 @@ <item>WORKING_DIRECTORY</item> </list> <list name="gtest_discover_tests_nargs">+ <item>DISCOVERY_EXTRA_ARGS</item> <item>DISCOVERY_MODE</item> <item>DISCOVERY_TIMEOUT</item> <item>EXTRA_ARGS</item>@@ -2123,7 +2201,9 @@ <item>CABLE_TCL_LIBRARY</item> <item>CMAKE_ABSOLUTE_DESTINATION_FILES</item> <item>CMAKE_ADD_CUSTOM_COMMAND_DEPENDS_EXPLICIT_ONLY</item>+ <item>CMAKE_ADSP_ROOT</item> <item>CMAKE_AIX_EXPORT_ALL_SYMBOLS</item>+ <item>CMAKE_AIX_SHARED_LIBRARY_ARCHIVE</item> <item>CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS</item> <item>CMAKE_ANDROID_API</item> <item>CMAKE_ANDROID_API_MIN</item>@@ -2165,7 +2245,6 @@ <item>CMAKE_AUTOMOC_EXECUTABLE</item> <item>CMAKE_AUTOMOC_MOC_OPTIONS</item> <item>CMAKE_AUTOMOC_PATH_PREFIX</item>- <item>CMAKE_AUTOMOC_RELAXED_MODE</item> <item>CMAKE_AUTORCC</item> <item>CMAKE_AUTORCC_EXECUTABLE</item> <item>CMAKE_AUTORCC_OPTIONS</item>@@ -2173,7 +2252,6 @@ <item>CMAKE_AUTOUIC_EXECUTABLE</item> <item>CMAKE_AUTOUIC_OPTIONS</item> <item>CMAKE_AUTOUIC_SEARCH_PATHS</item>- <item>CMAKE_BACKWARDS_COMPATIBILITY</item> <item>CMAKE_BINARY_DIR</item> <item>CMAKE_BUILD_RPATH</item> <item>CMAKE_BUILD_RPATH_USE_ORIGIN</item>@@ -2195,9 +2273,6 @@ <item>CMAKE_COLOR_MAKEFILE</item> <item>CMAKE_COMMAND</item> <item>CMAKE_COMPILER_2005</item>- <item>CMAKE_COMPILER_IS_GNUCC</item>- <item>CMAKE_COMPILER_IS_GNUCXX</item>- <item>CMAKE_COMPILER_IS_GNUG77</item> <item>CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY</item> <item>CMAKE_COMPILE_WARNING_AS_ERROR</item> <item>CMAKE_CONFIGURATION_TYPES</item>@@ -2209,7 +2284,6 @@ <item>CMAKE_CUDA_ARCHITECTURES</item> <item>CMAKE_CUDA_COMPILE_FEATURES</item> <item>CMAKE_CUDA_EXTENSIONS</item>- <item>CMAKE_CUDA_HOST_COMPILER</item> <item>CMAKE_CUDA_LINK_NO_PIE_SUPPORTED</item> <item>CMAKE_CUDA_LINK_PIE_SUPPORTED</item> <item>CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS</item>@@ -2265,10 +2339,10 @@ <item>CMAKE_EXECUTE_PROCESS_COMMAND_ECHO</item> <item>CMAKE_EXE_LINKER_FLAGS</item> <item>CMAKE_EXE_LINKER_FLAGS_INIT</item>+ <item>CMAKE_EXPORT_BUILD_DATABASE</item> <item>CMAKE_EXPORT_COMPILE_COMMANDS</item> <item>CMAKE_EXPORT_NO_PACKAGE_REGISTRY</item> <item>CMAKE_EXPORT_PACKAGE_REGISTRY</item>- <item>CMAKE_EXTRA_GENERATOR</item> <item>CMAKE_EXTRA_INCLUDE_FILES</item> <item>CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES</item> <item>CMAKE_FIND_APPBUNDLE</item>@@ -2280,8 +2354,6 @@ <item>CMAKE_FIND_LIBRARY_SUFFIXES</item> <item>CMAKE_FIND_NO_INSTALL_PREFIX</item> <item>CMAKE_FIND_PACKAGE_NAME</item>- <item>CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY</item>- <item>CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY</item> <item>CMAKE_FIND_PACKAGE_PREFER_CONFIG</item> <item>CMAKE_FIND_PACKAGE_REDIRECTS_DIR</item> <item>CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS</item>@@ -2339,6 +2411,7 @@ <item>CMAKE_HIP_STANDARD_REQUIRED</item> <item>CMAKE_HOST_APPLE</item> <item>CMAKE_HOST_BSD</item>+ <item>CMAKE_HOST_EXECUTABLE_SUFFIX</item> <item>CMAKE_HOST_LINUX</item> <item>CMAKE_HOST_SOLARIS</item> <item>CMAKE_HOST_SYSTEM</item>@@ -2424,12 +2497,14 @@ <item>CMAKE_LIBRARY_OUTPUT_DIRECTORY</item> <item>CMAKE_LIBRARY_PATH</item> <item>CMAKE_LIBRARY_PATH_FLAG</item>+ <item>CMAKE_LINKER_TYPE</item> <item>CMAKE_LINK_DEF_FILE_FLAG</item> <item>CMAKE_LINK_DEPENDS_NO_SHARED</item> <item>CMAKE_LINK_DEPENDS_USE_LINKER</item> <item>CMAKE_LINK_DIRECTORIES_BEFORE</item> <item>CMAKE_LINK_INTERFACE_LIBRARIES</item> <item>CMAKE_LINK_LIBRARIES_ONLY_TARGETS</item>+ <item>CMAKE_LINK_LIBRARIES_STRATEGY</item> <item>CMAKE_LINK_LIBRARY_FILE_FLAG</item> <item>CMAKE_LINK_LIBRARY_FLAG</item> <item>CMAKE_LINK_LIBRARY_SUFFIX</item>@@ -2485,6 +2560,28 @@ <item>CMAKE_PCH_INSTANTIATE_TEMPLATES</item> <item>CMAKE_PCH_WARN_INVALID</item> <item>CMAKE_PDB_OUTPUT_DIRECTORY</item>+ <item>CMAKE_PKG_CONFIG_ALLOW_SYS_INCLUDES</item>+ <item>CMAKE_PKG_CONFIG_ALLOW_SYS_LIBS</item>+ <item>CMAKE_PKG_CONFIG_CFLAGS</item>+ <item>CMAKE_PKG_CONFIG_COMPILE_OPTIONS</item>+ <item>CMAKE_PKG_CONFIG_CONFLICTS</item>+ <item>CMAKE_PKG_CONFIG_DESCRIPTION</item>+ <item>CMAKE_PKG_CONFIG_DISABLE_UNINSTALLED</item>+ <item>CMAKE_PKG_CONFIG_INCLUDES</item>+ <item>CMAKE_PKG_CONFIG_LIBDIRS</item>+ <item>CMAKE_PKG_CONFIG_LIBNAMES</item>+ <item>CMAKE_PKG_CONFIG_LIBS</item>+ <item>CMAKE_PKG_CONFIG_LINK_OPTIONS</item>+ <item>CMAKE_PKG_CONFIG_NAME</item>+ <item>CMAKE_PKG_CONFIG_PC_LIB_DIRS</item>+ <item>CMAKE_PKG_CONFIG_PC_PATH</item>+ <item>CMAKE_PKG_CONFIG_PKGCONF_INCLUDES</item>+ <item>CMAKE_PKG_CONFIG_PROVIDES</item>+ <item>CMAKE_PKG_CONFIG_REQUIRES</item>+ <item>CMAKE_PKG_CONFIG_SYSROOT_DIR</item>+ <item>CMAKE_PKG_CONFIG_SYS_INCLUDE_DIRS</item>+ <item>CMAKE_PKG_CONFIG_SYS_LIB_DIRS</item>+ <item>CMAKE_PKG_CONFIG_TOP_BUILD_DIR</item> <item>CMAKE_PLATFORM_NO_VERSIONED_SONAME</item> <item>CMAKE_POSITION_INDEPENDENT_CODE</item> <item>CMAKE_PREFIX_PATH</item>@@ -2505,6 +2602,7 @@ <item>CMAKE_REQUIRED_FLAGS</item> <item>CMAKE_REQUIRED_INCLUDES</item> <item>CMAKE_REQUIRED_LIBRARIES</item>+ <item>CMAKE_REQUIRED_LINK_DIRECTORIES</item> <item>CMAKE_REQUIRED_LINK_OPTIONS</item> <item>CMAKE_REQUIRED_QUIET</item> <item>CMAKE_ROOT</item>@@ -2523,6 +2621,7 @@ <item>CMAKE_SKIP_INSTALL_RPATH</item> <item>CMAKE_SKIP_INSTALL_RULES</item> <item>CMAKE_SKIP_RPATH</item>+ <item>CMAKE_SKIP_TEST_ALL_DEPENDENCY</item> <item>CMAKE_SOURCE_DIR</item> <item>CMAKE_STAGING_PREFIX</item> <item>CMAKE_STATIC_LIBRARY_PREFIX</item>@@ -2549,9 +2648,12 @@ <item>CMAKE_SYSTEM_PROCESSOR</item> <item>CMAKE_SYSTEM_PROGRAM_PATH</item> <item>CMAKE_SYSTEM_VERSION</item>+ <item>CMAKE_Swift_COMPILATION_MODE</item> <item>CMAKE_Swift_LANGUAGE_VERSION</item> <item>CMAKE_Swift_MODULE_DIRECTORY</item>+ <item>CMAKE_Swift_NUM_THREADS</item> <item>CMAKE_TASKING_TOOLSET</item>+ <item>CMAKE_TEST_LAUNCHER</item> <item>CMAKE_THREAD_LIBS_INIT</item> <item>CMAKE_THREAD_PREFER_PTHREAD</item> <item>CMAKE_TOOLCHAIN_FILE</item>@@ -2564,7 +2666,6 @@ <item>CMAKE_UNITY_BUILD_BATCH_SIZE</item> <item>CMAKE_USER_MAKE_RULES_OVERRIDE</item> <item>CMAKE_USE_PTHREADS_INIT</item>- <item>CMAKE_USE_RELATIVE_PATHS</item> <item>CMAKE_USE_SPROC_INIT</item> <item>CMAKE_USE_WIN32_THREADS_INIT</item> <item>CMAKE_VERBOSE_MAKEFILE</item>@@ -2600,6 +2701,7 @@ <item>CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER</item> <item>CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION</item> <item>CMAKE_VS_TARGET_FRAMEWORK_VERSION</item>+ <item>CMAKE_VS_USE_DEBUG_LIBRARIES</item> <item>CMAKE_VS_VERSION_BUILD_NUMBER</item> <item>CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION</item> <item>CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION</item>@@ -2687,6 +2789,7 @@ <item>CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY</item> <item>CPACK_DEBIAN_PACKAGE_HOMEPAGE</item> <item>CPACK_DEBIAN_PACKAGE_MAINTAINER</item>+ <item>CPACK_DEBIAN_PACKAGE_MULTIARCH</item> <item>CPACK_DEBIAN_PACKAGE_NAME</item> <item>CPACK_DEBIAN_PACKAGE_PREDEPENDS</item> <item>CPACK_DEBIAN_PACKAGE_PRIORITY</item>@@ -2749,6 +2852,7 @@ <item>CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME</item> <item>CPACK_IFW_PACKAGE_NAME</item> <item>CPACK_IFW_PACKAGE_PRODUCT_IMAGES</item>+ <item>CPACK_IFW_PACKAGE_PRODUCT_IMAGE_URLS</item> <item>CPACK_IFW_PACKAGE_PUBLISHER</item> <item>CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR</item> <item>CPACK_IFW_PACKAGE_RESOURCES</item>@@ -2852,10 +2956,15 @@ <item>CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME</item> <item>CPACK_NUGET_PACKAGE_NAME</item> <item>CPACK_NUGET_PACKAGE_OWNERS</item>+ <item>CPACK_NUGET_PACKAGE_README</item> <item>CPACK_NUGET_PACKAGE_RELEASE_NOTES</item>+ <item>CPACK_NUGET_PACKAGE_REPOSITORY_BRANCH</item>+ <item>CPACK_NUGET_PACKAGE_REPOSITORY_COMMIT</item>+ <item>CPACK_NUGET_PACKAGE_REPOSITORY_TYPE</item>+ <item>CPACK_NUGET_PACKAGE_REPOSITORY_URL</item> <item>CPACK_NUGET_PACKAGE_TAGS</item>+ <item>CPACK_NUGET_PACKAGE_TFMS</item> <item>CPACK_NUGET_PACKAGE_TITLE</item>- <item>CPACK_NUGET_PACKAGE_VERSION</item> <item>CPACK_OBJCOPY_EXECUTABLE</item> <item>CPACK_OBJDUMP_EXECUTABLE</item> <item>CPACK_OUTPUT_CONFIG_FILE</item>@@ -2987,6 +3096,7 @@ <item>CPACK_WIX_EXTENSIONS</item> <item>CPACK_WIX_EXTRA_OBJECTS</item> <item>CPACK_WIX_EXTRA_SOURCES</item>+ <item>CPACK_WIX_INSTALL_SCOPE</item> <item>CPACK_WIX_LICENSE_RTF</item> <item>CPACK_WIX_PATCH_FILE</item> <item>CPACK_WIX_PRODUCT_GUID</item>@@ -3033,7 +3143,6 @@ <item>CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION</item> <item>CTEST_CUSTOM_WARNING_EXCEPTION</item> <item>CTEST_CUSTOM_WARNING_MATCH</item>- <item>CTEST_CVS_CHECKOUT</item> <item>CTEST_CVS_COMMAND</item> <item>CTEST_CVS_UPDATE_OPTIONS</item> <item>CTEST_DROP_LOCATION</item>@@ -3062,7 +3171,6 @@ <item>CTEST_P4_UPDATE_OPTIONS</item> <item>CTEST_RESOURCE_SPEC_FILE</item> <item>CTEST_RUN_CURRENT_SCRIPT</item>- <item>CTEST_SCP_COMMAND</item> <item>CTEST_SITE</item> <item>CTEST_SOURCE_DIRECTORY</item> <item>CTEST_SUBMIT_INACTIVITY_TIMEOUT</item>@@ -3072,7 +3180,8 @@ <item>CTEST_SVN_UPDATE_OPTIONS</item> <item>CTEST_TEST_LOAD</item> <item>CTEST_TEST_TIMEOUT</item>- <item>CTEST_TRIGGER_SITE</item>+ <item>CTEST_TLS_VERIFY</item>+ <item>CTEST_TLS_VERSION</item> <item>CTEST_UPDATE_COMMAND</item> <item>CTEST_UPDATE_OPTIONS</item> <item>CTEST_UPDATE_VERSION_ONLY</item>@@ -3297,15 +3406,6 @@ <item>MPI_SKIP_GUESSING</item> <item>MPI_SUBARRAYS_SUPPORTED</item> <item>MSVC</item>- <item>MSVC10</item>- <item>MSVC11</item>- <item>MSVC12</item>- <item>MSVC14</item>- <item>MSVC60</item>- <item>MSVC70</item>- <item>MSVC71</item>- <item>MSVC80</item>- <item>MSVC90</item> <item>MSVC_IDE</item> <item>MSVC_TOOLSET_VERSION</item> <item>MSVC_VERSION</item>@@ -3337,6 +3437,7 @@ <item>OpenGL_GL_PREFERENCE</item> <item>OpenMP_Fortran_HAVE_OMPLIB_HEADER</item> <item>OpenMP_Fortran_HAVE_OMPLIB_MODULE</item>+ <item>OpenMP_RUNTIME_MSVC</item> <item>PACKAGE_FIND_NAME</item> <item>PACKAGE_FIND_VERSION_COMPLETE</item> <item>PACKAGE_FIND_VERSION_COUNT</item>@@ -3409,8 +3510,10 @@ <item>Python2_ARTIFACTS_INTERACTIVE</item> <item>Python2_COMPILER</item> <item>Python2_COMPILER_ID</item>+ <item>Python2_DEBUG_POSTFIX</item> <item>Python2_DOTNET_LAUNCHER</item> <item>Python2_EXECUTABLE</item>+ <item>Python2_EXECUTABLE_DEBUG</item> <item>Python2_FIND_ABI</item> <item>Python2_FIND_FRAMEWORK</item> <item>Python2_FIND_IMPLEMENTATIONS</item>@@ -3418,6 +3521,7 @@ <item>Python2_FIND_STRATEGY</item> <item>Python2_FIND_UNVERSIONED_NAMES</item> <item>Python2_FIND_VIRTUALENV</item>+ <item>Python2_INTERPRETER</item> <item>Python2_INTERPRETER_ID</item> <item>Python2_LINK_OPTIONS</item> <item>Python2_SITEARCH</item>@@ -3429,8 +3533,10 @@ <item>Python3_ARTIFACTS_INTERACTIVE</item> <item>Python3_COMPILER</item> <item>Python3_COMPILER_ID</item>+ <item>Python3_DEBUG_POSTFIX</item> <item>Python3_DOTNET_LAUNCHER</item> <item>Python3_EXECUTABLE</item>+ <item>Python3_EXECUTABLE_DEBUG</item> <item>Python3_FIND_ABI</item> <item>Python3_FIND_FRAMEWORK</item> <item>Python3_FIND_IMPLEMENTATIONS</item>@@ -3438,19 +3544,23 @@ <item>Python3_FIND_STRATEGY</item> <item>Python3_FIND_UNVERSIONED_NAMES</item> <item>Python3_FIND_VIRTUALENV</item>+ <item>Python3_INTERPRETER</item> <item>Python3_INTERPRETER_ID</item> <item>Python3_LINK_OPTIONS</item> <item>Python3_SITEARCH</item> <item>Python3_SITELIB</item> <item>Python3_SOABI</item>+ <item>Python3_SOSABI</item> <item>Python3_STDARCH</item> <item>Python3_STDLIB</item> <item>Python3_USE_STATIC_LIBS</item> <item>Python_ARTIFACTS_INTERACTIVE</item> <item>Python_COMPILER</item> <item>Python_COMPILER_ID</item>+ <item>Python_DEBUG_POSTFIX</item> <item>Python_DOTNET_LAUNCHER</item> <item>Python_EXECUTABLE</item>+ <item>Python_EXECUTABLE_DEBUG</item> <item>Python_FIND_ABI</item> <item>Python_FIND_FRAMEWORK</item> <item>Python_FIND_IMPLEMENTATIONS</item>@@ -3458,11 +3568,13 @@ <item>Python_FIND_STRATEGY</item> <item>Python_FIND_UNVERSIONED_NAMES</item> <item>Python_FIND_VIRTUALENV</item>+ <item>Python_INTERPRETER</item> <item>Python_INTERPRETER_ID</item> <item>Python_LINK_OPTIONS</item> <item>Python_SITEARCH</item> <item>Python_SITELIB</item> <item>Python_SOABI</item>+ <item>Python_SOSABI</item> <item>Python_STDARCH</item> <item>Python_STDLIB</item> <item>Python_USE_STATIC_LIBS</item>@@ -3529,8 +3641,16 @@ </list> <list name="deprecated-or-internal-variables">+ <item>CMAKE_AUTOMOC_RELAXED_MODE</item>+ <item>CMAKE_BACKWARDS_COMPATIBILITY</item>+ <item>CMAKE_COMPILER_IS_GNUCC</item>+ <item>CMAKE_COMPILER_IS_GNUCXX</item>+ <item>CMAKE_COMPILER_IS_GNUG77</item> <item>CMAKE_ENABLE_EXPORTS</item>+ <item>CMAKE_EXTRA_GENERATOR</item> <item>CMAKE_FILES_DIRECTORY</item>+ <item>CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY</item>+ <item>CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY</item> <item>CMAKE_HOME_DIRECTORY</item> <item>CMAKE_INTERNAL_PLATFORM_ABI</item> <item>CMAKE_IOS_INSTALL_COMBINED</item>@@ -3539,6 +3659,7 @@ <item>CMAKE_SUPPRESS_DEVELOPER_ERRORS</item> <item>CMAKE_SUPPRESS_DEVELOPER_WARNINGS</item> <item>CMAKE_SYSTEM_ARCH</item>+ <item>CMAKE_USE_RELATIVE_PATHS</item> <item>CMAKE_VS_INTEL_Fortran_PROJECT_VERSION</item> <item>CPACK_INSTALL_PREFIX</item> <item>CPACK_INSTALL_SCRIPT</item>@@ -3546,6 +3667,18 @@ <item>CPACK_PACKAGE_RELOCATABLE</item> <item>CPACK_TEMPORARY_DIRECTORY</item> <item>CPACK_TOPLEVEL_DIRECTORY</item>+ <item>CTEST_CVS_CHECKOUT</item>+ <item>CTEST_SCP_COMMAND</item>+ <item>CTEST_TRIGGER_SITE</item>+ <item>MSVC10</item>+ <item>MSVC11</item>+ <item>MSVC12</item>+ <item>MSVC14</item>+ <item>MSVC60</item>+ <item>MSVC70</item>+ <item>MSVC71</item>+ <item>MSVC80</item>+ <item>MSVC90</item> </list> <list name="environment-variables">@@ -3561,17 +3694,25 @@ <item>CMAKE_CONFIGURATION_TYPES</item> <item>CMAKE_CONFIG_TYPE</item> <item>CMAKE_CROSSCOMPILING_EMULATOR</item>+ <item>CMAKE_EXPORT_BUILD_DATABASE</item> <item>CMAKE_EXPORT_COMPILE_COMMANDS</item> <item>CMAKE_FRAMEWORK_PATH</item> <item>CMAKE_GENERATOR</item> <item>CMAKE_GENERATOR_INSTANCE</item> <item>CMAKE_GENERATOR_PLATFORM</item> <item>CMAKE_GENERATOR_TOOLSET</item>+ <item>CMAKE_INCLUDE_PATH</item> <item>CMAKE_INSTALL_MODE</item>+ <item>CMAKE_INSTALL_PREFIX</item>+ <item>CMAKE_LIBRARY_PATH</item>+ <item>CMAKE_MAXIMUM_RECURSION_DEPTH</item> <item>CMAKE_MSVCIDE_RUN_PATH</item> <item>CMAKE_NO_VERBOSE</item> <item>CMAKE_OSX_ARCHITECTURES</item> <item>CMAKE_PREFIX_PATH</item>+ <item>CMAKE_PROGRAM_PATH</item>+ <item>CMAKE_TLS_VERIFY</item>+ <item>CMAKE_TLS_VERSION</item> <item>CMAKE_TOOLCHAIN_FILE</item> <item>CSFLAGS</item> <item>CTEST_INTERACTIVE_DEBUG_MODE</item>@@ -3603,6 +3744,7 @@ <item>QTIFWDIR</item> <item>RC</item> <item>RCFLAGS</item>+ <item>SOURCE_DATE_EPOCH</item> <item>SSL_CERT_DIR</item> <item>SSL_CERT_FILE</item> <item>SWIFTC</item>@@ -3639,6 +3781,7 @@ <item>PACKAGES_FOUND</item> <item>PACKAGES_NOT_FOUND</item> <item>PREDEFINED_TARGETS_FOLDER</item>+ <item>PROPAGATE_TOP_LEVEL_INCLUDES_TO_TRY_COMPILE</item> <item>REPORT_UNDEFINED_PROPERTIES</item> <item>RULE_LAUNCH_COMPILE</item> <item>RULE_LAUNCH_CUSTOM</item>@@ -3688,7 +3831,9 @@ <list name="target-properties"> <item>ADDITIONAL_CLEAN_FILES</item> <item>AIX_EXPORT_ALL_SYMBOLS</item>+ <item>AIX_SHARED_LIBRARY_ARCHIVE</item> <item>ALIASED_TARGET</item>+ <item>ALIAS_GLOBAL</item> <item>ANDROID_ANT_ADDITIONAL_OPTIONS</item> <item>ANDROID_API</item> <item>ANDROID_API_MIN</item>@@ -3779,6 +3924,7 @@ <item>ENABLE_EXPORTS</item> <item>EXCLUDE_FROM_ALL</item> <item>EXCLUDE_FROM_DEFAULT_BUILD</item>+ <item>EXPORT_BUILD_DATABASE</item> <item>EXPORT_COMPILE_COMMANDS</item> <item>EXPORT_NAME</item> <item>EXPORT_NO_SYSTEM</item>@@ -3861,6 +4007,8 @@ <item>LINK_INTERFACE_MULTIPLICITY</item> <item>LINK_LIBRARIES</item> <item>LINK_LIBRARIES_ONLY_TARGETS</item>+ <item>LINK_LIBRARIES_STRATEGY</item>+ <item>LINK_LIBRARY_OVERRIDE</item> <item>LINK_OPTIONS</item> <item>LINK_SEARCH_END_STATIC</item> <item>LINK_SEARCH_START_STATIC</item>@@ -3870,7 +4018,12 @@ <item>MACHO_CURRENT_VERSION</item> <item>MACOSX_BUNDLE</item> <item>MACOSX_BUNDLE_INFO_PLIST</item>+ <item>MACOSX_FRAMEWORK_BUNDLE_NAME</item>+ <item>MACOSX_FRAMEWORK_BUNDLE_VERSION</item>+ <item>MACOSX_FRAMEWORK_ICON_FILE</item>+ <item>MACOSX_FRAMEWORK_IDENTIFIER</item> <item>MACOSX_FRAMEWORK_INFO_PLIST</item>+ <item>MACOSX_FRAMEWORK_SHORT_VERSION_STRING</item> <item>MACOSX_RPATH</item> <item>MANUALLY_ADDED_DEPENDENCIES</item> <item>MSVC_DEBUG_INFORMATION_FORMAT</item>@@ -3914,9 +4067,14 @@ <item>STATIC_LIBRARY_OPTIONS</item> <item>SUFFIX</item> <item>SYSTEM</item>+ <item>Swift_COMPILATION_MODE</item> <item>Swift_DEPENDENCIES_FILE</item>+ <item>Swift_LANGUAGE_VERSION</item> <item>Swift_MODULE_DIRECTORY</item> <item>Swift_MODULE_NAME</item>+ <item>TEST_LAUNCHER</item>+ <item>TRANSITIVE_COMPILE_PROPERTIES</item>+ <item>TRANSITIVE_LINK_PROPERTIES</item> <item>TYPE</item> <item>UNITY_BUILD</item> <item>UNITY_BUILD_BATCH_SIZE</item>@@ -3939,6 +4097,8 @@ <item>VS_DOTNET_STARTUP_OBJECT</item> <item>VS_DOTNET_TARGET_FRAMEWORK_VERSION</item> <item>VS_DPI_AWARE</item>+ <item>VS_FILTER_PROPS</item>+ <item>VS_FRAMEWORK_REFERENCES</item> <item>VS_GLOBAL_KEYWORD</item> <item>VS_GLOBAL_PROJECT_TYPES</item> <item>VS_GLOBAL_ROOTNAMESPACE</item>@@ -3959,6 +4119,7 @@ <item>VS_SDK_REFERENCES</item> <item>VS_SOLUTION_DEPLOY</item> <item>VS_USER_PROPS</item>+ <item>VS_USE_DEBUG_LIBRARIES</item> <item>VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION</item> <item>VS_WINRT_COMPONENT</item> <item>VS_WINRT_EXTENSIONS</item>@@ -4144,6 +4305,14 @@ <item>Fortran_COMPILER_ID</item> <item>HIP_COMPILER_ID</item> <item>ISPC_COMPILER_ID</item>+ <item>C_COMPILER_FRONTEND_VARIANT</item>+ <item>CXX_COMPILER_FRONTEND_VARIANT</item>+ <item>CUDA_COMPILER_FRONTEND_VARIANT</item>+ <item>OBJC_COMPILER_FRONTEND_VARIANT</item>+ <item>OBJCXX_COMPILER_FRONTEND_VARIANT</item>+ <item>Fortran_COMPILER_FRONTEND_VARIANT</item>+ <item>HIP_COMPILER_FRONTEND_VARIANT</item>+ <item>ISPC_COMPILER_FRONTEND_VARIANT</item> <item>COMPILE_LANGUAGE</item> <item>COMPILE_LANG_AND_ID</item> <item>COMPILE_FEATURES</item>@@ -4200,6 +4369,7 @@ <item>ANGLE-R</item> <item>COMMA</item> <item>SEMICOLON</item>+ <item>QUOTE</item> </list> <list name="genex-LIST-subcommands"> <item>LENGTH</item>@@ -4557,6 +4727,7 @@ <WordDetect String="cmake_minimum_required" insensitive="true" attribute="Command" context="cmake_minimum_required_ctx"/> <WordDetect String="cmake_parse_arguments" insensitive="true" attribute="Command" context="cmake_parse_arguments_ctx"/> <WordDetect String="cmake_path" insensitive="true" attribute="Command" context="cmake_path_ctx"/>+ <WordDetect String="cmake_pkg_config" insensitive="true" attribute="Command" context="cmake_pkg_config_ctx"/> <WordDetect String="cmake_policy" insensitive="true" attribute="Command" context="cmake_policy_ctx"/> <WordDetect String="configure_file" insensitive="true" attribute="Command" context="configure_file_ctx"/> <WordDetect String="continue" insensitive="true" attribute="Control Flow" context="break_ctx"/>@@ -4719,6 +4890,8 @@ <WordDetect String="find_dependency" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/> <WordDetect String="configure_package_config_file" insensitive="true" attribute="CMake Provided Function/Macro" context="configure_package_config_file_ctx"/> <WordDetect String="write_basic_package_version_file" insensitive="true" attribute="CMake Provided Function/Macro" context="write_basic_package_version_file_ctx"/>+ <WordDetect String="generate_apple_platform_selection_file" insensitive="true" attribute="CMake Provided Function/Macro" context="generate_apple_platform_selection_file_ctx"/>+ <WordDetect String="generate_apple_architecture_selection_file" insensitive="true" attribute="CMake Provided Function/Macro" context="generate_apple_architecture_selection_file_ctx"/> <WordDetect String="cmake_print_properties" insensitive="true" attribute="CMake Provided Function/Macro" context="cmake_print_properties_ctx"/> <WordDetect String="cmake_push_check_state" insensitive="true" attribute="CMake Provided Function/Macro" context="cmake_push_check_state_ctx"/> <WordDetect String="cmake_pop_check_state" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>@@ -4902,6 +5075,17 @@ <keyword attribute="Named Args" context="#stay" String="cmake_path_nargs"/> <IncludeRules context="User Function Args"/> </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="cmake_pkg_config_ctx">+ <DetectChar attribute="Normal Text" context="cmake_pkg_config_ctx_op" char="("/>+ <DetectChar attribute="Normal Text" context="#pop" char=")"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="cmake_pkg_config_ctx_op">+ <DetectSpaces/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>+ <keyword attribute="Named Args" context="#stay" String="cmake_pkg_config_nargs"/>+ <keyword attribute="Special Args" context="#stay" String="cmake_pkg_config_sargs"/>+ <IncludeRules context="User Function Args"/>+ </context> <context attribute="Normal Text" lineEndContext="#stay" name="cmake_policy_ctx"> <DetectChar attribute="Normal Text" context="cmake_policy_ctx_op" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/>@@ -5469,13 +5653,14 @@ <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> <WordDetect String="TARGETS" attribute="Named Args" context="export_tgts"/>+ <WordDetect String="TARGET" attribute="Named Args" context="export_tgts"/> <keyword attribute="Named Args" context="#stay" String="export_nargs"/> <IncludeRules context="User Function Args"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="export_tgts"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>- <keyword attribute="Named Args" context="#pop" String="export_nargs"/>+ <keyword attribute="Named Args" context="#pop" String="export_nargs" lookAhead="true"/> <IncludeRules context="Detect Aliased Targets"/> <IncludeRules context="Detect Targets"/> <IncludeRules context="User Function Args"/>@@ -5550,7 +5735,7 @@ <context attribute="Normal Text" lineEndContext="#stay" name="install_tgts"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>- <keyword attribute="Named Args" context="#pop" String="install_nargs"/>+ <keyword attribute="Named Args" context="#pop" String="install_nargs" lookAhead="true"/> <IncludeRules context="Detect Aliased Targets"/> <IncludeRules context="Detect Targets"/> <IncludeRules context="User Function Args"/>@@ -6023,6 +6208,26 @@ <keyword attribute="Special Args" context="#stay" String="write_basic_package_version_file_sargs"/> <IncludeRules context="User Function Args"/> </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="generate_apple_platform_selection_file_ctx">+ <DetectChar attribute="Normal Text" context="generate_apple_platform_selection_file_ctx_op" char="("/>+ <DetectChar attribute="Normal Text" context="#pop" char=")"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="generate_apple_platform_selection_file_ctx_op">+ <DetectSpaces/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>+ <keyword attribute="Named Args" context="#stay" String="generate_apple_platform_selection_file_nargs"/>+ <IncludeRules context="User Function Args"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="generate_apple_architecture_selection_file_ctx">+ <DetectChar attribute="Normal Text" context="generate_apple_architecture_selection_file_ctx_op" char="("/>+ <DetectChar attribute="Normal Text" context="#pop" char=")"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="generate_apple_architecture_selection_file_ctx_op">+ <DetectSpaces/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>+ <keyword attribute="Named Args" context="#stay" String="generate_apple_architecture_selection_file_nargs"/>+ <IncludeRules context="User Function Args"/>+ </context> <context attribute="Normal Text" lineEndContext="#stay" name="cmake_print_properties_ctx"> <DetectChar attribute="Normal Text" context="cmake_print_properties_ctx_op" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/>@@ -6037,7 +6242,7 @@ <context attribute="Normal Text" lineEndContext="#stay" name="cmake_print_properties_tgts"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>- <keyword attribute="Named Args" context="#pop" String="cmake_print_properties_nargs"/>+ <keyword attribute="Named Args" context="#pop" String="cmake_print_properties_nargs" lookAhead="true"/> <IncludeRules context="Detect Aliased Targets"/> <IncludeRules context="Detect Targets"/> <IncludeRules context="User Function Args"/>@@ -6381,7 +6586,7 @@ <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_exports_tgts"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>- <keyword attribute="Named Args" context="#pop" String="install_jar_exports_nargs"/>+ <keyword attribute="Named Args" context="#pop" String="install_jar_exports_nargs" lookAhead="true"/> <IncludeRules context="Detect Aliased Targets"/> <IncludeRules context="Detect Targets"/> <IncludeRules context="User Function Args"/>@@ -6401,7 +6606,7 @@ <context attribute="Normal Text" lineEndContext="#stay" name="export_jars_tgts"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>- <keyword attribute="Named Args" context="#pop" String="export_jars_nargs"/>+ <keyword attribute="Named Args" context="#pop" String="export_jars_nargs" lookAhead="true"/> <IncludeRules context="Detect Aliased Targets"/> <IncludeRules context="Detect Targets"/> <IncludeRules context="User Function Args"/>@@ -6606,7 +6811,7 @@ </context> <context attribute="Normal Text" lineEndContext="#stay" name="Detect More target-properties">- <RegExpr attribute="Property" context="#stay" String="\b(?:&var_ref_re;_((COMPIL|LINK)ER_LAUNCHER|CLANG_TIDY(_EXPORT_FIXES_DIR)?|CPP(CHECK|LINT)|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|((ARCHIVE|LIBRARY|RUNTIME)_OUTPUT_(DIRECTORY|NAME)|COMPILE_PDB_(NAME|OUTPUT_DIRECTORY)|CXX_MODULE_(DIRS|SET)|EXCLUDE_FROM_DEFAULT_BUILD|FRAMEWORK_MULTI_CONFIG_POSTFIX|HEADER_(DIRS|SET)|IMPORTED_((NO_)?SONAME|IMPLIB|LIBNAME|LINK_(DEPENDENT_LIBRARIES|INTERFACE_(LANGUAGES|LIBRARIES|MULTIPLICITY))|LOCATION|OBJECTS)|INTERPROCEDURAL_OPTIMIZATION|LINK_(FLAGS|INTERFACE_(LIBRARIES|MULTIPLICITY))|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_(NAME|OUTPUT_DIRECTORY)|STATIC_LIBRARY_FLAGS|VS_(DOTNET_REFERENCE(PROP_&var_ref_re;_TAG)?|GLOBAL|SOURCE_SETTINGS))_&var_ref_re;|XCODE_(ATTRIBUTE_&var_ref_re;|EMBED_&var_ref_re;(_((CODE_SIGN|REMOVE_HEADERS)_ON_COPY|PATH))?))\b"/>+ <RegExpr attribute="Property" context="#stay" String="\b(?:&var_ref_re;_((COMPIL|LINK)ER_LAUNCHER|CLANG_TIDY(_EXPORT_FIXES_DIR)?|CPP(CHECK|LINT)|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|((ARCHIVE|LIBRARY|RUNTIME)_OUTPUT_(DIRECTORY|NAME)|COMPILE_PDB_(NAME|OUTPUT_DIRECTORY)|CXX_MODULE_(DIRS|SET)|EXCLUDE_FROM_DEFAULT_BUILD|FRAMEWORK_MULTI_CONFIG_POSTFIX|HEADER_(DIRS|SET)|IMPORTED_((NO_)?SONAME|IMPLIB|LIBNAME|LINK_(DEPENDENT_LIBRARIES|INTERFACE_(LANGUAGES|LIBRARIES|MULTIPLICITY))|LOCATION|OBJECTS)|INTERPROCEDURAL_OPTIMIZATION|LINK_(FLAGS|INTERFACE_(LIBRARIES|MULTIPLICITY)|LIBRARY_OVERRIDE)|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_(NAME|OUTPUT_DIRECTORY)|STATIC_LIBRARY_FLAGS|VS_(DOTNET_REFERENCE(PROP_&var_ref_re;_TAG)?|GLOBAL|SOURCE_SETTINGS))_&var_ref_re;|XCODE_(ATTRIBUTE_&var_ref_re;|EMBED_&var_ref_re;(_((CODE_SIGN|REMOVE_HEADERS)_ON_COPY|PATH))?))\b"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="Detect More source-properties">@@ -6632,7 +6837,7 @@ <context attribute="Normal Text" lineEndContext="#stay" name="Detect More Builtin Variables"> <RegExpr attribute="CMake Internal Variable" context="#stay" String="\b(?:CMAKE_&var_ref_re;_(COMPILER_(ABI|ARCHITECTURE_ID|VERSION_INTERNAL)|PLATFORM_ID))\b"/>- <RegExpr attribute="Builtin Variable" context="#stay" String="\b(?:&var_ref_re;_(((STATIC_)?LINK_)?LIBRARIES|(BINARY|SOURCE)_DIR|(C|LD)FLAGS(_OTHER)?|(INCLUDE|LIBRARY)_DIRS|CONFIG|CONSIDERED_(CONFIGS|VERSIONS)|DESCRIPTION|FIND_(COMPONENTS|REQUIRED(_&var_ref_re;)?|VERSION_(COMPLETE|COUNT|EXACT|M(AX|IN)(_(COUNT|MAJOR|MINOR|PATCH|TWEAK))?|RANGE(_(MAX|MIN))?)|QUIETLY)|FOUND|HOMEPAGE_URL|IS_TOP_LEVEL|KEYWORDS_MISSING_VALUES|MODULE_NAME|ROOT|UNPARSED_ARGUMENTS|VERSION(_(MAJOR|MINOR|PATCH|TWEAK|COUNT|STRING))?)|&var_ref_re;__TRYRUN_OUTPUT|(DOXYGEN|ExternalData_(CUSTOM_SCRIPT|URL_ALGO)|FETCHCONTENT_(SOURCE_DIR|UPDATES_DISCONNECTED))_&var_ref_re;|ARGV[0-9]+|BISON_&var_ref_re;_(COMPILE_FLAGS|DEFINED|INPUT|OUTPUT(S|_(HEADER|SOURCE)))|Boost_&var_ref_re;_LIBRARY(_(DEBUG|RELEASE))?|CMAKE_(&var_ref_re;_(ANDROID_TOOLCHAIN_((PRE|SUF)FIX|MACHINE)|ARCHIVE_(APPEND|CREATE|FINISH)|BYTE_ORDER|CLANG_TIDY(_EXPORT_FIXES_DIR)?|COMPILER(_(AR|EXTERNAL_TOOLCHAIN|FRONTEND_VARIANT|ID|LAUNCHER|LOADED|RANLIB|TARGET|VERSION))?|COMPILE_OBJECT|CPP(CHECK|LINT)|CREATE_(SHARED_(LIBRARY|MODULE)|STATIC_LIBRARY)|EXTENSIONS(_DEFAULT)?|FLAGS(_((DEBUG|MINSIZEREL|REL(EASE|WITHDEBINFO)|&var_ref_re;)(_INIT)?|INIT))?|GHS_KERNEL_FLAGS_(DEBUG|MINSIZEREL|REL(EASE|WITHDEBINFO))|IGNORE_EXTENSIONS|IMPLICIT_(INCLUDE_DIRECTORIES|LINK_((FRAMEWORK_)?DIRECTORIES|LIBRARIES))|INCLUDE_WHAT_YOU_USE|LIBRARY_ARCHITECTURE|LINKER_(LAUNCHER|PREFERENCE(_PROPAGATES)?|WRAPPER_FLAG(_SEP)?)|LINK_(EXECUTABLE|GROUP_USING_&var_ref_re;(_SUPPORTED)?|LIBRARY_(FILE_FLAG|FLAG|USING_&var_ref_re;(_SUPPORTED)?)|WHAT_YOU_USE_FLAG)|OUTPUT_EXTENSION|POSTFIX|SIMULATE_(ID|VERSION)|SIZEOF_DATA_PTR|SOURCE_FILE_EXTENSIONS|STANDARD_(INCLUDE_DIRECTO|LIBRA)RIES|VISIBILITY_PRESET)|((ARCHIVE|(COMPILE_)?PDB|LIBRARY|RUNTIME)_OUTPUT_DIRECTORY|(DISABLE|REQUIRE)_FIND_PACKAGE|FRAMEWORK_MULTI_CONFIG_POSTFIX|GET_OS_RELEASE_FALLBACK_RESULT|INTERPROCEDURAL_OPTIMIZATION|MAP_IMPORTED_CONFIG|USER_MAKE_RULES_OVERRIDE|XCODE_ATTRIBUTE)_&var_ref_re;|(EXE|MODULE|SHARED|STATIC)_LINKER_FLAGS_&var_ref_re;(_INIT)?|LINK_(GROUP|LIBRARY)_USING_&var_ref_re;(_SUPPORTED)?|PROJECT_&var_ref_re;_INCLUDE(_BEFORE)?)|CMAKE_(ARGV|MATCH_)[0-9]+|CMAKE_POLICY_(DEFAULT|WARNING)_CMP[0-9]{4}|CPACK_(&var_ref_re;_COMPONENT_INSTALL|ARCHIVE_&var_ref_re;_FILE_NAME|BINARY_&var_ref_re;|COMPONENT_&var_ref_re;_(DEPENDS|DESCRIPTION|DIS(ABLED|PLAY_NAME)|GROUP|HIDDEN|REQUIRED)|DEBIAN_&var_ref_re;_(DESCRIPTION|FILE_NAME|PACKAGE_((PRE)?DEPENDS|ARCHITECTURE|BREAKS|CONFLICTS|CONTROL_(EXTRA|STRICT_PERMISSION)|ENHANCES|NAME|PRIORITY|PROVIDES|RECOMMENDS|REPLACES|SECTION|SHLIBDEPS|SOURCE|SUGGESTS)|DEBUGINFO_PACKAGE)|DMG_&var_ref_re;_FILE_NAME|INNOSETUP_(&var_ref_re;_INSTALL_DIRECTORY|(DEFINE|SETUP)_&var_ref_re;)|NSIS_&var_ref_re;_INSTALL_DIRECTORY|NUGET_(&var_ref_re;_PACKAGE_(AUTHORS|COPYRIGHT|DEPENDENCIES(_&var_ref_re;_VERSION)?|DESCRIPTION(_SUMMARY)?|HOMEPAGE_URL|ICON(URL)?|LANGUAGE|LICENSE(URL|_(EXPRESSION|FILE_NAME))|NAME|OWNERS|RELEASE_NOTES|TAGS|TITLE|VERSION)|PACKAGE_DEPENDENCIES_&var_ref_re;_VERSION)|P(RE|OST)FLIGHT_&var_ref_re;_SCRIPT|RPM_(&var_ref_re;_(DEFAULT_((DIR|FILE)_PERMISSIONS|GROUP|USER)|BUILD_SOURCE_DIRS_PREFIX|DEBUGINFO_(FILE_NAME|PACKAGE)|FILE_NAME|PACKAGE_(ARCHITECTURE|AUTO(PROV|REQ(PROV)?)|CONFLICTS|DESCRIPTION|GROUP|NAME|OBSOLETES|PREFIX|PROVIDES|REQUIRES(_P(RE|OST)(UN)?)?|SUGGESTS|SUMMARY|URL)|USER_(FILELIST|BINARY_SPECFILE))|NO_&var_ref_re;_INSTALL_PREFIX_RELOCATION)|WIX_(&var_ref_re;_EXT(ENSIONS|RA_FLAGS)|PROPERTY_&var_ref_re;))|ICU_&var_ref_re;_(LIBRARY|EXECUTABLE)|MPI_&var_ref_re;_(ADDITIONAL_INCLUDE_VARS|COMPILE(R|_(DEFINI|OP)TIONS)|LIB(_NAMES|RARY))|OpenACC_&var_ref_re;_(FLAGS|OPTIONS|SPEC_DATE)|OpenMP_&var_ref_re;_(FLAGS|LIB(_NAMES|RARY)|SPEC_DATE)|SWIG_MODULE_&var_ref_re;_EXTRA_DEPS)\b"/>+ <RegExpr attribute="Builtin Variable" context="#stay" String="\b(?:&var_ref_re;_(((STATIC_)?LINK_)?LIBRARIES|(BINARY|SOURCE)_DIR|(C|LD)FLAGS(_OTHER)?|(INCLUDE|LIBRARY)_DIRS|CONFIG|CONSIDERED_(CONFIGS|VERSIONS)|DESCRIPTION|FIND_(COMPONENTS|REQUIRED(_&var_ref_re;)?|VERSION_(COMPLETE|COUNT|EXACT|M(AX|IN)(_(COUNT|MAJOR|MINOR|PATCH|TWEAK))?|RANGE(_(MAX|MIN))?)|QUIETLY)|FOUND|HOMEPAGE_URL|IS_TOP_LEVEL|KEYWORDS_MISSING_VALUES|MODULE_NAME|ROOT|UNPARSED_ARGUMENTS|VERSION(_(MAJOR|MINOR|PATCH|TWEAK|COUNT|STRING))?)|&var_ref_re;__TRYRUN_OUTPUT|(DOXYGEN|ExternalData_(CUSTOM_SCRIPT|URL_ALGO)|FETCHCONTENT_(SOURCE_DIR|UPDATES_DISCONNECTED))_&var_ref_re;|ARGV[0-9]+|BISON_&var_ref_re;_(COMPILE_FLAGS|DEFINED|INPUT|OUTPUT(S|_(HEADER|SOURCE)))|Boost_&var_ref_re;_LIBRARY(_(DEBUG|RELEASE))?|CMAKE_(&var_ref_re;_(ANDROID_TOOLCHAIN_((PRE|SUF)FIX|MACHINE)|ARCHIVE_(APPEND|CREATE|FINISH)|BYTE_ORDER|CLANG_TIDY(_EXPORT_FIXES_DIR)?|COMPILER(_(AR|EXTERNAL_TOOLCHAIN|FRONTEND_VARIANT|ID|LAUNCHER|LINKER(_(FRONTEND_VARIANT|ID|VERSION))?|LOADED|PREDEFINES_COMMAND|RANLIB|TARGET|VERSION))?|COMPILE_OBJECT|CPP(CHECK|LINT)|CREATE_(SHARED_(LIBRARY(_ARCHIVE)?|MODULE)|STATIC_LIBRARY)|EXTENSIONS(_DEFAULT)?|FLAGS(_((DEBUG|MINSIZEREL|REL(EASE|WITHDEBINFO)|&var_ref_re;)(_INIT)?|INIT))?|HOST_COMPILER(_ID)?|IGNORE_EXTENSIONS|IMPLICIT_(INCLUDE_DIRECTORIES|LINK_((FRAMEWORK_)?DIRECTORIES|LIBRARIES))|INCLUDE_WHAT_YOU_USE|LIBRARY_ARCHITECTURE|LINKER_(LAUNCHER|PREFERENCE(_PROPAGATES)?|WRAPPER_FLAG(_SEP)?)|LINK_(EXECUTABLE|GROUP_USING_&var_ref_re;(_SUPPORTED)?|LIBRARY_(FILE_FLAG|FLAG|USING_&var_ref_re;(_SUPPORTED)?)|WHAT_YOU_USE_FLAG)|OUTPUT_EXTENSION|POSTFIX|SIMULATE_(ID|VERSION)|SIZEOF_DATA_PTR|SOURCE_FILE_EXTENSIONS|STANDARD_((INCLUDE_DIRECTO|LIBRA)RIES|DEFAULT|LATEST|LINK_DIRECTORIES)|USING_LINKER_(&var_ref_re;|MODE)|VISIBILITY_PRESET)|((ARCHIVE|(COMPILE_)?PDB|LIBRARY|RUNTIME)_OUTPUT_DIRECTORY|(DISABLE|REQUIRE)_FIND_PACKAGE|FRAMEWORK_MULTI_CONFIG_POSTFIX|GET_OS_RELEASE_FALLBACK_RESULT|INTERPROCEDURAL_OPTIMIZATION|MAP_IMPORTED_CONFIG|USER_MAKE_RULES_OVERRIDE|XCODE_ATTRIBUTE)_&var_ref_re;|(EXE|MODULE|SHARED|STATIC)_LINKER_FLAGS_&var_ref_re;(_INIT)?|LINK_(GROUP_USING_&var_ref_re;(_SUPPORTED)?|LIBRARY_(&var_ref_re;_ATTRIBUTES|USING_&var_ref_re;(_SUPPORTED)?))|PKG_CONFIG_&var_ref_re;_PRIVATE|PROJECT_&var_ref_re;_INCLUDE(_BEFORE)?)|CMAKE_(ARGV|MATCH_)[0-9]+|CMAKE_POLICY_(DEFAULT|WARNING)_CMP[0-9]{4}|CPACK_(&var_ref_re;_COMPONENT_INSTALL|ARCHIVE_&var_ref_re;_FILE_NAME|BINARY_&var_ref_re;|COMPONENT_&var_ref_re;_(DEPENDS|DESCRIPTION|DIS(ABLED|PLAY_NAME)|GROUP|HIDDEN|REQUIRED)|DEBIAN_&var_ref_re;_(DESCRIPTION|FILE_NAME|PACKAGE_((PRE)?DEPENDS|ARCHITECTURE|BREAKS|CONFLICTS|CONTROL_(EXTRA|STRICT_PERMISSION)|ENHANCES|MULTIARCH|NAME|PRIORITY|PROVIDES|RECOMMENDS|REPLACES|SECTION|SHLIBDEPS|SOURCE|SUGGESTS)|DEBUGINFO_PACKAGE)|DMG_&var_ref_re;_FILE_NAME|INNOSETUP_(&var_ref_re;_INSTALL_DIRECTORY|(DEFINE|SETUP)_&var_ref_re;)|NSIS_&var_ref_re;_INSTALL_DIRECTORY|NUGET_(&var_ref_re;_(PACKAGE_(AUTHORS|COPYRIGHT|DEPENDENCIES(_&var_ref_re;)?|DESCRIPTION(_SUMMARY)?|HOMEPAGE_URL|ICON(URL)?|LANGUAGE|LICENSE(URL|_(EXPRESSION|FILE_NAME))|NAME|OWNERS|README|RELEASE_NOTES|TAGS|TFMS|TITLE)|REPOSITORY_(BRANCH|COMMIT|TYPE|URL))|PACKAGE_DEPENDENCIES_&var_ref_re;)|P(RE|OST)FLIGHT_&var_ref_re;_SCRIPT|RPM_(&var_ref_re;_(DEFAULT_((DIR|FILE)_PERMISSIONS|GROUP|USER)|BUILD_SOURCE_DIRS_PREFIX|DEBUGINFO_(FILE_NAME|PACKAGE)|FILE_NAME|PACKAGE_(ARCHITECTURE|AUTO(PROV|REQ(PROV)?)|CONFLICTS|DESCRIPTION|GROUP|NAME|OBSOLETES|PREFIX|PROVIDES|REQUIRES(_P(RE|OST)(UN)?)?|SUGGESTS|SUMMARY|URL)|USER_(FILELIST|BINARY_SPECFILE))|NO_&var_ref_re;_INSTALL_PREFIX_RELOCATION)|WIX_(&var_ref_re;_EXT(ENSIONS|RA_FLAGS)|PROPERTY_&var_ref_re;))|ICU_&var_ref_re;_(LIBRARY|EXECUTABLE)|MPI_&var_ref_re;_(ADDITIONAL_INCLUDE_VARS|COMPILE(R|_(DEFINI|OP)TIONS)|LIB(_NAMES|RARY))|OpenACC_&var_ref_re;_(FLAGS|OPTIONS|SPEC_DATE)|OpenMP_&var_ref_re;_(FLAGS|LIB(_NAMES|RARY)|SPEC_DATE)|SWIG_MODULE_&var_ref_re;_EXTRA_DEPS)\b"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="Detect Variable Substitutions">
xml/commonlisp.xml view
@@ -2,7 +2,7 @@ <!DOCTYPE language [ <!ENTITY identchar "[A-Za-z0-9-+<>/*]"> ]>-<language version="11" kateversion="5.79" name="Common Lisp" section="Sources" extensions="*.lisp;*.cl;*.lsp;*.el" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">+<language version="12" kateversion="5.79" name="Common Lisp" section="Sources" extensions="*.lisp;*.cl;*.lsp;*.el" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT"> <highlighting> <list name="symbols"> <item><</item>@@ -911,7 +911,6 @@ <item>translate-pathname</item> <item>tree-equal</item> <item>truename</item> - <item>truncase</item> <item>truncate</item> <item>two-way-stream</item> <item>two-way-stream-input-stream</item>
xml/isocpp.xml view
@@ -35,7 +35,7 @@ <language name="ISO C++" section="Sources"- version="31"+ version="32" kateversion="5.79" indenter="cstyle" style="C++"@@ -468,24 +468,24 @@ </context> <context name="IntSuffixPattern" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">+ <DetectChar context="#pop!NumericUserSuffixPattern" char="_" lookAhead="1"/> <!-- https://en.cppreference.com/w/cpp/language/integer_literal#The_type_of_the_literal --> <RegExpr attribute="Standard Suffix" context="NumericSuffixError" String="([Uu](LL?|ll?|[Zz])?|(LL?|ll?|[Zz])[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 context="#pop!NumericUserSuffixPattern" char="_" lookAhead="1"/> </context> <context name="FloatSuffix" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError"> <DetectChar attribute="Error" context="#stay" char="'" />- <AnyChar context="#pop!FloatSuffixPattern" String="fFlLimsh_" lookAhead="1"/>+ <AnyChar context="#pop!FloatSuffixPattern" String="fFlLbBimshd_" lookAhead="1"/> </context> <context name="FloatSuffixPattern" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">+ <DetectChar context="#pop!NumericUserSuffixPattern" char="_" lookAhead="1"/> <!-- https://en.cppreference.com/w/cpp/language/floating_literal#Syntax -->- <AnyChar attribute="Standard Suffix" context="NumericSuffixError" String="fFlL" />+ <RegExpr attribute="Standard Suffix" context="NumericSuffixError" String="[fF](?:16|32|64|128)?|[lL]|bf16|BF16"/> <!-- https://en.cppreference.com/w/cpp/language/user_literal#Standard_library -->- <RegExpr attribute="Standard Classes" context="NumericSuffixError" String="(?:i[fl]?|min|[mun]?s|h)\b" />- <DetectChar context="#pop!NumericUserSuffixPattern" char="_" lookAhead="1" />+ <RegExpr attribute="Standard Classes" context="NumericSuffixError" String="(?:i[fl]?|min|[mun]?s|[hd])\b"/> </context> <context name="NumericUserSuffixPattern" attribute="Error" lineEndContext="#pop#pop">
xml/javascript-react.xml view
@@ -53,7 +53,7 @@ * v1 [2018-06-20]: Initial version --> -<language name="JavaScript React (JSX)" version="10" kateversion="5.53" section="Scripts" indenter="cstyle"+<language name="JavaScript React (JSX)" alternativeNames="JSX" version="11" kateversion="5.53" section="Scripts" indenter="cstyle" priority="9" extensions="*.jsx" mimetype="text/jsx;text/x-jsx;application/jsx;application/x-jsx;" author="Nibaldo González (nibgonz@gmail.com)" license="MIT">
xml/json.xml view
@@ -13,7 +13,7 @@ ** https://www.json.org/json-en.html *************************************************************************** -->-<language name="JSON" section="Markup" version="8" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf;*.theme" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">+<language name="JSON" section="Markup" version="9" kateversion="2.4" extensions="*.json;*.jsonl;.kateproject;.arcconfig;*.geojson;*.gltf;*.theme;*.cast" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL"> <highlighting> <list name="Constants"> <item>null</item>@@ -62,7 +62,7 @@ <keyword String="Constants" context="#stay" attribute="Style_Keyword" /> - <RegExpr String="-?\b([1-9][0-9]*\.[0-9]+(?:[eE][+-]?[0-9]+)?)" context="#stay" attribute="Style_Float" />+ <RegExpr String="-?\b((0\b|[1-9][0-9]*)\.[0-9]+(?:[eE][+-]?[0-9]+)?)" context="#stay" attribute="Style_Float" /> <RegExpr String="-?\b(0\b|[1-9][0-9]*(?:[eE][+-]?[0-9]+)?)" context="#stay" attribute="Style_Decimal" /> </context>
xml/julia.xml view
@@ -36,7 +36,7 @@ <!ENTITY function_begin_boundary "(?:(?<=[&function_disallowed_chars;!]|^)(?=[^&function_disallowed_first_char;]))"> ]> -<language name="Julia" alternativeNames="JL" style="julia" indenter="julia" section="Sources" version="15" kateversion="5.62" extensions="*.jl" casesensitive="1" priority="5" license="MIT">+<language name="Julia" alternativeNames="JL" style="julia" indenter="julia" section="Sources" version="16" kateversion="5.62" extensions="*.jl" casesensitive="1" priority="5" license="MIT"> <highlighting> <list name="cflow_begin">@@ -45,11 +45,11 @@ <item>if</item> <item>begin</item> <item>do</item>+ <item>try</item> </list> <list name="cflow_eb"> <item>else</item> <item>elseif</item>- <item>try</item> <item>catch</item> <item>finally</item> </list>
xml/latex.xml view
@@ -4,7 +4,7 @@ <!ENTITY bullet "×"> <!ENTITY envname "[a-zA-Z]+\*?"> ]>-<language name="LaTeX" version="23" section="Markup" kateversion="5.79" 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="24" section="Markup" kateversion="5.79" 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@@ -5049,9 +5049,9 @@ <DetectSpaces/> <RegExpr String=".+" attribute="Error" context="#stay"/> </context>- <context name="HighlightingRuby" attribute="Normal Text" lineEndContext="#stay">+ <context name="HighlightingRuby" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Expr##Ruby"> <IncludeRules context="HighlightingCommon"/>- <IncludeRules context="##Ruby" includeAttrib="true"/>+ <IncludeRules context="Ruby##Ruby" includeAttrib="true"/> </context> <context name="HighlightingRustCodeEnvS" attribute="Error" lineEndContext="#stay">
xml/lua.xml view
@@ -48,7 +48,7 @@ - NOTE, FIXME, TODO alerts added on comments - improved highlighting -->-<language name="Lua" version="18" indenter="lua" kateversion="5.79" section="Scripts" extensions="*.lua;*.rockspec" mimetype="text/x-lua">+<language name="Lua" version="19" indenter="cstyle" kateversion="5.79" section="Scripts" extensions="*.lua;*.rockspec" mimetype="text/x-lua"> <highlighting> <list name="keywords"> <item>and</item>
xml/markdown.xml view
@@ -94,7 +94,7 @@ <!ENTITY checkbox "\[[ x]\](?=\s)"> ]> -<language name="Markdown" version="30" kateversion="5.79" section="Markup" extensions="*.md;*.mmd;*.markdown;*.md.html" mimetype="text/markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">+<language name="Markdown" version="31" kateversion="5.79" section="Markup" extensions="*.md;*.mmd;*.markdown;*.md.html" mimetype="text/markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD"> <highlighting> <contexts> <!-- Start of the Markdown document: find metadata or code block -->@@ -368,7 +368,8 @@ <RegExpr attribute="Fenced Code" context="#pop!qml-code" String="&fcode;\s*qml(?:types)?&end;" insensitive="true" beginRegion="code-block"/> <RegExpr attribute="Fenced Code" context="#pop!r-code" String="&fcode;\s*(?:r|rprofile|rscript)&end;" insensitive="true" beginRegion="code-block"/> <RegExpr attribute="Fenced Code" context="#pop!rest-code" String="&fcode;\s*(?:rst|rest|restructuredtext)&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the CMake definition -->- <RegExpr attribute="Fenced Code" context="#pop!ruby-code" String="&fcode;\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml|(?:xml|js)\.erb)&end;" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Fenced Code" context="#pop!ruby-code" String="&fcode;\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml)&end;" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Fenced Code" context="#pop!rhtml-code" String="&fcode;\s*((?:xml\.|js\.)?erb)&end;" insensitive="true" beginRegion="code-block"/> <RegExpr attribute="Fenced Code" context="#pop!rust-code" String="&fcode;\s*(?:rust|rs)&end;" insensitive="true" beginRegion="code-block"/> <RegExpr attribute="Fenced Code" context="#pop!mysql-code" String="&fcode;\s*(?:mysql|sql|ddl)&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the PHP definition --> <RegExpr attribute="Fenced Code" context="#pop!nim-code" String="&fcode;\s*(?:nims?)&end;" insensitive="true" beginRegion="code-block"/>@@ -491,9 +492,13 @@ <IncludeRules context="code"/> <IncludeRules context="##reStructuredText" includeAttrib="true"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="ruby-code">+ <context attribute="Normal Text" lineEndContext="#stay" name="ruby-code" fallthroughContext="Expr##Ruby"> <IncludeRules context="code"/>- <IncludeRules context="##Ruby" includeAttrib="true"/>+ <IncludeRules context="Ruby##Ruby" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="rhtml-code">+ <IncludeRules context="code"/>+ <IncludeRules context="##Ruby/Rails/RHTML" includeAttrib="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="rust-code"> <IncludeRules context="code"/>
xml/modelines.xml view
@@ -1,14 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE language-[- <!ENTITY space " ">- <!ENTITY end ";">-]>+<!DOCTYPE language> <!-- Copyright (c) 2012-2014 by Alex Turbov (i.zaufi@gmail.com) --> <language name="Modelines"- version="6"+ version="7" kateversion="5.0" section="Other" extensions=""@@ -33,15 +29,15 @@ <list name="Booleans"> <item>auto-brackets</item> <!-- NOTE Deprecated -->-<!-- <item>auto-insert-doxygen</item> -->+ <!--<item>auto-insert-doxygen</item> --> <item>automatic-spell-checking</item> <!-- NOTE Since KDE 4.?? --> <item>backspace-indents</item>- <item>block-selection</item> <item>bookmark-sorting</item> <item>bom</item> <item>byte-order-marker</item> <item>byte-order-mark</item> <item>dynamic-word-wrap</item>+ <item>enter-to-insert-completion</item> <item>folding-markers</item> <item>folding-preview</item> <!-- Since KTextEditor 5.24 --> <item>icon-border</item>@@ -55,7 +51,8 @@ <!-- <item>remove-trailing-space</item> --> <item>replace-tabs-save</item> <item>replace-tabs</item>- <item>replace-trailing-space-save</item>+ <!-- NOTE Deprecated since KDE 4.10 -->+ <!-- <item>replace-trailing-space-save</item> --> <item>smart-home</item> <item>scrollbar-minimap</item> <!-- Since KTextEditor 5.24 --> <item>scrollbar-preview</item> <!-- Since KTextEditor 5.24 -->@@ -64,7 +61,6 @@ <item>show-trailing-spaces</item> <!-- NOTE Since KDE 4.?? --> <item>tab-indents</item> <item>word-wrap</item>- <item>wrap-cursor</item> </list> <list name="True">@@ -82,10 +78,10 @@ <list name="Integrals"> <item>auto-center-lines</item> <item>font-size</item>- <item>indent-mode</item> <item>indent-width</item> <item>tab-width</item>- <item>undo-steps</item>+ <!-- NOTE Deprecated since KDE 4 -->+ <!-- <item>undo-steps</item> --> <item>word-wrap-column</item> </list> @@ -100,6 +96,7 @@ <item>font</item> <item>hl</item> <item>icon-bar-color</item>+ <item>indent-mode</item> <item>mode</item> <!-- NOTE Since KDE 4.?? --> <item>scheme</item> <item>selection-color</item>@@ -129,7 +126,6 @@ <contexts> <context name="Normal" attribute="Comment" lineEndContext="#stay"> <keyword String="ModelineStartKeyword" context="Modeline" attribute="Keyword" />- <RegExpr String="\bkate-(?:mimetype|wildcard)\(.*\):" context="Modeline" attribute="Keyword" /> </context> <context name="Modeline" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">@@ -141,31 +137,28 @@ </context> <context name="Booleans" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">- <DetectSpaces />- <keyword String="True" attribute="Option ON" context="#stay" />- <keyword String="False" attribute="Option OFF" context="#stay" />- <DetectChar char="&end;" context="#pop" attribute="Variable" />+ <IncludeRules context="SpacesEnd"/>+ <keyword String="True" attribute="Option ON" context="#pop!SpacesEnd" />+ <keyword String="False" attribute="Option OFF" context="#pop!SpacesEnd" /> </context> <context name="Integrals" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">- <DetectSpaces />- <Int attribute="Number" context="#stay" />- <DetectChar char="&end;" context="#pop" attribute="Variable" />+ <IncludeRules context="SpacesEnd"/>+ <Int attribute="Number" context="#pop!SpacesEnd" /> </context> <context name="Strings" attribute="String" lineEndContext="#pop">- <DetectSpaces />- <RegExpr String="[^&end;&space;]" context="#stay" />- <DetectChar char="&end;" context="#pop" attribute="Variable" />+ <IncludeRules context="SpacesEnd"/> </context> <context name="RemoveSpaces" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">- <DetectSpaces />- <keyword String="RemoveSpacesOptions" attribute="Value" context="#pop!RemoveSpacesEnd" />- <DetectChar char="&end;" context="#pop" attribute="Variable" />+ <IncludeRules context="SpacesEnd"/>+ <keyword String="RemoveSpacesOptions" attribute="Value" context="#pop!SpacesEnd" /> </context>- <context name="RemoveSpacesEnd" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">- <DetectChar char="&end;" context="#pop" attribute="Variable" />++ <context name="SpacesEnd" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+ <DetectSpaces/>+ <DetectChar char=";" context="#pop" attribute="Variable" /> </context> </contexts>
xml/nix.xml view
@@ -4,7 +4,7 @@ ]> <!--- SPDX-FileCopyrightText: 2021 Marco Rebhan <me@dblsaiko.net>+ SPDX-FileCopyrightText: 2024 Marco Rebhan <me@dblsaiko.net> SPDX-FileContributor: Tuan Le <webmaster@michivi.com> SPDX-License-Identifier: MIT@@ -12,7 +12,7 @@ <language name="Nix"- version="2"+ version="4" kateversion="5.79" section="Scripts" extensions="*.nix"@@ -73,10 +73,16 @@ <RegExpr String="[a-zA-Z0-9-_.]*(/[a-zA-Z0-9-_.]+)+" attribute="Path" /> <Float attribute="Float" /> <Int attribute="Int" />+ <DetectChar char="." attribute="Symbol" context="Set Access" /> <WordDetect String="true" attribute="Constant" /> <WordDetect String="false" attribute="Constant" /> <WordDetect String="null" attribute="Constant" /> </context>+ <context name="Set Access" attribute="Normal Text" lineEndContext="#stay">+ <Detect2Chars char="$" char1="{" attribute="Special Char" context="#pop!Interpolated String" />+ <DetectChar char=""" attribute="String" context="#pop!String" />+ <DetectIdentifier context="#pop" />+ </context> <context name="Parentheses" attribute="Normal Text" lineEndContext="#stay"> <DetectChar char=")" attribute="Symbol" context="#pop" /> @@ -129,6 +135,7 @@ <DetectChar char="=" attribute="Operator" context="Any Brace - Set Value" /> <DetectChar char=""" attribute="String" context="Any Brace - String" /> <Detect2Chars char="'" char1="'" attribute="String" context="Any Brace - String2" />+ <Detect2Chars char="$" char1="{" attribute="Special Char" context="Any Brace - Interpolated String" /> <DetectChar char="," attribute="Symbol" context="#pop!Set Expansion" /> <DetectChar char="?" attribute="Symbol" context="Any Brace - Default Value" />@@ -146,11 +153,11 @@ <DetectChar char=";" attribute="Symbol" context="#pop#pop!Set" /> <IncludeRules context="Set Value" /> </context>- <context name="Any Brace - String" attribute="Normal Text" lineEndContext="#stay">+ <context name="Any Brace - String" attribute="String" lineEndContext="#stay"> <DetectChar char=""" attribute="String" context="#pop#pop!Set" /> <IncludeRules context="String" /> </context>- <context name="Any Brace - String2" attribute="Normal Text" lineEndContext="#stay">+ <context name="Any Brace - String2" attribute="String" lineEndContext="#stay"> <Detect2Chars char="'" char1="'" attribute="String" context="#pop#pop!Set" /> <IncludeRules context="String" /> </context>@@ -158,6 +165,10 @@ <DetectChar char=";" attribute="Symbol" context="#pop#pop!Set" /> <IncludeRules context="Inherit" /> </context>+ <context name="Any Brace - Interpolated String" attribute="Normal Text">+ <DetectChar char="}" attribute="Special Char" context="#pop!Set" />+ <IncludeRules context="Interpolated String" />+ </context> <context name="Any Brace - Default Value" attribute="Normal Text" lineEndContext="#stay"> <DetectChar char="," attribute="Symbol" context="#pop#pop!Set Expansion" /> <IncludeRules context="Default Value" />@@ -168,12 +179,23 @@ <DetectChar char=""" attribute="String" context="String" /> <Detect2Chars char="'" char1="'" attribute="String" context="String2" /> <DetectChar char="=" attribute="Operator" context="Set Value" />+ <Detect2Chars char="$" char1="{" attribute="Special Char" context="Interpolated String" /> <RegExpr String="&ident;" attribute="Identifier" /> <IncludeRules context="Comment Rules" /> </context> <context name="Inherit" attribute="Normal Text" lineEndContext="#stay">- <DetectChar char=";" attribute="Symbol" context="#pop" />- <IncludeRules context="Single Expression" />+ <DetectChar char="(" attribute="Symbol" context="Inherit - Source" />+ <DetectIdentifier attribute="Identifier" context="Inherit - Keys" />+ </context>+ <context name="Inherit - Source" attribute="Normal Text" lineEndContext="#stay">+ <DetectChar char=")" attribute="Symbol" context="#pop!Inherit - Keys" />++ <IncludeRules context="Parentheses" />+ </context>+ <context name="Inherit - Keys" attribute="Normal Text" lineEndContext="#stay">+ <DetectChar char=";" attribute="Symbol" context="#pop#pop" />+ <DetectChar char="(" attribute="Error" />+ <DetectIdentifier attribute="Identifier" /> </context> <context name="Set" attribute="Normal Text" lineEndContext="#stay">
+ xml/odin.xml view
@@ -0,0 +1,290 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language+[+ <!ENTITY symbols ":!%&()+,-/.*<=>?[]|~^;">+ <!ENTITY bin_int "(?:[01]+(?:_[01]+)*)">+ <!ENTITY oct_int "(?:[0-7]+(?:_[0-7]+)*)">+ <!ENTITY dec_int "(?:[0-9]+(?:_[0-9]+)*)">+ <!ENTITY hex_int "(?:[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*)">+ <!ENTITY exp_float "(?:[eE][+-]?&dec_int;)">+ <!ENTITY exp_hexfloat "(?:[pP][-+]?&dec_int;)">+]>+<language name="Odin" section="Sources"+ version="7" kateversion="5.79"+ indenter="cstyle"+ extensions="*.odin"+ priority="1"+ author="Akseli Lahtinen (akselmo@akselmo.dev)"+ license="MIT">++ <highlighting>+ <list name="controlflow">+ <item>if</item>+ <item>else</item>+ <item>when</item>+ <item>for</item>+ <item>in</item>+ <item>not_in</item>+ <item>switch</item>+ <item>return</item>+ <item>do</item>+ <item>where</item>+ <item>fallthrough</item>+ <item>break</item>+ <item>continue</item>+ <item>or_else</item>+ <item>or_return</item>+ <item>or_break</item>+ <item>or_continue</item>+ </list>++ <list name="keywords">+ <item>const</item>+ <item>case</item>+ <item>defer</item>+ <item>asm</item>+ <item>distinct</item>+ <item>nil</item>+ <item>true</item>+ <item>false</item>+ <item>---</item>+ <item>struct</item>+ <item>enum</item>+ <item>union</item>+ <item>map</item>+ <item>bit_set</item>+ <item>dynamic</item>+ <item>cast</item>+ <item>transmute</item>+ <item>auto_cast</item>+ <item>force_inline</item>+ <item>force_no_inline</item>+ <item>size_of</item>+ <item>align_of</item>+ <item>offset_of</item>+ <item>type_of</item>+ <item>type_info_of</item>+ <item>typeid_of</item>+ </list>++ <list name="context">+ <item>context</item>+ </list>++ <list name="types">+ <item>i8</item>+ <item>i16</item>+ <item>i32</item>+ <item>i64</item>+ <item>i128</item>+ <item>int</item>+ <item>u8</item>+ <item>u16</item>+ <item>u32</item>+ <item>u64</item>+ <item>u128</item>+ <item>uint</item>+ <item>uintptr</item>+ <item>f16</item>+ <item>f32</item>+ <item>f64</item>+ <item>f16le</item>+ <item>f32le</item>+ <item>f64le</item>+ <item>f16be</item>+ <item>f32be</item>+ <item>f64be</item>+ <item>complex32</item>+ <item>complex64</item>+ <item>complex128</item>+ <item>complex_float</item>+ <item>complex_double</item>+ <item>quaternion64</item>+ <item>quaternion128</item>+ <item>quaternion256</item>+ <item>bool</item>+ <item>b8</item>+ <item>b16</item>+ <item>b32</item>+ <item>b64</item>+ <item>string</item>+ <item>cstring</item>+ <item>rune</item>+ <item>rawptr</item>+ <item>any</item>+ <item>typeid</item>+ <item>byte</item>+ <item>u16le</item>+ <item>u32le</item>+ <item>u64le</item>+ <item>u128le</item>+ <item>i16le</item>+ <item>i32le</item>+ <item>i64le</item>+ <item>i128le</item>+ <item>i16be</item>+ <item>i32be</item>+ <item>i64be</item>+ <item>i128be</item>+ <item>u16be</item>+ <item>u32be</item>+ <item>u64be</item>+ <item>u128be</item>+ </list>++ <list name="procedure">+ <item>proc</item>+ </list>++ <list name="import">+ <item>import</item>+ <item>package</item>+ <item>foreign</item>+ </list>++ <list name="attributes">+ <item>private</item>+ <item>require</item>+ <item>link_name</item>+ <item>link_prefix</item>+ <item>linkage</item>+ <item>default_calling_convention</item>+ <item>link_section</item>+ <item>extra_linker_flags</item>+ <item>deferred_in</item>+ <item>deferred_out</item>+ <item>deferred_in_out</item>+ <item>deferred_none</item>+ <item>deprecated</item>+ <item>require_results</item>+ <item>disabled</item>+ <item>init</item>+ <item>cold</item>+ <item>optimization_mode</item>+ <item>test</item>+ <item>static</item>+ <item>thread_local</item>+ <item>builtin</item>+ <item>objc_type</item>+ <item>objc_is_class_method</item>+ <item>require_target_feature</item>+ <item>enable_target_feature</item>+ </list>++ <contexts>+ <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >+ <Detect2Chars attribute="Comment" char="/" char1="/" context="SingleLineComment"/>+ <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" lookAhead="true" beginRegion="Comment1" />+ <Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/>+ <DetectChar attribute="String" context="DoubleQuoteString" char="""/>+ <DetectChar attribute="Character" context="Character" char="'"/>+ <keyword attribute="Control Flow" context="#stay" String="controlflow" />+ <keyword attribute="Keyword" context="#stay" String="keywords" />+ <keyword attribute="Data Type" context="#stay" String="types" />+ <keyword String="context" attribute="Context Variable" context="#stay"/>+ <DetectChar attribute="Attribute" context="AttributeContext" char='@' column="0"/>+ <AnyChar context="Number" String="0123456789" lookAhead="1" />+ <RegExpr attribute="Directive" context="#stay" String="\#\w+"/>+ <RegExpr attribute="Procedure" firstNonSpace="true" context="Procedure" String="\w{1,}\s{0,}::\s{0,}(?=proc)" lookAhead="true"/>+ <RegExpr attribute="Procedure" context="#stay" String="[A-Za-z_0-9]*\s*(?=\()" />+ <RegExpr attribute="Variable" context="#stay" firstNonSpace="true" String="\w{1,},{0,1}\s{0,}\w{0,}\s{0,}(?=:\=|:\s{0,}\w{1,}\s{0,}\=)(?!::)"/> <!--TODO this is too expensive-->+ <AnyChar attribute="Operator" context="#stay" String="&symbols;" />+ <DetectChar attribute="Operator" context="#stay" char="{" beginRegion="Brace1" />+ <DetectChar attribute="Operator" context="#stay" char="}" endRegion="Brace1" />+ <DetectChar attribute="RawString" context="RawString" char="`" />+ <keyword attribute="Use" context="#stay" String="import"/>+ <DetectIdentifier/>+ </context>++ <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop">+ <IncludeRules context="##Comments" />+ </context>++ <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">+ <IncludeRules context="##Comments" />+ <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment1"/>+ </context>++ <context attribute="String" lineEndContext="#pop" name="DoubleQuoteString">+ <DetectChar context="EscapeChar" char="\" lookAhead="1"/>+ <DetectChar attribute="String" context="#pop" char="""/>+ </context>+ <context attribute="Character" lineEndContext="#pop" name="Character">+ <DetectChar context="EscapeChar" char="\" lookAhead="1"/>+ <DetectChar attribute="Character" context="#pop" char="'"/>+ </context>+ <context name="EscapeChar" attribute="String Char" lineEndContext="#pop">+ <RegExpr attribute="String Char" context="#pop" String="\\([nrt'"\\]|x[0-9a-fA-F]{2}|[0-7]{3}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})"/>+ </context>++ <context name="RawString" attribute="RawString" lineEndContext="#stay">+ <DetectChar attribute="RawString" context="#pop" char="`" />+ </context>++ <context name="Procedure" attribute="Procedure" lineEndContext="#pop">+ <Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/>+ <WordDetect attribute="Keyword" context="#stay" String="proc" />+ <DetectChar attribute="String" context="SimpleDoubleQuoteString" char="""/> <!--e.g, "contextless" | "c" -->+ <AnyChar attribute="Symbol" context="#pop" lookAhead="true" String="\("/>+ </context>++ <context attribute="String" lineEndContext="#pop" name="SimpleDoubleQuoteString">+ <DetectChar attribute="String" context="#pop" char="""/>+ </context>++ <context name="AttributeContext" attribute="Normal Text" lineEndContext="#pop">+ <DetectChar attribute="Symbol" context="#stay" char='('/>+ <DetectSpaces />+ <keyword attribute="Attribute" context="#pop" String="attributes" />+ </context>++ <!-- Integer / Float -->+ <context name="Number" attribute="Normal Text" lineEndContext="#pop">+ <RegExpr attribute="Float" context="#pop!SuffixNumber" String="&dec_int;(\.&dec_int;&exp_float;?|&exp_float;)"/>+ <RegExpr attribute="Decimal" context="#pop!SuffixNumber" String="0(?=[^xob]|$)|(?=0[xob])|&dec_int;"/>+ <RegExpr attribute="Hex" context="#pop!SuffixNumber" String="0x&hex_int;"/>+ <RegExpr attribute="Octal" context="#pop!SuffixNumber" String="0o&oct_int;"/>+ <RegExpr attribute="Binary" context="#pop!SuffixNumber" String="0b&bin_int;"/>+ <DetectChar attribute="Decimal" context="#pop!SuffixNumber" char="0"/>+ </context>+ <context name="SuffixNumber" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectChar attribute="Symbol" char=':' context="#pop"/> <!-- in `[0:a]` -->+ <StringDetect attribute="Symbol" String=".." context="#pop"/> <!-- in `0..a` -->+ <AnyChar attribute="Error" String=".0123456789" context="#pop"/>+ <DetectIdentifier attribute="Error" context="#pop"/>+ </context>++ </contexts>+ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>+ <itemData name="Variable" defStyleNum="dsVariable"/>+ <itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>+ <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false"/>+ <itemData name="Attribute" defStyleNum="dsAttribute"/>+ <itemData name="Directive" defStyleNum="dsPreprocessor"/>+ <itemData name="Procedure" defStyleNum="dsFunction"/>+ <itemData name="Operator" defStyleNum="dsOperator"/>+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="RawString" defStyleNum="dsSpecialString"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false"/>+ <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>+ <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>+ <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/>+ <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>+ <itemData name="Use" defStyleNum="dsImport"/>+ <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>+ <itemData name="Context Variable" defStyleNum="dsKeyword" spellChecking="0"/>+ <itemData name="Symbol" defStyleNum="dsOperator" spellChecking="false"/>+ <itemData name="String Char" defStyleNum="dsSpecialChar"/>+ <itemData name="Character" defStyleNum="dsChar" spellChecking="false"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start="//" position="afterwhitespace" />+ <comment name="multiLine" start="/*" end="*/" region="Comment"/>+ </comments>+ </general>+</language>
xml/orgmode.xml view
@@ -33,20 +33,33 @@ <!-- org syntax spec: https://orgmode.org/worg/dev/org-syntax.html --> <!-- syntax highlight: https://docs.kde.org/stable5/en/kate/katepart/highlight.html -->-<language name="Org Mode" version="4" kateversion="5.79" section="Markup" extensions="*.org" priority="15" author="Gary Wang" license="MIT">+<language name="Org Mode" version="8" kateversion="5.79" section="Markup" extensions="*.org" priority="15" author="Gary Wang" license="MIT"> <highlighting> <list name="org-todo-keywords-todo"> <item>TODO</item>+ <item>NEXT</item> </list>+ <list name="org-todo-keywords-doing">+ <item>DOING</item>+ </list>+ <list name="org-todo-keywords-waiting">+ <item>WAITING</item>+ </list>+ <list name="org-todo-keywords-canceled">+ <item>CANCELED</item>+ <item>CANCELLED</item>+ </list> <list name="org-todo-keywords-done"> <item>DONE</item> </list> <contexts> <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">+ <StringDetect String=":PROPERTIES:" attribute="Block" context="property-block" beginRegion="PropertiesBlock" lookAhead="true"/> <DetectChar context="find-header" char="*" column="0" lookAhead="true"/> <RegExpr attribute="List" context="list" String="^(\s*)&listbullet;(\s+)" column="0"/> <RegExpr attribute="Number List" context="numlist" String="^(\s*)\d+(?:\.|\))(\s+)" column="0"/> <RegExpr attribute="Comment" String="^(\s*)# .*" column="0"/>+ <StringDetect attribute="Block" context="find-src-block" String="#+BEGIN_SRC" beginRegion="RegionBlock" column="0"/> <RegExpr attribute="Block" context="find-block" String="^#\+BEGIN(_\w+|:).*" beginRegion="RegionBlock" column="0"/> <RegExpr attribute="Babel" String="^(\s*)#\+[A-Z]+(?:\[[A-Z]+\])?:.*" column="0"/> <DetectChar context="find-bold-normal" char="*" lookAhead="true"/>@@ -60,12 +73,18 @@ <RegExpr attribute="Normal Text: Link" String="&implicitlink;"/> </context> <context name="find-header" attribute="Normal Text" lineEndContext="#pop">- <RegExpr context="parse-header" String="^(?:\*){1,}\s+(?:([A-Z]+)\s+){0,1}(?:(\[#(?:[A-Z\d]+)\])\s+){0,1}(.*)\s*(\[[\d/%]+\]){0,1}\s*$" column="0" lookAhead="true"/>+ <RegExpr context="parse-header" String="^(?:\*){1,}\s+(?:([A-Z]+)\s+){0,1}(?:(\[#(?:[A-Z\d]+)\])\s+){0,1}(.*)\s*(\[[\d/%]+\]){0,1}\s*$" column="0" lookAhead="true" beginRegion="ItemBlock" endRegion="ItemBlock"/> </context>+ <context name="property-block" attribute="Block" lineEndContext="#stay">+ <StringDetect String=":END:" attribute="Block" context="#pop" endRegion="PropertiesBlock" lookAhead="false"/>+ </context> <context name="parse-header" attribute="Heading" lineEndContext="#pop"> <RegExpr attribute="Heading" String="(?:\*){1,}\s+" lookAhead="false"/> <keyword String="org-todo-keywords-todo" attribute="Keyword Todo" context="#stay" /> <keyword String="org-todo-keywords-done" attribute="Keyword Done" context="#stay" />+ <keyword String="org-todo-keywords-doing" attribute="Keyword Doing" context="#stay" />+ <keyword String="org-todo-keywords-waiting" attribute="Keyword Waiting" context="#stay" />+ <keyword String="org-todo-keywords-canceled" attribute="Keyword Canceled" context="#stay" /> <RegExpr attribute="Cookie: Priority" String="\[#(?:[A-Z\d]+)\]" lookAhead="false"/> <RegExpr attribute="Cookie: Statistics" String="\[[\d/%]+\]" lookAhead="false"/> </context>@@ -80,6 +99,46 @@ <context name="find-block" attribute="Block" lineEndContext="#stay"> <StringDetect context="#pop" attribute="Block" String="#+END%1" dynamic="true" endRegion="RegionBlock" column="0"/> </context>+ <!-- Source Code Syntax Highlighting Blocks -->+ <context name="find-src-block" attribute="Block" lineEndContext="#pop">+ <RegExpr attribute="Block" context="#pop!bash-code" String="\s*(?:bash(?:rc|_profile|_login|_logout)?|shell|sh|profile|PKGBUILD|APKBUILD|ebuild|eclass|nix)" insensitive="true"/>+ <RegExpr attribute="Block" context="#pop!zsh-code" String="\s*(?:zsh)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!cpp-code" String="\s*(?:[ch]pp|[ch]\+\+|[ch]xx|h?cc|hh|cuh?|ino|pde|moc)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!csharp-code" String="\s*(?:cs|csharp|c\#)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!cmake-code" String="\s*(?:cmake|CMakeLists(?:\.txt)?)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!css-code" String="\s*css" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!c-code" String="\s*[ch]" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!doxygen-code" String="\s*doxygen" insensitive="true" beginRegion="code-block"/> <!-- Block comment of Doxygen -->+ <RegExpr attribute="Block" context="#pop!email-code" String="\s*(?:email|emlx?|mbo?x)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!go-code" String="\s*go(?:lang)?" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!hamlet-code" String="\s*[wxs]?hamlet" insensitive="true" beginRegion="code-block"/> <!-- Included in the Haskell definition -->+ <RegExpr attribute="Block" context="#pop!haskell-code" String="\s*(?:haskell|c?hs|hs\-boot)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!html-code" String="\s*(?:[sx]?html?|inc|tmpl|tpl)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!java-code" String="\s*(?:java|bsh)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!javascript-code" String="\s*(?:javascript|m?js|es6|kwinscript|julius)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!jsx-code" String="\s*(?:jsx|tsx|(?:java|type)script\-react)" insensitive="true" beginRegion="code-block"/> <!-- Included in the HTML definition. Also apply for TSX. -->+ <RegExpr attribute="Block" context="#pop!json-code" String="\s*(?:json5?|gltf)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!yaml-code" String="\s*(?:ya?ml)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!matlab-code" String="\s*matlab" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!markdown-code" String="\s*(?:markdown|m?md)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!mustache-code" String="\s*(?:handlebars|hbs|mustache|mst|ractive|hogan|hulk)" insensitive="true" beginRegion="code-block"/> <!-- Included in the HTML definition -->+ <RegExpr attribute="Block" context="#pop!perl-code" String="\s*(?:perl|p[lm]|pod|psgi|vcl)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!php-code" String="\s*(?:php[3457t]?|wml|phtml?|aw|ctp)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!python-code" String="\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!qml-code" String="\s*qml(?:types)?" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!r-code" String="\s*(?:r|rprofile|rscript).?\n" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!raku-code" String="\s*(?:raku(?:mod|doc|test)?|perl6|p[lm]?6|pod6|nqp)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!rest-code" String="\s*(?:rst|rest|restructuredtext)" insensitive="true" beginRegion="code-block"/> <!-- Included in the CMake definition -->+ <RegExpr attribute="Block" context="#pop!rust-code" String="\s*(?:rust|rs)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!ruby-code" String="\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!rhtml-code" String="\s*(?:xml\.|js\.)?erb" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!mysql-code" String="\s*(?:mysql|sql|ddl)" insensitive="true" beginRegion="code-block"/> <!-- Included in the PHP definition -->+ <RegExpr attribute="Block" context="#pop!nim-code" String="\s*(?:nims?)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!typescript-code" String="\s*(?:typescript|ts)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!xml-code" String="\s*(?:xml|xsd|xspf|tld|jsp|c?pt|dtml|rss|opml|svg|daml|rdf|ui|kcfg|qrc|wsdl|scxml|xbel|dae|sch|brd|docbook)" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Block" context="#pop!odin-code" String="\s*(?:odin)" insensitive="true" beginRegion="code-block"/>+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ </context> <context name="find-bold-normal" attribute="Normal Text" lineEndContext="#pop"> <RegExpr attribute="Bold Text" context="#pop" minimal="true" String="&bold_regex;"/> <DetectChar attribute="Normal Text" context="#pop" char="*"/>@@ -114,6 +173,153 @@ <RegExpr attribute="Code" context="#pop" minimal="true" String="&inlinecode_regex;"/> <DetectChar attribute="Normal Text" context="#pop" char="~"/> </context>++ <!-- Source Code Syntax Highlighting -->+ <context attribute="Normal Text" lineEndContext="#stay" name="bash-code" fallthroughContext="Command##Bash">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Bash" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="zsh-code" fallthroughContext="Command##Zsh">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Zsh" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="cmake-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##CMake" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="c-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##C" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="cpp-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##C++" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="csharp-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##C#" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="css-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##CSS" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="doxygen-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="BlockComment##Doxygen" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="email-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Email" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="go-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Go" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="hamlet-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Hamlet" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="haskell-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Haskell" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="html-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##HTML" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="java-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Java" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="javascript-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="jsx-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="Normal##JavaScript React (JSX)" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="json-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##JSON" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="yaml-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##YAML" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="markdown-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="Normal Text##Markdown"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="matlab-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Matlab" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="mustache-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Mustache/Handlebars (HTML)" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="perl-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Perl" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="php-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="phpsource##PHP/PHP" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="python-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Python" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="qml-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="Normal##QML" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="r-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##R Script" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="raku-code" fallthroughContext="term##Raku">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="base##Raku" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="rest-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##reStructuredText" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="ruby-code" fallthroughContext="Expr##Ruby">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="Ruby##Ruby" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="rhtml-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Ruby/Rails/RHTML" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="rust-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Rust" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="mysql-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##SQL (MySQL)" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="nim-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Nim" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="typescript-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="Normal##TypeScript" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="xml-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##XML" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="odin-code">+ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>+ <IncludeRules context="##Odin" includeAttrib="true"/>+ </context>+ </contexts> <itemDatas> <itemData name="Normal Text" defStyleNum="dsNormal"/>@@ -124,6 +330,9 @@ <itemData name="Strikethrough Text" defStyleNum="dsNormal" strikeOut="true"/> <itemData name="Keyword Done" defStyleNum="dsInformation" spellChecking="false"/> <itemData name="Keyword Todo" defStyleNum="dsAlert" spellChecking="false"/>+ <itemData name="Keyword Doing" defStyleNum="dsControlFlow" spellChecking="false"/>+ <itemData name="Keyword Waiting" defStyleNum="dsOthers" spellChecking="false"/>+ <itemData name="Keyword Canceled" defStyleNum="dsError" spellChecking="false"/> <itemData name="Cookie: Priority" defStyleNum="dsInformation" spellChecking="false"/> <itemData name="Cookie: Statistics" defStyleNum="dsInformation" spellChecking="false"/> <itemData name="Heading" defStyleNum="dsFunction"/>
xml/php.xml view
@@ -77,7 +77,7 @@ <!ENTITY float "\b&LNUM;(\.(&LNUM;)?(&EXPONENT;)?|&EXPONENT;)|\.&LNUM;(&EXPONENT;)?"> ]> -<language name="PHP/PHP" indenter="cstyle" version="27" kateversion="5.79" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">+<language name="PHP/PHP" indenter="cstyle" version="28" kateversion="5.79" section="Scripts" extensions="" priority="5" mimetype="" hidden="true"> <highlighting> <!-- https://php.watch/versions --> <!-- Based on 8.3 (https://php.watch/versions/8.3 and https://stitcher.io/blog/new-in-php-83) -->@@ -11291,7 +11291,7 @@ <context name="doublequotestringescaped" attribute="String" lineEndContext="#stay"> <!-- Common rules for double quoted strings and backticks (execution operator) URL: https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double -->- <RegExpr attribute="Backslash Code" context="#pop" String="\\([\\nrtvef$"]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u\{[0-9A-Fa-f]+\})"/>+ <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>
xml/python.xml view
@@ -38,882 +38,2238 @@ <!ENTITY rawString "(?:ru|u?r|)(?:'(?:[^']++|\\')*+'|"(?:[^"]++|\\")*+")"> <!ENTITY formatString "(?:r?f|fr?)(?:'(?:[^'{]++|\\'|\{\{|\{[^}]++\})*+'|"(?:[^"]++|\\"|\{\{|\{[^}]*+\})*+")"> <!ENTITY string "&rawString;|&formatString;">-]>-<!-- Python syntax highlightning v0.9 by Per Wigren -->-<!-- Python syntax highlighting v1.9 by Michael Bueker (improved keyword differentiation) -->-<!-- Python syntax highlighting v1.97 by Paul Giannaros -->-<!-- Python syntax highlighting v1.99 by Primoz Anzur -->-<!-- Python syntax highlighting v2.01 by Paul Giannaros:- * full format character support- * unicode string modifier supported -->-<!-- v2.02 remove RegExpr for nums and make indent consistent -->-<!-- v2.03 highlight decorators, remove operator regex, don't highlight parens as operators -->-<!-- v2.04 make alerts visible even if they are directly after ''' or # without a space -->-<!-- v2.06 decorator names can (and often do) contain periods -->-<!-- v2.07 add support for %prog and co, see bug 142832 -->-<!-- v2.08 add missing overloaders, new Python 3 statements, builtins, and keywords -->-<!-- v2.29 recognize escape sequenzes correctly -->-<language name="Python" alternativeNames="Py" version="28" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;*.pyi;SConstruct;SConscript;*.FCMacro" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">- <highlighting>- <list name="import">- <item>import</item>- <item>from</item>- <item>as</item>- </list>- <list name="defs">- <item>class</item>- <item>def</item>- <item>del</item>- <item>global</item>- <item>lambda</item>- <item>nonlocal</item>- </list>- <list name="operators">- <item>and</item>- <item>in</item>- <item>is</item>- <item>not</item>- <item>or</item>- </list>- <list name="flow">- <item>assert</item>- <item>break</item>- <item>continue</item>- <item>elif</item>- <item>else</item>- <item>except</item>- <item>finally</item>- <item>for</item>- <item>if</item>- <item>pass</item>- <item>raise</item>- <item>return</item>- <item>try</item>- <item>while</item>- <item>with</item>- <item>async</item>- <item>await</item>- </list>- <list name="flow_yield">- <item>yield</item>- <!--- "yield from" added here as a keyword for autocompletion. The actual handling- is in context="yield" so that we won't need to add space as a weakDeliminator.- -->- <item>yield from</item>- </list>- <list name="patternmatching">- <item>match</item>- <item>case</item>- </list>- <list name="builtinfuncs">- <!-- https://docs.python.org/3.11/library/functions.html#built-in-funcs -->- <item>__import__</item>- <item>abs</item>- <item>aiter</item>- <item>all</item>- <item>anext</item>- <item>any</item>- <item>apply</item>- <item>ascii</item>- <item>basestring</item>- <item>bin</item>- <item>breakpoint</item>- <item>bool</item>- <item>buffer</item>- <item>bytearray</item>- <item>bytes</item>- <item>callable</item>- <item>chr</item>- <item>classmethod</item>- <item>cmp</item>- <item>coerce</item>- <item>compile</item>- <item>complex</item>- <item>delattr</item>- <item>dict</item>- <item>dir</item>- <item>divmod</item>- <item>enumerate</item>- <item>eval</item>- <item>exec</item>- <item>execfile</item>- <item>file</item>- <item>filter</item>- <item>float</item>- <item>format</item>- <item>frozenset</item>- <item>getattr</item>- <item>globals</item>- <item>hasattr</item>- <item>hash</item>- <item>help</item>- <item>hex</item>- <item>id</item>- <item>input</item>- <item>int</item>- <item>intern</item>- <item>isinstance</item>- <item>issubclass</item>- <item>iter</item>- <item>len</item>- <item>list</item>- <item>locals</item>- <item>long</item>- <item>map</item>- <item>max</item>- <item>memoryview</item>- <item>min</item>- <item>next</item>- <item>object</item>- <item>oct</item>- <item>open</item>- <item>ord</item>- <item>pow</item>- <item>print</item>- <item>property</item>- <item>range</item>- <item>raw_input</item>- <item>reduce</item>- <item>reload</item>- <item>repr</item>- <item>reversed</item>- <item>round</item>- <item>set</item>- <item>setattr</item>- <item>slice</item>- <item>sorted</item>- <item>staticmethod</item>- <item>str</item>- <item>sum</item>- <item>super</item>- <item>tuple</item>- <item>type</item>- <item>unichr</item>- <item>unicode</item>- <item>vars</item>- <item>xrange</item>- <item>zip</item>- </list>- <list name="specialvars">- <item>None</item>- <item>self</item>- <item>True</item>- <item>False</item>- <item>NotImplemented</item>- <item>Ellipsis</item>- <item>__debug__</item>- <item>__file__</item>- <item>__name__</item>- <item>__qualname__</item>- </list>- <list name="bindings">- <item>SIGNAL</item>- <item>SLOT</item>- <item>connect</item>- </list>- <list name="overloaders">- <!-- https://docs.python.org/3.10/reference/datamodel.html#special-method-names -->- <item>__new__</item>- <item>__init__</item>- <item>__del__</item>- <item>__repr__</item>- <item>__str__</item>- <item>__lt__</item>- <item>__le__</item>- <item>__eq__</item>- <item>__ne__</item>- <item>__gt__</item>- <item>__ge__</item>- <item>__cmp__</item>- <item>__rcmp__</item>- <item>__hash__</item>- <item>__bool__</item>- <item>__nonzero__</item>- <item>__unicode__</item>- <item>__getattr__</item>- <item>__setattr__</item>- <item>__delattr__</item>- <item>__getattribute__</item>- <item>__get__</item>- <item>__set__</item>- <item>__delete__</item>- <item>__call__</item>- <item>__len__</item>- <item>__length_hint__</item>- <item>__getitem__</item>- <item>__setitem__</item>- <item>__delitem__</item>- <item>__missing__</item>- <item>__iter__</item>- <item>__reversed__</item>- <item>__contains__</item>- <item>__getslice__</item>- <item>__setslice__</item>- <item>__delslice__</item>- <item>__add__</item>- <item>__sub__</item>- <item>__mul__</item>- <item>__matmul__</item>- <item>__floordiv__</item>- <item>__mod__</item>- <item>__divmod__</item>- <item>__pow__</item>- <item>__lshift__</item>- <item>__rshift__</item>- <item>__and__</item>- <item>__xor__</item>- <item>__or__</item>- <item>__div__</item>- <item>__truediv__</item>- <item>__radd__</item>- <item>__rsub__</item>- <item>__rmul__</item>- <item>__rmatmul__</item>- <item>__rdiv__</item>- <item>__rtruediv__</item>- <item>__rfloordiv__</item>- <item>__rmod__</item>- <item>__rdivmod__</item>- <item>__rpow__</item>- <item>__rlshift__</item>- <item>__rrshift__</item>- <item>__rand__</item>- <item>__rxor__</item>- <item>__ror__</item>- <item>__iadd__</item>- <item>__isub__</item>- <item>__imul__</item>- <item>__imatmul__</item>- <item>__idiv__</item>- <item>__itruediv__</item>- <item>__ifloordiv__</item>- <item>__imod__</item>- <item>__ipow__</item>- <item>__ilshift__</item>- <item>__irshift__</item>- <item>__iand__</item>- <item>__ixor__</item>- <item>__ior__</item>- <item>__neg__</item>- <item>__pos__</item>- <item>__abs__</item>- <item>__invert__</item>- <item>__complex__</item>- <item>__int__</item>- <item>__long__</item>- <item>__float__</item>- <item>__oct__</item>- <item>__hex__</item>- <item>__index__</item>- <item>__round__</item>- <item>__trunc__</item>- <item>__floor__</item>- <item>__ceil__</item>- <item>__coerce__</item>- <item>__enter__</item>- <item>__exit__</item>- <item>__match_args__</item>- <item>__buffer__</item>- <item>__release_buffer__</item>- <item>__bytes__</item>- <item>__format__</item>- <item>__next__</item>- <item>__dir__</item>- <item>__await__</item>- <item>__aiter__</item>- <item>__anext__</item>- <item>__aenter__</item>- <item>__aexit__</item>- <item>__slots__</item>- <item>__init_subclass__</item>- <item>__set_name__</item>- <item>__prepare__</item>- <item>__instancecheck__</item>- <item>__subclasscheck__</item>- <item>__class_getitem__</item>- </list>- <list name="exceptions">- <!--- Exceptions list resources used:- - http://docs.python.org/2.7/library/exceptions.html#exception-hierarchy- - http://docs.python.org/3.10/library/exceptions.html#exception-hierarchy- -->- <item>ArithmeticError</item>- <item>AssertionError</item>- <item>AttributeError</item>- <item>BaseException</item>- <item>BlockingIOError</item>- <item>BrokenPipeError</item>- <item>BufferError</item>- <item>BytesWarning</item>- <item>ChildProcessError</item>- <item>ConnectionAbortedError</item>- <item>ConnectionError</item>- <item>ConnectionRefusedError</item>- <item>ConnectionResetError</item>- <item>DeprecationWarning</item>- <item>EnvironmentError</item>- <item>EOFError</item>- <item>EncodingWarning</item>- <item>Exception</item>- <item>FileExistsError</item>- <item>FileNotFoundError</item>- <item>FloatingPointError</item>- <item>FutureWarning</item>- <item>GeneratorExit</item>- <item>ImportError</item>- <item>ImportWarning</item>- <item>IndentationError</item>- <item>IndexError</item>- <item>InterruptedError</item>- <item>IOError</item>- <item>IsADirectoryError</item>- <item>KeyboardInterrupt</item>- <item>KeyError</item>- <item>LookupError</item>- <item>MemoryError</item>- <item>ModuleNotFoundError</item>- <item>NameError</item>- <item>NotADirectoryError</item>- <item>NotImplementedError</item>- <item>OSError</item>- <item>OverflowError</item>- <item>PendingDeprecationWarning</item>- <item>PermissionError</item>- <item>ProcessLookupError</item>- <item>RecursionError</item>- <item>ReferenceError</item>- <item>ResourceWarning</item>- <item>RuntimeError</item>- <item>RuntimeWarning</item>- <item>StandardError</item>- <item>StopAsyncIteration</item>- <item>StopIteration</item>- <item>SyntaxError</item>- <item>SyntaxWarning</item>- <item>SystemError</item>- <item>SystemExit</item>- <item>TabError</item>- <item>TimeoutError</item>- <item>TypeError</item>- <item>UnboundLocalError</item>- <item>UnicodeDecodeError</item>- <item>UnicodeEncodeError</item>- <item>UnicodeError</item>- <item>UnicodeTranslateError</item>- <item>UnicodeWarning</item>- <item>UserWarning</item>- <item>ValueError</item>- <item>Warning</item>- <item>WindowsError</item>- <item>ZeroDivisionError</item>- </list>- <contexts>- <context name="Normal" attribute="Normal Text" lineEndContext="#stay">- <DetectSpaces attribute="Normal Text"/>-- <DetectChar attribute="Normal Text" char="(" context="Tuple" beginRegion="Tuple"/>- <DetectChar attribute="Normal Text" char="[" context="List" beginRegion="List"/>- <DetectChar attribute="Normal Text" char="{" context="Dictionary" beginRegion="Dictionary"/>-- <DetectChar attribute="Comment" char="#" context="Hash comment"/>-- <keyword attribute="Special Variable" String="specialvars" context="#stay"/>- <keyword attribute="Flow Control Keyword" String="flow" context="#stay"/>- <keyword attribute="Operator Keyword" String="operators" context="#stay"/>- <keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/>- <keyword attribute="Definition Keyword" String="defs" context="#stay"/>- <keyword attribute="Flow Control Keyword" String="flow_yield" context="yield"/>- <keyword attribute="Flow Control Keyword" String="patternmatching" context="Pattern Matching" lookAhead="1" firstNonSpace="1"/>- <keyword attribute="Import" String="import" context="#stay"/>- <keyword attribute="Exceptions" String="exceptions" context="#stay"/>- <keyword attribute="Overloaders" String="overloaders" context="#stay"/>- <keyword attribute="Extensions" String="bindings" context="#stay"/>-- <IncludeRules context="Number" />- <IncludeRules context="CommentVariants" />- <IncludeRules context="StringVariants" />-- <DetectIdentifier attribute="Normal Text"/>-- <RegExpr attribute="Decorator" String="@[_a-zA-Z[:^ascii:]][\._a-zA-Z0-9[:^ascii:]]*" firstNonSpace="true"/>- <Detect2Chars attribute="Operator" char=":" char1="=" context="#stay"/>- <AnyChar attribute="Operator" String="+*/%|=;<>!^&~-@" context="#stay"/>-- <LineContinue attribute="Operator" context="MultiLineExpr"/>-- <Int attribute="Error"/>- </context>- <context name="MultiLineExpr" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">- <DetectSpaces attribute="Normal Text"/>- <IncludeRules context="StringVariants" />- </context>-- <!-- https://docs.python.org/2/reference/lexical_analysis.html#integer-and-long-integer-literals -->- <!-- https://docs.python.org/3/reference/lexical_analysis.html#integer-literals -->- <context name="Number" attribute="Normal Text" lineEndContext="#pop">- <!-- fast path -->- <RegExpr String="&beforeDigit;[0-9]|&beforePointFloat;\.[0-9]" context="AssumeNumber" lookAhead="1"/>- </context>- <context name="AssumeNumber" attribute="Normal Text" lineEndContext="#pop">- <!-- Complex: 1j ; 1.1j ; 1.j ; .1j ; 1e3j ; 1.1e3j ; 1.e3j ; .1e3j -->- <RegExpr attribute="Complex" String="(?:&digitPart;(?:\.(?:&digitPart;)?)?|&beforePointFloat;\.&digitPart;)(?:[eE][\+\-]?&digitPart;)?[jJ]" context="CheckSuffixError"/>- <!-- Hexadecimal: 0xA1, Binary: 0b01, Octal: 0o71 -->- <RegExpr attribute="Hex" String="0[xX](?:_?[0-9a-fA-F])+" context="CheckSuffixError"/>- <RegExpr attribute="Binary" String="0[bB](?:_?[01])+" context="CheckSuffixError"/>- <RegExpr attribute="Octal" String="0[oO](?:_?[0-7])+" context="CheckSuffixError"/>- <!-- Float: 1.1 ; 1. ; .1 ; 1e3 ; 1.1e3 ; 1.e3 ; .1e3 -->- <RegExpr attribute="Float" String="(?:&digitPart;(?:\.(?:&digitPart;)?)?|\.&digitPart;)[eE][\+\-]?&digitPart;|&digitPart;\.(?:&digitPart;)?|\.&digitPart;" context="CheckSuffixError"/>- <!-- Decimal: 123 ; 000 -->- <!-- l and L are python2 suffixes -->- <RegExpr attribute="Int" String="(?:[1-9](?:_?\d)*|0(?:_?0)*)[lL]?" context="CheckSuffixError"/>- </context>- <context name="CheckSuffixError" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">- <RegExpr attribute="Error" String="[\w\d]+" context="#pop#pop"/>- </context>-- <context name="yield" attribute="Flow Control Keyword" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <WordDetect attribute="Flow Control Keyword" context="#pop" String="from"/>- </context>-- <context name="Pattern Matching" attribute="Flow Control Keyword" lineEndContext="#pop">- <!--- Python 3.10: https://docs.python.org/3.10/reference/compound_stmts.html#the-match-statement- ( 'match' | 'case' ) expression ':'- exclude:- ( 'match' | 'case' ) ( 'if' | 'for' | '.' | ':' | '=' | ',' | ']' | ')' ) ...- -->- <RegExpr attribute="Flow Control Keyword" String="\w++(?=\s+(?!(?:if|for)\b)[\w'"~]|\s*+(?![.:=\]),]|(?:if|for)\b)((?:&string;|[^#;(){}]|\(\)|\((?1)\)|\{\}|\{(\s*+(?:(?:&string;|[a-zA-Z0-9.]++)\s*+:\s*+(?:&string;|[^#;(){},]|\(\)|\((?1)\)|\{\}|\{(?2)\})++,?)*+)\})+?):)|" context="#pop"/>- <DetectIdentifier attribute="Normal Text" context="#pop"/>- </context>-- <context name="#CheckForString" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">- <DetectSpaces/>- <LineContinue attribute="Normal Text" context="#pop!CheckForStringNext"/>- </context>-- <context name="CheckForStringNext" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">- <DetectSpaces/>- <LineContinue attribute="Normal Text" context="#stay"/>- <IncludeRules context="StringVariants"/>- </context>-- <!-- https://docs.python.org/2/reference/lexical_analysis.html#string-literals -->- <!-- https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals -->- <context name="StringVariants" attribute="Normal Text" lineEndContext="#stay">- <!-- fast path -->- <RegExpr String="(?:u|r|b|f|ur|fr|rf|br|rb)?['"]" insensitive="true" context="AssumeStringVariants" lookAhead="1"/>- </context>- <context name="AssumeStringVariants" attribute="Normal Text" lineEndContext="#stay">- <RegExpr attribute="String" String="u?'''" insensitive="true" context="#pop!Triple A-string" beginRegion="Triple A-region"/>- <RegExpr attribute="String" String="u?"""" insensitive="true" context="#pop!Triple Q-string" beginRegion="Triple Q-region"/>- <RegExpr attribute="String" String="u?'" insensitive="true" context="#pop!Single A-string"/>- <RegExpr attribute="String" String="u?"" insensitive="true" context="#pop!Single Q-string"/>-- <StringDetect attribute="F-String" String="f'''" insensitive="true" context="#pop!Triple A-F-String" beginRegion="Triple A-region"/>- <StringDetect attribute="F-String" String="f"""" insensitive="true" context="#pop!Triple Q-F-String" beginRegion="Triple Q-region"/>- <StringDetect attribute="F-String" String="f'" insensitive="true" context="#pop!Single A-F-String"/>- <StringDetect attribute="F-String" String="f"" insensitive="true" context="#pop!Single Q-F-String"/>-- <RegExpr attribute="Raw String" String="u?r'''" insensitive="true" context="#pop!Raw Triple A-string" beginRegion="Triple A-region"/>- <RegExpr attribute="Raw String" String="u?r"""" insensitive="true" context="#pop!Raw Triple Q-string" beginRegion="Triple Q-region"/>- <RegExpr attribute="Raw String" String="u?r'" insensitive="true" context="#pop!Raw A-string"/>- <RegExpr attribute="Raw String" String="u?r"" insensitive="true" context="#pop!Raw Q-string"/>-- <RegExpr attribute="Raw F-String" String="(?:fr|rf)'''" insensitive="true" context="#pop!Raw Triple A-F-String" beginRegion="Triple A-region"/>- <RegExpr attribute="Raw F-String" String="(?:fr|rf)"""" insensitive="true" context="#pop!Raw Triple Q-F-String" beginRegion="Triple Q-region"/>- <RegExpr attribute="Raw F-String" String="(?:fr|rf)'" insensitive="true" context="#pop!Raw A-F-String"/>- <RegExpr attribute="Raw F-String" String="(?:fr|rf)"" insensitive="true" context="#pop!Raw Q-F-String"/>-- <StringDetect attribute="B-String" String="b'''" insensitive="true" context="#pop!Triple A-B-String" beginRegion="Triple A-region"/>- <StringDetect attribute="B-String" String="b"""" insensitive="true" context="#pop!Triple Q-B-String" beginRegion="Triple Q-region"/>- <StringDetect attribute="B-String" String="b'" insensitive="true" context="#pop!Single A-B-String"/>- <StringDetect attribute="B-String" String="b"" insensitive="true" context="#pop!Single Q-B-String"/>-- <RegExpr attribute="Raw B-String" String="(?:br|rb)'''" insensitive="true" context="#pop!Raw Triple A-B-String" beginRegion="Triple A-region"/>- <RegExpr attribute="Raw B-String" String="(?:br|rb)"""" insensitive="true" context="#pop!Raw Triple Q-B-String" beginRegion="Triple Q-region"/>- <RegExpr attribute="Raw B-String" String="(?:br|rb)'" insensitive="true" context="#pop!Raw A-B-String"/>- <RegExpr attribute="Raw B-String" String="(?:br|rb)"" insensitive="true" context="#pop!Raw Q-B-String"/>- </context>-- <!-- https://docs.python.org/2/reference/lexical_analysis.html#string-literals -->- <!-- https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals -->- <context name="CommentVariants" attribute="Normal Text" lineEndContext="#stay">- <!-- fast path -->- <RegExpr String="(?:u|r|ur)?['"]" insensitive="true" firstNonSpace="true" context="AssumeCommentVariants" lookAhead="1"/>- </context>- <context name="AssumeCommentVariants" attribute="Normal Text" lineEndContext="#stay">- <RegExpr attribute="Comment" String="(?:u?r?)'''" insensitive="true" context="#pop!Triple A-comment" beginRegion="Triple A-region"/>- <RegExpr attribute="Comment" String="(?:u?r?)"""" insensitive="true" context="#pop!Triple Q-comment" beginRegion="Triple Q-region"/>- <RegExpr attribute="Comment" String="(?:u?r?)'" insensitive="true" context="#pop!Single A-comment"/>- <RegExpr attribute="Comment" String="(?:u?r?)"" insensitive="true" context="#pop!Single Q-comment"/>- </context>-- <context name="Dictionary" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">- <DetectSpaces/>- <DetectChar attribute="Normal Text" char="}" context="#pop" endRegion="Dictionary"/>- <IncludeRules context="StringVariants" />- <IncludeRules context="Normal" />- </context>-- <context name="List" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">- <DetectSpaces/>- <DetectChar attribute="Normal Text" char="]" context="#pop" endRegion="List"/>- <IncludeRules context="StringVariants" />- <IncludeRules context="Normal" />- </context>-- <context name="Tuple" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">- <DetectSpaces/>- <DetectChar attribute="Normal Text" char=")" context="#pop" endRegion="Tuple"/>- <IncludeRules context="StringVariants" />- <IncludeRules context="Normal" />- </context>-- <context name="UnfinishedStringError" attribute="Error" lineEndContext="#stay" noIndentationBasedFolding="true">- <!-- A single string/comment reached the end of the line without a \ line escape -->- <!-- We set the following line (or part of it) to the "Error" attribute so that this error is easier to spot -->- <RegExpr attribute="Error" String="^(\s{4,}|[^[\]()"']{4,}(["'].*)?)" context="#pop" column="0"/>- </context>-- <!-- Comments -->-- <context name="Hash comment" attribute="Comment" lineEndContext="#pop">- <DetectSpaces />- <IncludeRules context="##Comments" />- <DetectIdentifier/>- </context>-- <context name="Triple A-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">- <DetectSpaces/>- <StringDetect attribute="Comment" String="'''" context="#pop" endRegion="Triple A-region"/>- <IncludeRules context="##Comments" />- <DetectIdentifier/>- <IncludeRules context="stringescape"/>- <LineContinue attribute="String Char" context="#stay"/>- </context>-- <context name="Triple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">- <DetectSpaces/>- <StringDetect attribute="Comment" String=""""" context="#pop" endRegion="Triple Q-region"/>- <IncludeRules context="##Comments" />- <DetectIdentifier/>- <IncludeRules context="stringescape"/>- <LineContinue attribute="String Char" context="#stay"/>- </context>-- <context name="Single A-comment" attribute="Comment" lineEndContext="#pop!UnfinishedStringError">- <DetectSpaces/>- <DetectChar attribute="Comment" char="'" context="#pop"/>- <IncludeRules context="##Comments" />- <DetectIdentifier/>- <IncludeRules context="stringescape"/>- <LineContinue attribute="String Char" context="#stay"/>- </context>-- <context name="Single Q-comment" attribute="Comment" lineEndContext="#pop!UnfinishedStringError">- <DetectSpaces/>- <DetectChar attribute="Comment" char=""" context="#pop"/>- <IncludeRules context="##Comments" />- <DetectIdentifier/>- <IncludeRules context="stringescape"/>- <LineContinue attribute="String Char" context="#stay"/>- </context>-- <!-- Strings -->-- <!-- format characters -->- <context name="stringformat" attribute="String Substitution" lineEndContext="#stay">- <RegExpr attribute="String Substitution" String="&strsubstitution_py2;|&strsubstitution_py3;" context="#stay"/>- <Detect2Chars attribute="String Substitution" char="{" char1="{" context="#stay" />- <Detect2Chars attribute="String Substitution" char="}" char1="}" context="#stay" />- </context>-- <!-- escape characters -->- <context name="stringescape" attribute="String Char" lineEndContext="#stay">- <!-- As this highlighting style is for both, Python 2 and 3,- we do not know if a normal string is “unicode” or not. So we- -->- <RegExpr attribute="String Char" String="\\[\\'"abfnrtv]|\\[0-7]{1,3}|\\x[0-9A-Fa-f]{2}|\\u[0-9A-Fa-f]{4}|\\U[0-9A-Fa-f]{8}|\\N\{[a-zA-Z0-9\- ]+\}" context="#stay"/>- </context>-- <!-- escape characters -->- <context name="bytesescape" attribute="String Char" lineEndContext="#stay">- <!-- As this highlighting style is for both, Python 2 and 3,- we do not know if a normal string is “unicode” or not. So we- -->- <RegExpr attribute="String Char" String="\\[\\'"abfnrtv]|\\[0-7]{1,3}|\\x[0-9A-Fa-f]{2}" context="#stay"/>- </context>-- <!-- f-literals -->- <context name="stringinterpolation" attribute="F-String" lineEndContext="#stay">- <Detect2Chars attribute="String Char" char="{" char1="{" context="#stay"/>- <DetectChar attribute="String Substitution" char="{" context="String Interpolation"/>- <Detect2Chars attribute="String Char" char="}" char1="}" context="#stay"/>- <DetectChar attribute="Error" char="}" context="#stay"/>- </context>- <context name="String Interpolation" attribute="String Substitution" lineEndContext="#stay">- <DetectChar attribute="Error" char="\" context="#pop"/>- <RegExpr attribute="String Substitution" String="&format_spec;\}" context="#pop"/>- <IncludeRules context="Normal"/> <!-- TODO: create expression context instead -->- </context>--- <!--- It follows a Binary tree of string kinds (not even touching byte literals).- The levels are:- 1. triple- vs. single-quoted- 2. apostrophe vs. quotation mark- 3. static vs. interpolated (f-literal)- 4. escaped vs. raw- Adding byte literals wouldn’t make the current 2⁴ into 2⁵ contexts, as there are no byte f-literals- -->-- <!-- Triple-quoted A-strings -->- <context name="Triple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">- <DetectSpaces attribute="String"/>- <DetectIdentifier attribute="String"/>- <IncludeRules context="stringescape"/>- <IncludeRules context="stringformat"/>- <StringDetect attribute="String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>- <LineContinue attribute="String Char" context="#stay"/>- </context>-- <context name="Raw Triple A-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">- <DetectSpaces attribute="Raw String"/>- <DetectIdentifier attribute="Raw String"/>- <Detect2Chars attribute="Raw String" char="\" char1="'"/>- <Detect2Chars attribute="Raw String" char="\" char1="\"/>- <IncludeRules context="stringformat"/>- <StringDetect attribute="Raw String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>- </context>-- <context name="Triple A-F-String" attribute="F-String" lineEndContext="#stay" noIndentationBasedFolding="true">- <DetectSpaces attribute="F-String"/>- <DetectIdentifier attribute="F-String"/>- <IncludeRules context="stringescape"/>- <IncludeRules context="stringinterpolation"/>- <StringDetect attribute="F-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>- <LineContinue attribute="String Char" context="#stay"/>- </context>-- <context name="Raw Triple A-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">- <DetectSpaces attribute="Raw F-String"/>- <DetectIdentifier attribute="Raw F-String"/>- <Detect2Chars attribute="Raw F-String" char="\" char1="'"/>- <Detect2Chars attribute="Raw F-String" char="\" char1="\"/>- <IncludeRules context="stringinterpolation"/>- <StringDetect attribute="Raw F-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>- </context>-- <context name="Triple A-B-String" attribute="B-String" lineEndContext="#stay" noIndentationBasedFolding="true">- <RegExpr attribute="B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\(?=[^\\'"abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2})|'(?!''))++"/>- <IncludeRules context="bytesescape"/>- <StringDetect attribute="B-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>- <LineContinue attribute="String Char" context="#stay"/>- <RegExpr attribute="Error" String="."/>- </context>-- <context name="Raw Triple A-B-String" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">- <RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.?|'(?!''))++"/>- <StringDetect attribute="Raw B-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>- <RegExpr attribute="Error" String="."/>- </context>-- <!-- Triple-quoted Q-strings -->- <context name="Triple Q-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">- <DetectSpaces attribute="String"/>- <DetectIdentifier attribute="String"/>- <IncludeRules context="stringescape"/>- <IncludeRules context="stringformat"/>- <StringDetect attribute="String" String=""""" context="#pop!#CheckForString" endRegion="Triple Q-region"/>- <LineContinue attribute="String Char" context="#stay"/>- </context>-- <context name="Raw Triple Q-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">- <DetectSpaces attribute="Raw String"/>- <DetectIdentifier attribute="Raw String"/>- <Detect2Chars attribute="Raw String" char="\" char1="""/>- <Detect2Chars attribute="Raw String" char="\" char1="\"/>- <IncludeRules context="stringformat"/>- <StringDetect attribute="Raw String" String=""""" context="#pop!#CheckForString" endRegion="Triple Q-region"/>- </context>-- <context name="Triple Q-F-String" attribute="F-String" lineEndContext="#stay" noIndentationBasedFolding="true">- <DetectSpaces attribute="F-String"/>- <DetectIdentifier attribute="F-String"/>- <IncludeRules context="stringescape"/>- <IncludeRules context="stringinterpolation"/>- <StringDetect attribute="F-String" String=""""" context="#pop!#CheckForString" endRegion="Triple Q-region"/>- <LineContinue attribute="String Char" context="#stay"/>- </context>-- <context name="Raw Triple Q-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">- <DetectSpaces attribute="Raw F-String"/>- <DetectIdentifier attribute="Raw F-String"/>- <Detect2Chars attribute="Raw F-String" char="\" char1="""/>- <Detect2Chars attribute="Raw F-String" char="\" char1="\"/>- <IncludeRules context="stringinterpolation"/>- <StringDetect attribute="Raw F-String" String=""""" context="#pop!#CheckForString" endRegion="Triple Q-region"/>- </context>-- <context name="Triple Q-B-String" attribute="B-String" lineEndContext="#stay" noIndentationBasedFolding="true">- <RegExpr attribute="B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\(?=[^\\'"abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2})|"(?!""))++"/>- <IncludeRules context="bytesescape"/>- <StringDetect attribute="B-String" String=""""" context="#pop!#CheckForString" endRegion="Triple Q-region"/>- <LineContinue attribute="String Char" context="#stay"/>- <RegExpr attribute="Error" String="."/>- </context>-- <context name="Raw Triple Q-B-String" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">- <RegExpr attribute="Raw B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\.?|"(?!""))++"/>- <StringDetect attribute="Raw B-String" String=""""" context="#pop!#CheckForString" endRegion="Triple Q-region"/>- <RegExpr attribute="Error" String="."/>- </context>--- <!-- Single-quoted A-strings -->- <context name="Single A-string" attribute="String" lineEndContext="#pop!UnfinishedStringError">- <DetectSpaces attribute="String"/>- <DetectIdentifier attribute="String"/>- <IncludeRules context="stringescape"/>- <IncludeRules context="stringformat"/>- <DetectChar attribute="String" char="'" context="#pop!#CheckForString"/>- <LineContinue attribute="String Char" context="#stay"/>- </context>-- <context name="Raw A-string" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">- <DetectSpaces attribute="Raw String"/>- <DetectIdentifier attribute="Raw String"/>- <Detect2Chars attribute="Raw String" char="\" char1="'"/>- <Detect2Chars attribute="Raw String" char="\" char1="\"/>- <IncludeRules context="stringformat"/>- <DetectChar attribute="Raw String" char="'" context="#pop!#CheckForString"/>- <LineContinue attribute="Raw String" context="#stay"/>- </context>-- <context name="Single A-F-String" attribute="F-String" lineEndContext="#pop!UnfinishedStringError">- <DetectSpaces attribute="F-String"/>- <DetectIdentifier attribute="F-String"/>- <IncludeRules context="stringescape"/>- <IncludeRules context="stringinterpolation"/>- <DetectChar attribute="F-String" char="'" context="#pop!#CheckForString"/>- <LineContinue attribute="String Char" context="#stay"/>- </context>-- <context name="Raw A-F-String" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">- <DetectSpaces attribute="Raw F-String"/>- <DetectIdentifier attribute="Raw F-String"/>- <Detect2Chars attribute="Raw F-String" char="\" char1="'"/>- <Detect2Chars attribute="Raw F-String" char="\" char1="\"/>- <IncludeRules context="stringinterpolation"/>- <DetectChar attribute="Raw F-String" char="'" context="#pop!#CheckForString"/>- <LineContinue attribute="Raw F-String" context="#stay"/>- </context>-- <context name="Single A-B-String" attribute="B-String" lineEndContext="#pop!UnfinishedStringError">- <RegExpr attribute="B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\(?=[^\\'"abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2}))++"/>- <IncludeRules context="bytesescape"/>- <DetectChar attribute="B-String" char="'" context="#pop!#CheckForString"/>- <LineContinue attribute="String Char" context="#stay"/>- <RegExpr attribute="Error" String="."/>- </context>-- <context name="Raw A-B-String" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">- <RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.)++"/>- <DetectChar attribute="Raw B-String" char="'" context="#pop!#CheckForString"/>- <LineContinue attribute="Raw B-String" context="#stay"/>- <RegExpr attribute="Error" String="."/>- </context>-- <!-- Single-quoted Q-strings -->- <context name="Single Q-string" attribute="String" lineEndContext="#pop!UnfinishedStringError">- <DetectSpaces attribute="String"/>- <DetectIdentifier attribute="String"/>- <IncludeRules context="stringescape"/>- <IncludeRules context="stringformat"/>- <DetectChar attribute="String" char=""" context="#pop!#CheckForString"/>- <LineContinue attribute="String Char" context="#stay"/>- </context>-- <context name="Raw Q-string" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">- <DetectSpaces attribute="Raw String"/>- <DetectIdentifier attribute="Raw String"/>- <Detect2Chars attribute="Raw String" char="\" char1="""/>- <Detect2Chars attribute="Raw String" char="\" char1="\"/>- <IncludeRules context="stringformat"/>- <DetectChar attribute="Raw String" char=""" context="#pop!#CheckForString"/>- <LineContinue attribute="Raw String" context="#stay"/>- </context>-- <context name="Single Q-F-String" attribute="F-String" lineEndContext="#pop!UnfinishedStringError">- <DetectSpaces attribute="F-String"/>- <DetectIdentifier attribute="F-String"/>- <IncludeRules context="stringescape"/>- <IncludeRules context="stringinterpolation"/>- <DetectChar attribute="F-String" char=""" context="#pop!#CheckForString"/>- <LineContinue attribute="String Char" context="#stay"/>- </context>-- <context name="Raw Q-F-String" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">- <DetectSpaces attribute="Raw F-String"/>- <DetectIdentifier attribute="Raw F-String"/>- <Detect2Chars attribute="Raw F-String" char="\" char1="""/>- <Detect2Chars attribute="Raw F-String" char="\" char1="\"/>- <IncludeRules context="stringinterpolation"/>- <DetectChar attribute="Raw F-String" char=""" context="#pop!#CheckForString"/>- <LineContinue attribute="Raw F-String" context="#stay"/>- </context>-- <context name="Single Q-B-String" attribute="B-String" lineEndContext="#pop!UnfinishedStringError">- <RegExpr attribute="B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\(?=[^\\'"abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2}))++"/>- <IncludeRules context="bytesescape"/>- <DetectChar attribute="B-String" char=""" context="#pop!#CheckForString"/>- <LineContinue attribute="String Char" context="#stay"/>- <RegExpr attribute="Error" String="."/>- </context>-- <context name="Raw Q-B-String" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">- <RegExpr attribute="Raw B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\.)++"/>- <DetectChar attribute="Raw B-String" char=""" context="#pop!#CheckForString"/>- <Detect2Chars attribute="Raw B-String" char="\" char1="\"/>- <LineContinue attribute="Raw B-String" context="#stay"/>- <RegExpr attribute="Error" String="."/>- </context>-- </contexts>-- <itemDatas>- <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>- <itemData name="Definition Keyword" defStyleNum="dsKeyword" spellChecking="false"/>- <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>- <itemData name="Operator Keyword" defStyleNum="dsKeyword" spellChecking="false"/>- <itemData name="Flow Control Keyword" defStyleNum="dsControlFlow" spellChecking="false"/>- <itemData name="Builtin Function" defStyleNum="dsBuiltIn" spellChecking="false"/>- <itemData name="Special Variable" defStyleNum="dsVariable" spellChecking="false"/>- <itemData name="Extensions" defStyleNum="dsExtension" spellChecking="false"/>- <itemData name="Exceptions" defStyleNum="dsPreprocessor" spellChecking="false"/>- <itemData name="Overloaders" defStyleNum="dsFunction" spellChecking="false"/>- <itemData name="Import" defStyleNum="dsImport" spellChecking="false"/>- <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>- <itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>- <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>- <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>- <itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false"/>- <itemData name="Complex" defStyleNum="dsOthers" spellChecking="false"/>- <itemData name="Comment" defStyleNum="dsComment"/>- <itemData name="String" defStyleNum="dsString"/>- <itemData name="Raw String" defStyleNum="dsVerbatimString"/>- <itemData name="F-String" defStyleNum="dsSpecialString"/>- <itemData name="Raw F-String" defStyleNum="dsVerbatimString"/>- <itemData name="B-String" defStyleNum="dsString" spellChecking="false"/>- <itemData name="Raw B-String" defStyleNum="dsVerbatimString" spellChecking="false"/>- <itemData name="String Char" defStyleNum="dsChar" spellChecking="false"/>- <itemData name="String Substitution" defStyleNum="dsSpecialChar" spellChecking="false"/>- <itemData name="Decorator" defStyleNum="dsAttribute" spellChecking="false"/>- <itemData name="Error" defStyleNum="dsError"/>++ <!ENTITY escapedHex "\\x[0-9A-Fa-f]{2}">+ <!ENTITY escapedHexUni "&escapedHex;|\\u[0-9A-Fa-f]{4}|\\U[0-9A-Fa-f]{8}|\\N\{[a-zA-Z0-9\- ]+\}">++ <!ENTITY fStringSimpleParam "(?:[\w(), ]*|'[^']*'|"[^"]*")*">+ <!ENTITY fStringSimpleIdent "(?:[_[:alpha:]]\w*&format_spec;)">+ <!ENTITY fStringSimple "(?:\{[-+]?(&fStringSimpleIdent;(\.&fStringSimpleIdent;?|\(&fStringSimpleParam;\)|\[&fStringSimpleParam;\]|[-+*/%@|&^ ])*+)?\})">+ <!ENTITY regFStringRangeN "(?:&fStringSimple;|[0-9]+)">+]>+<!-- Python syntax highlightning v0.9 by Per Wigren -->+<!-- Python syntax highlighting v1.9 by Michael Bueker (improved keyword differentiation) -->+<!-- Python syntax highlighting v1.97 by Paul Giannaros -->+<!-- Python syntax highlighting v1.99 by Primoz Anzur -->+<!-- Python syntax highlighting v2.01 by Paul Giannaros:+ * full format character support+ * unicode string modifier supported -->+<!-- v2.02 remove RegExpr for nums and make indent consistent -->+<!-- v2.03 highlight decorators, remove operator regex, don't highlight parens as operators -->+<!-- v2.04 make alerts visible even if they are directly after ''' or # without a space -->+<!-- v2.06 decorator names can (and often do) contain periods -->+<!-- v2.07 add support for %prog and co, see bug 142832 -->+<!-- v2.08 add missing overloaders, new Python 3 statements, builtins, and keywords -->+<!-- v2.29 recognize escape sequenzes correctly -->+<language name="Python" alternativeNames="Py" version="30" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;*.pyi;SConstruct;SConscript;*.FCMacro" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">+ <highlighting>+ <list name="import">+ <item>import</item>+ <item>from</item>+ <item>as</item>+ </list>+ <list name="defs">+ <item>class</item>+ <item>def</item>+ <item>del</item>+ <item>global</item>+ <item>lambda</item>+ <item>nonlocal</item>+ </list>+ <list name="operators">+ <item>and</item>+ <item>in</item>+ <item>is</item>+ <item>not</item>+ <item>or</item>+ </list>+ <list name="flow">+ <item>assert</item>+ <item>break</item>+ <item>continue</item>+ <item>elif</item>+ <item>else</item>+ <item>except</item>+ <item>finally</item>+ <item>for</item>+ <item>if</item>+ <item>pass</item>+ <item>raise</item>+ <item>return</item>+ <item>try</item>+ <item>while</item>+ <item>with</item>+ <item>async</item>+ <item>await</item>+ </list>+ <list name="flow_yield">+ <item>yield</item>+ <!--+ "yield from" added here as a keyword for autocompletion. The actual handling+ is in context="yield" so that we won't need to add space as a weakDeliminator.+ -->+ <item>yield from</item>+ </list>+ <list name="patternmatching">+ <item>match</item>+ <item>case</item>+ </list>+ <list name="builtinfuncs">+ <!-- https://docs.python.org/3.11/library/functions.html#built-in-funcs -->+ <item>__import__</item>+ <item>abs</item>+ <item>aiter</item>+ <item>all</item>+ <item>anext</item>+ <item>any</item>+ <item>apply</item>+ <item>ascii</item>+ <item>basestring</item>+ <item>bin</item>+ <item>breakpoint</item>+ <item>bool</item>+ <item>buffer</item>+ <item>bytearray</item>+ <item>bytes</item>+ <item>callable</item>+ <item>chr</item>+ <item>classmethod</item>+ <item>cmp</item>+ <item>coerce</item>+ <item>compile</item>+ <item>complex</item>+ <item>delattr</item>+ <item>dict</item>+ <item>dir</item>+ <item>divmod</item>+ <item>enumerate</item>+ <item>eval</item>+ <item>exec</item>+ <item>execfile</item>+ <item>file</item>+ <item>filter</item>+ <item>float</item>+ <item>format</item>+ <item>frozenset</item>+ <item>getattr</item>+ <item>globals</item>+ <item>hasattr</item>+ <item>hash</item>+ <item>help</item>+ <item>hex</item>+ <item>id</item>+ <item>input</item>+ <item>int</item>+ <item>intern</item>+ <item>isinstance</item>+ <item>issubclass</item>+ <item>iter</item>+ <item>len</item>+ <item>list</item>+ <item>locals</item>+ <item>long</item>+ <item>map</item>+ <item>max</item>+ <item>memoryview</item>+ <item>min</item>+ <item>next</item>+ <item>object</item>+ <item>oct</item>+ <item>open</item>+ <item>ord</item>+ <item>pow</item>+ <item>print</item>+ <item>property</item>+ <item>range</item>+ <item>raw_input</item>+ <item>reduce</item>+ <item>reload</item>+ <item>repr</item>+ <item>reversed</item>+ <item>round</item>+ <item>set</item>+ <item>setattr</item>+ <item>slice</item>+ <item>sorted</item>+ <item>staticmethod</item>+ <item>str</item>+ <item>sum</item>+ <item>super</item>+ <item>tuple</item>+ <item>type</item>+ <item>unichr</item>+ <item>unicode</item>+ <item>vars</item>+ <item>xrange</item>+ <item>zip</item>+ </list>+ <list name="specialvars">+ <item>None</item>+ <item>self</item>+ <item>True</item>+ <item>False</item>+ <item>NotImplemented</item>+ <item>Ellipsis</item>+ <item>__all__</item>+ <item>__class__</item>+ <item>__debug__</item>+ <item>__file__</item>+ <item>__name__</item>+ <item>__qualname__</item>+ <item>__slots__</item>+ </list>+ <list name="bindings">+ <item>SIGNAL</item>+ <item>SLOT</item>+ <item>connect</item>+ </list>+ <list name="overloaders">+ <!-- https://docs.python.org/3.10/reference/datamodel.html#special-method-names -->+ <item>__new__</item>+ <item>__init__</item>+ <item>__del__</item>+ <item>__repr__</item>+ <item>__str__</item>+ <item>__lt__</item>+ <item>__le__</item>+ <item>__eq__</item>+ <item>__ne__</item>+ <item>__gt__</item>+ <item>__ge__</item>+ <item>__cmp__</item>+ <item>__rcmp__</item>+ <item>__hash__</item>+ <item>__bool__</item>+ <item>__nonzero__</item>+ <item>__unicode__</item>+ <item>__getattr__</item>+ <item>__setattr__</item>+ <item>__delattr__</item>+ <item>__getattribute__</item>+ <item>__get__</item>+ <item>__set__</item>+ <item>__delete__</item>+ <item>__call__</item>+ <item>__len__</item>+ <item>__length_hint__</item>+ <item>__getitem__</item>+ <item>__setitem__</item>+ <item>__delitem__</item>+ <item>__missing__</item>+ <item>__iter__</item>+ <item>__reversed__</item>+ <item>__contains__</item>+ <item>__getslice__</item>+ <item>__setslice__</item>+ <item>__delslice__</item>+ <item>__add__</item>+ <item>__sub__</item>+ <item>__mul__</item>+ <item>__matmul__</item>+ <item>__floordiv__</item>+ <item>__mod__</item>+ <item>__divmod__</item>+ <item>__pow__</item>+ <item>__lshift__</item>+ <item>__rshift__</item>+ <item>__and__</item>+ <item>__xor__</item>+ <item>__or__</item>+ <item>__div__</item>+ <item>__truediv__</item>+ <item>__radd__</item>+ <item>__rsub__</item>+ <item>__rmul__</item>+ <item>__rmatmul__</item>+ <item>__rdiv__</item>+ <item>__rtruediv__</item>+ <item>__rfloordiv__</item>+ <item>__rmod__</item>+ <item>__rdivmod__</item>+ <item>__rpow__</item>+ <item>__rlshift__</item>+ <item>__rrshift__</item>+ <item>__rand__</item>+ <item>__rxor__</item>+ <item>__ror__</item>+ <item>__iadd__</item>+ <item>__isub__</item>+ <item>__imul__</item>+ <item>__imatmul__</item>+ <item>__idiv__</item>+ <item>__itruediv__</item>+ <item>__ifloordiv__</item>+ <item>__imod__</item>+ <item>__ipow__</item>+ <item>__ilshift__</item>+ <item>__irshift__</item>+ <item>__iand__</item>+ <item>__ixor__</item>+ <item>__ior__</item>+ <item>__neg__</item>+ <item>__pos__</item>+ <item>__abs__</item>+ <item>__invert__</item>+ <item>__complex__</item>+ <item>__int__</item>+ <item>__long__</item>+ <item>__float__</item>+ <item>__oct__</item>+ <item>__hex__</item>+ <item>__index__</item>+ <item>__round__</item>+ <item>__trunc__</item>+ <item>__floor__</item>+ <item>__ceil__</item>+ <item>__coerce__</item>+ <item>__enter__</item>+ <item>__exit__</item>+ <item>__match_args__</item>+ <item>__buffer__</item>+ <item>__release_buffer__</item>+ <item>__bytes__</item>+ <item>__format__</item>+ <item>__next__</item>+ <item>__dir__</item>+ <item>__await__</item>+ <item>__aiter__</item>+ <item>__anext__</item>+ <item>__aenter__</item>+ <item>__aexit__</item>+ <item>__slots__</item>+ <item>__init_subclass__</item>+ <item>__set_name__</item>+ <item>__prepare__</item>+ <item>__instancecheck__</item>+ <item>__subclasscheck__</item>+ <item>__class_getitem__</item>+ </list>+ <list name="exceptions">+ <!--+ Exceptions list resources used:+ - http://docs.python.org/2.7/library/exceptions.html#exception-hierarchy+ - http://docs.python.org/3.10/library/exceptions.html#exception-hierarchy+ -->+ <item>ArithmeticError</item>+ <item>AssertionError</item>+ <item>AttributeError</item>+ <item>BaseException</item>+ <item>BlockingIOError</item>+ <item>BrokenPipeError</item>+ <item>BufferError</item>+ <item>BytesWarning</item>+ <item>ChildProcessError</item>+ <item>ConnectionAbortedError</item>+ <item>ConnectionError</item>+ <item>ConnectionRefusedError</item>+ <item>ConnectionResetError</item>+ <item>DeprecationWarning</item>+ <item>EnvironmentError</item>+ <item>EOFError</item>+ <item>EncodingWarning</item>+ <item>Exception</item>+ <item>FileExistsError</item>+ <item>FileNotFoundError</item>+ <item>FloatingPointError</item>+ <item>FutureWarning</item>+ <item>GeneratorExit</item>+ <item>ImportError</item>+ <item>ImportWarning</item>+ <item>IndentationError</item>+ <item>IndexError</item>+ <item>InterruptedError</item>+ <item>IOError</item>+ <item>IsADirectoryError</item>+ <item>KeyboardInterrupt</item>+ <item>KeyError</item>+ <item>LookupError</item>+ <item>MemoryError</item>+ <item>ModuleNotFoundError</item>+ <item>NameError</item>+ <item>NotADirectoryError</item>+ <item>NotImplementedError</item>+ <item>OSError</item>+ <item>OverflowError</item>+ <item>PendingDeprecationWarning</item>+ <item>PermissionError</item>+ <item>ProcessLookupError</item>+ <item>RecursionError</item>+ <item>ReferenceError</item>+ <item>ResourceWarning</item>+ <item>RuntimeError</item>+ <item>RuntimeWarning</item>+ <item>StandardError</item>+ <item>StopAsyncIteration</item>+ <item>StopIteration</item>+ <item>SyntaxError</item>+ <item>SyntaxWarning</item>+ <item>SystemError</item>+ <item>SystemExit</item>+ <item>TabError</item>+ <item>TimeoutError</item>+ <item>TypeError</item>+ <item>UnboundLocalError</item>+ <item>UnicodeDecodeError</item>+ <item>UnicodeEncodeError</item>+ <item>UnicodeError</item>+ <item>UnicodeTranslateError</item>+ <item>UnicodeWarning</item>+ <item>UserWarning</item>+ <item>ValueError</item>+ <item>Warning</item>+ <item>WindowsError</item>+ <item>ZeroDivisionError</item>+ </list>+ <contexts>+ <context name="Normal" attribute="Normal Text" lineEndContext="#stay">+ <DetectSpaces attribute="Normal Text"/>++ <DetectChar attribute="Normal Text" char="(" context="Tuple" beginRegion="Tuple"/>+ <DetectChar attribute="Normal Text" char="[" context="List" beginRegion="List"/>+ <DetectChar attribute="Normal Text" char="{" context="Dictionary" beginRegion="Dictionary"/>++ <DetectChar attribute="Comment" char="#" context="Hash comment"/>++ <keyword attribute="Special Variable" String="specialvars" context="#stay"/>+ <keyword attribute="Flow Control Keyword" String="flow" context="#stay"/>+ <keyword attribute="Operator Keyword" String="operators" context="#stay"/>+ <keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/>+ <keyword attribute="Definition Keyword" String="defs" context="#stay"/>+ <keyword attribute="Flow Control Keyword" String="flow_yield" context="yield"/>+ <keyword attribute="Flow Control Keyword" String="patternmatching" context="Pattern Matching" lookAhead="1" firstNonSpace="1"/>+ <keyword attribute="Import" String="import" context="#stay"/>+ <keyword attribute="Exceptions" String="exceptions" context="#stay"/>+ <keyword attribute="Overloaders" String="overloaders" context="#stay"/>+ <keyword attribute="Extensions" String="bindings" context="#stay"/>++ <IncludeRules context="Number" />+ <IncludeRules context="CommentVariants" />+ <IncludeRules context="StringVariants" />++ <DetectIdentifier attribute="Normal Text"/>++ <RegExpr attribute="Decorator" String="@[_a-zA-Z[:^ascii:]][\._a-zA-Z0-9[:^ascii:]]*" firstNonSpace="true"/>+ <Detect2Chars attribute="Operator" char=":" char1="=" context="#stay"/>+ <AnyChar attribute="Operator" String="+*/%|=;<>!^&~-@" context="#stay"/>++ <LineContinue attribute="Operator" context="MultiLineExpr"/>++ <Int attribute="Error"/>+ </context>+ <!-- a string at the beginning of lines is a comment, MultiLineExpr prevents this -->+ <context name="MultiLineExpr" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+ <DetectSpaces attribute="Normal Text"/>+ <IncludeRules context="StringVariants"/>+ </context>++ <!-- https://docs.python.org/2/reference/lexical_analysis.html#integer-and-long-integer-literals -->+ <!-- https://docs.python.org/3/reference/lexical_analysis.html#integer-literals -->+ <context name="Number" attribute="Normal Text" lineEndContext="#pop">+ <!-- fast path -->+ <RegExpr String="&beforeDigit;[0-9]|&beforePointFloat;\.[0-9]" context="AssumeNumber" lookAhead="1"/>+ </context>+ <context name="AssumeNumber" attribute="Normal Text" lineEndContext="#pop">+ <!-- Complex: 1j ; 1.1j ; 1.j ; .1j ; 1e3j ; 1.1e3j ; 1.e3j ; .1e3j -->+ <RegExpr attribute="Complex" String="(?:&digitPart;(?:\.(?:&digitPart;)?)?|&beforePointFloat;\.&digitPart;)(?:[eE][\+\-]?&digitPart;)?[jJ]" context="CheckSuffixError"/>+ <!-- Hexadecimal: 0xA1, Binary: 0b01, Octal: 0o71 -->+ <RegExpr attribute="Hex" String="0[xX](?:_?[0-9a-fA-F])+" context="CheckSuffixError"/>+ <RegExpr attribute="Binary" String="0[bB](?:_?[01])+" context="CheckSuffixError"/>+ <RegExpr attribute="Octal" String="0[oO](?:_?[0-7])+" context="CheckSuffixError"/>+ <!-- Float: 1.1 ; 1. ; .1 ; 1e3 ; 1.1e3 ; 1.e3 ; .1e3 -->+ <RegExpr attribute="Float" String="(?:&digitPart;(?:\.(?:&digitPart;)?)?|\.&digitPart;)[eE][\+\-]?&digitPart;|&digitPart;\.(?:&digitPart;)?|\.&digitPart;" context="CheckSuffixError"/>+ <!-- Decimal: 123 ; 000 -->+ <!-- l and L are python2 suffixes -->+ <RegExpr attribute="Int" String="(?:[1-9](?:_?[0-9])*|0(?:_?0)*)[lL]?" context="CheckSuffixError"/>+ </context>+ <context name="CheckSuffixError" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">+ <RegExpr attribute="Error" String="\w+" context="#pop#pop"/>+ </context>++ <context name="yield" attribute="Flow Control Keyword" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <WordDetect attribute="Flow Control Keyword" context="#pop" String="from"/>+ </context>++ <context name="Pattern Matching" attribute="Flow Control Keyword" lineEndContext="#pop">+ <!--+ Python 3.10: https://docs.python.org/3.10/reference/compound_stmts.html#the-match-statement+ ( 'match' | 'case' ) expression ':'+ exclude:+ ( 'match' | 'case' ) ( 'if' | 'for' | '.' | ':' | '=' | ',' | ']' | ')' ) ...+ -->+ <RegExpr attribute="Flow Control Keyword" String="\w++(?=\s+(?!(?:if|for)\b)[\w'"~]|\s*+(?![.:=\]),]|(?:if|for)\b)((?:&string;|[^#;(){}]|\(\)|\((?1)\)|\{\}|\{(\s*+(?:(?:&string;|[a-zA-Z0-9.]++)\s*+:\s*+(?:&string;|[^#;(){},]|\(\)|\((?1)\)|\{\}|\{(?2)\})++,?)*+)\})+?):)|" context="#pop"/>+ <DetectIdentifier attribute="Normal Text" context="#pop"/>+ </context>++ <!-- https://docs.python.org/2/reference/lexical_analysis.html#string-literals -->+ <!-- https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals -->+ <context name="StringVariants" attribute="Normal Text" lineEndContext="#stay">+ <!-- fast path -->+ <RegExpr String="(?:u|r|b|f|ur|fr|rf|br|rb)?['"]" insensitive="true" context="AssumeStringVariants" lookAhead="1"/>+ </context>+ <context name="AssumeStringVariants" attribute="Normal Text" lineEndContext="#stay">+ <StringDetect attribute="String" String="'''" context="#pop!Triple A-string" beginRegion="Triple A-region"/>+ <StringDetect attribute="String" String=""""" context="#pop!Triple Q-string" beginRegion="Triple Q-region"/>+ <StringDetect attribute="String" String="'" context="#pop!Single A-string"/>+ <StringDetect attribute="String" String=""" context="#pop!Single Q-string"/>++ <StringDetect attribute="F-String" String="f'''" insensitive="true" context="#pop!Triple A-F-String" beginRegion="Triple A-region"/>+ <StringDetect attribute="F-String" String="f"""" insensitive="true" context="#pop!Triple Q-F-String" beginRegion="Triple Q-region"/>+ <StringDetect attribute="F-String" String="f'" insensitive="true" context="#pop!Single A-F-String"/>+ <StringDetect attribute="F-String" String="f"" insensitive="true" context="#pop!Single Q-F-String"/>++ <!-- lower r for regex -->+ <StringDetect attribute="Raw String" String="r'''" context="#pop!Raw Triple A-Regex" beginRegion="Triple A-region"/>+ <StringDetect attribute="Raw String" String="r"""" context="#pop!Raw Triple Q-Regex" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Raw String" String="r'" context="#pop!Raw A-Regex"/>+ <StringDetect attribute="Raw String" String="r"" context="#pop!Raw Q-Regex"/>++ <!-- upper r for string -->+ <StringDetect attribute="Raw String" String="R'''" context="#pop!Raw Triple A-string" beginRegion="Triple A-region"/>+ <StringDetect attribute="Raw String" String="R"""" context="#pop!Raw Triple Q-string" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Raw String" String="R'" context="#pop!Raw A-string"/>+ <StringDetect attribute="Raw String" String="R"" context="#pop!Raw Q-string"/>++ <StringDetect attribute="B-String" String="b'''" insensitive="true" context="#pop!Triple A-B-String" beginRegion="Triple A-region"/>+ <StringDetect attribute="B-String" String="b"""" insensitive="true" context="#pop!Triple Q-B-String" beginRegion="Triple Q-region"/>+ <StringDetect attribute="B-String" String="b'" insensitive="true" context="#pop!Single A-B-String"/>+ <StringDetect attribute="B-String" String="b"" insensitive="true" context="#pop!Single Q-B-String"/>++ <!-- lower r and f for regex -->+ <StringDetect attribute="Raw F-String" String="fr'''" context="#pop!Raw Triple A-F-Regex" beginRegion="Triple A-region"/>+ <StringDetect attribute="Raw F-String" String="rf'''" context="#pop!Raw Triple A-F-Regex" beginRegion="Triple A-region"/>+ <StringDetect attribute="Raw F-String" String="fr"""" context="#pop!Raw Triple Q-F-Regex" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Raw F-String" String="rf"""" context="#pop!Raw Triple Q-F-Regex" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Raw F-String" String="fr'" context="#pop!Raw A-F-Regex"/>+ <StringDetect attribute="Raw F-String" String="rf'" context="#pop!Raw A-F-Regex"/>+ <StringDetect attribute="Raw F-String" String="fr"" context="#pop!Raw Q-F-Regex"/>+ <StringDetect attribute="Raw F-String" String="rf"" context="#pop!Raw Q-F-Regex"/>++ <!-- upper r or f for string -->+ <StringDetect attribute="Raw F-String" String="fr'''" insensitive="true" context="#pop!Raw Triple A-F-String" beginRegion="Triple A-region"/>+ <StringDetect attribute="Raw F-String" String="rf'''" insensitive="true" context="#pop!Raw Triple A-F-String" beginRegion="Triple A-region"/>+ <StringDetect attribute="Raw F-String" String="fr"""" insensitive="true" context="#pop!Raw Triple Q-F-String" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Raw F-String" String="rf"""" insensitive="true" context="#pop!Raw Triple Q-F-String" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Raw F-String" String="fr'" insensitive="true" context="#pop!Raw A-F-String"/>+ <StringDetect attribute="Raw F-String" String="rf'" insensitive="true" context="#pop!Raw A-F-String"/>+ <StringDetect attribute="Raw F-String" String="fr"" insensitive="true" context="#pop!Raw Q-F-String"/>+ <StringDetect attribute="Raw F-String" String="rf"" insensitive="true" context="#pop!Raw Q-F-String"/>++ <!-- lower r and b for regex -->+ <StringDetect attribute="Raw B-String" String="br'''" context="#pop!Raw Triple A-B-Regex" beginRegion="Triple A-region"/>+ <StringDetect attribute="Raw B-String" String="rb'''" context="#pop!Raw Triple A-B-Regex" beginRegion="Triple A-region"/>+ <StringDetect attribute="Raw B-String" String="br"""" context="#pop!Raw Triple Q-B-Regex" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Raw B-String" String="rb"""" context="#pop!Raw Triple Q-B-Regex" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Raw B-String" String="br'" context="#pop!Raw A-B-Regex"/>+ <StringDetect attribute="Raw B-String" String="rb'" context="#pop!Raw A-B-Regex"/>+ <StringDetect attribute="Raw B-String" String="br"" context="#pop!Raw Q-B-Regex"/>+ <StringDetect attribute="Raw B-String" String="rb"" context="#pop!Raw Q-B-Regex"/>++ <!-- upper r or b for string -->+ <StringDetect attribute="Raw B-String" String="br'''" insensitive="true" context="#pop!Raw Triple A-B-String" beginRegion="Triple A-region"/>+ <StringDetect attribute="Raw B-String" String="rb'''" insensitive="true" context="#pop!Raw Triple A-B-String" beginRegion="Triple A-region"/>+ <StringDetect attribute="Raw B-String" String="br"""" insensitive="true" context="#pop!Raw Triple Q-B-String" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Raw B-String" String="rb"""" insensitive="true" context="#pop!Raw Triple Q-B-String" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Raw B-String" String="br'" insensitive="true" context="#pop!Raw A-B-String"/>+ <StringDetect attribute="Raw B-String" String="rb'" insensitive="true" context="#pop!Raw A-B-String"/>+ <StringDetect attribute="Raw B-String" String="br"" insensitive="true" context="#pop!Raw Q-B-String"/>+ <StringDetect attribute="Raw B-String" String="rb"" insensitive="true" context="#pop!Raw Q-B-String"/>++ <!-- Python 2 compatibility (unicode prefix) -->++ <StringDetect attribute="String" String="u'''" insensitive="true" context="#pop!Triple A-string" beginRegion="Triple A-region"/>+ <StringDetect attribute="String" String="u"""" insensitive="true" context="#pop!Triple Q-string" beginRegion="Triple Q-region"/>+ <StringDetect attribute="String" String="u'" insensitive="true" context="#pop!Single A-string"/>+ <StringDetect attribute="String" String="u"" insensitive="true" context="#pop!Single Q-string"/>++ <StringDetect attribute="Raw String" String="ur'''" insensitive="true" context="#pop!Raw Triple A-string" beginRegion="Triple A-region"/>+ <StringDetect attribute="Raw String" String="ur"""" insensitive="true" context="#pop!Raw Triple Q-string" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Raw String" String="ur'" insensitive="true" context="#pop!Raw A-string"/>+ <StringDetect attribute="Raw String" String="ur"" insensitive="true" context="#pop!Raw Q-string"/>+ </context>++ <!-- https://docs.python.org/2/reference/lexical_analysis.html#string-literals -->+ <!-- https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals -->+ <context name="CommentVariants" attribute="Normal Text" lineEndContext="#stay">+ <!-- fast path -->+ <RegExpr String="(?:u|r|ur)?['"]" insensitive="true" firstNonSpace="true" context="AssumeCommentVariants" lookAhead="1"/>+ </context>+ <context name="AssumeCommentVariants" attribute="Normal Text" lineEndContext="#stay">+ <StringDetect attribute="Comment" String="'''" insensitive="true" context="#pop!Triple A-comment" beginRegion="Triple A-region"/>+ <StringDetect attribute="Comment" String=""""" insensitive="true" context="#pop!Triple Q-comment" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Comment" String="'" insensitive="true" context="#pop!Single A-comment"/>+ <StringDetect attribute="Comment" String=""" insensitive="true" context="#pop!Single Q-comment"/>+ <StringDetect attribute="Comment" String="r'''" insensitive="true" context="#pop!Triple A-comment" beginRegion="Triple A-region"/>+ <StringDetect attribute="Comment" String="r"""" insensitive="true" context="#pop!Triple Q-comment" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Comment" String="r'" insensitive="true" context="#pop!Single A-comment"/>+ <StringDetect attribute="Comment" String="r"" insensitive="true" context="#pop!Single Q-comment"/>++ <!-- Python 2 compatibility (unicode prefix) -->+ <StringDetect attribute="Comment" String="u'''" insensitive="true" context="#pop!Triple A-comment" beginRegion="Triple A-region"/>+ <StringDetect attribute="Comment" String="u"""" insensitive="true" context="#pop!Triple Q-comment" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Comment" String="u'" insensitive="true" context="#pop!Single A-comment"/>+ <StringDetect attribute="Comment" String="u"" insensitive="true" context="#pop!Single Q-comment"/>+ <StringDetect attribute="Comment" String="ur'''" insensitive="true" context="#pop!Triple A-comment" beginRegion="Triple A-region"/>+ <StringDetect attribute="Comment" String="ur"""" insensitive="true" context="#pop!Triple Q-comment" beginRegion="Triple Q-region"/>+ <StringDetect attribute="Comment" String="ur'" insensitive="true" context="#pop!Single A-comment"/>+ <StringDetect attribute="Comment" String="ur"" insensitive="true" context="#pop!Single Q-comment"/>+ </context>++ <context name="Dictionary" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces/>+ <DetectChar attribute="Normal Text" char="}" context="#pop" endRegion="Dictionary"/>+ <IncludeRules context="StringVariants" />+ <IncludeRules context="Normal" />+ </context>++ <context name="List" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces/>+ <DetectChar attribute="Normal Text" char="]" context="#pop" endRegion="List"/>+ <IncludeRules context="StringVariants" />+ <IncludeRules context="Normal" />+ </context>++ <context name="Tuple" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces/>+ <DetectChar attribute="Normal Text" char=")" context="#pop" endRegion="Tuple"/>+ <IncludeRules context="StringVariants" />+ <IncludeRules context="Normal" />+ </context>++ <context name="UnfinishedStringError" attribute="Error" lineEndContext="#stay" noIndentationBasedFolding="true">+ <!-- A single string/comment reached the end of the line without a \ line escape -->+ <!-- We set the following line (or part of it) to the "Error" attribute so that this error is easier to spot -->+ <RegExpr attribute="Error" String="^(\s{4,}|[^[\]()"']{4,}(["'].*)?)" context="#pop" column="0"/>+ </context>++ <!-- Comments -->++ <context name="Hash comment" attribute="Comment" lineEndContext="#pop">+ <DetectSpaces />+ <IncludeRules context="##Comments" />+ <DetectIdentifier/>+ </context>++ <context name="Triple A-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces/>+ <StringDetect attribute="Comment" String="'''" context="#pop" endRegion="Triple A-region"/>+ <IncludeRules context="##Comments" />+ <DetectIdentifier/>+ <IncludeRules context="stringescape"/>+ </context>++ <context name="Triple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces/>+ <StringDetect attribute="Comment" String=""""" context="#pop" endRegion="Triple Q-region"/>+ <IncludeRules context="##Comments" />+ <DetectIdentifier/>+ <IncludeRules context="stringescape"/>+ </context>++ <context name="Single A-comment" attribute="Comment" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces/>+ <DetectChar attribute="Comment" char="'" context="#pop"/>+ <IncludeRules context="##Comments" />+ <DetectIdentifier/>+ <IncludeRules context="stringescape"/>+ </context>++ <context name="Single Q-comment" attribute="Comment" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces/>+ <DetectChar attribute="Comment" char=""" context="#pop"/>+ <IncludeRules context="##Comments" />+ <DetectIdentifier/>+ <IncludeRules context="stringescape"/>+ </context>++ <!-- Strings -->++ <!-- format characters -->+ <context name="stringformat" attribute="String Substitution" lineEndContext="#stay">+ <RegExpr attribute="String Substitution" String="&strsubstitution_py2;|&strsubstitution_py3;" context="#stay"/>+ <Detect2Chars attribute="String Substitution" char="{" char1="{" context="#stay" />+ <Detect2Chars attribute="String Substitution" char="}" char1="}" context="#stay" />+ </context>++ <!-- escape characters -->+ <context name="stringescape" attribute="String Char" lineEndContext="#stay">+ <!-- As this highlighting style is for both, Python 2 and 3,+ we do not know if a normal string is “unicode” or not. So we -->+ <DetectChar char="\" lookAhead="1" context="stringescape2"/>+ </context>+ <context name="stringescape2" attribute="String Char" lineEndContext="#pop">+ <RegExpr attribute="String Char" String="\\[\\'"abfnrtv]|\\[0-7]{1,3}|&escapedHexUni;" context="#pop"/>+ <LineContinue attribute="Operator" context="#pop"/>+ <RegExpr attribute="Error" String="." context="#pop"/>+ </context>++ <!-- escape characters -->+ <context name="bytesescape" attribute="String Char" lineEndContext="#stay">+ <!-- As this highlighting style is for both, Python 2 and 3,+ we do not know if a normal string is “unicode” or not. So we+ -->+ <DetectChar char="\" lookAhead="1" context="bytesescape2"/>+ </context>+ <context name="bytesescape2" attribute="String Char" lineEndContext="#pop">+ <RegExpr attribute="String Char" String="\\[\\'"abfnrtv]|\\[0-7]{1,3}|&escapedHex;" context="#pop"/>+ <LineContinue attribute="Operator" context="#pop"/>+ <RegExpr attribute="Error" String="." context="#pop"/>+ </context>++ <!-- f-literals -->+ <context name="stringinterpolation" attribute="F-String" lineEndContext="#stay">+ <Detect2Chars attribute="String Char" char="{" char1="{" context="#stay"/>+ <DetectChar attribute="String Substitution" char="{" context="String Interpolation"/>+ <Detect2Chars attribute="String Char" char="}" char1="}" context="#stay"/>+ <DetectChar attribute="Error" char="}" context="#stay"/>+ </context>+ <context name="String Interpolation" attribute="String Substitution" lineEndContext="#stay">+ <RegExpr attribute="String Substitution" String="&format_spec;\}" context="#pop"/>+ <IncludeRules context="Normal"/> <!-- TODO: create expression context instead -->+ </context>+++ <!--+ It follows a Binary tree of string kinds (not even touching byte literals).+ The levels are:+ 1. triple- vs. single-quoted+ 2. apostrophe vs. quotation mark+ 3. static vs. interpolated (f-literal)+ 4. escaped vs. raw+ Adding byte literals wouldn’t make the current 2⁴ into 2⁵ contexts, as there are no byte f-literals+ -->++ <!-- Triple-quoted A-strings -->+ <context name="Triple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces attribute="String"/>+ <DetectIdentifier attribute="String"/>+ <IncludeRules context="stringescape"/>+ <IncludeRules context="stringformat"/>+ <StringDetect attribute="String" String="'''" context="#pop" endRegion="Triple A-region"/>+ </context>++ <context name="Raw Triple A-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces attribute="Raw String"/>+ <DetectIdentifier attribute="Raw String"/>+ <Detect2Chars attribute="Raw String" char="\" char1="'"/>+ <Detect2Chars attribute="Raw String" char="\" char1="\"/>+ <IncludeRules context="stringformat"/>+ <StringDetect attribute="Raw String" String="'''" context="#pop" endRegion="Triple A-region"/>+ </context>++ <context name="Triple A-F-String" attribute="F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces attribute="F-String"/>+ <DetectIdentifier attribute="F-String"/>+ <IncludeRules context="stringescape"/>+ <IncludeRules context="stringinterpolation"/>+ <StringDetect attribute="F-String" String="'''" context="#pop" endRegion="Triple A-region"/>+ </context>++ <context name="Raw Triple A-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces attribute="Raw F-String"/>+ <DetectIdentifier attribute="Raw F-String"/>+ <Detect2Chars attribute="Raw F-String" char="\" char1="'"/>+ <Detect2Chars attribute="Raw F-String" char="\" char1="\"/>+ <IncludeRules context="stringinterpolation"/>+ <StringDetect attribute="Raw F-String" String="'''" context="#pop" endRegion="Triple A-region"/>+ </context>++ <context name="Triple A-B-String" attribute="B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <RegExpr attribute="B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|'(?!''))++"/>+ <IncludeRules context="bytesescape"/>+ <StringDetect attribute="B-String" String="'''" context="#pop" endRegion="Triple A-region"/>+ <RegExpr attribute="Error" String="."/>+ </context>++ <context name="Raw Triple A-B-String" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.?|'(?!''))++"/>+ <StringDetect attribute="Raw B-String" String="'''" context="#pop" endRegion="Triple A-region"/>+ <RegExpr attribute="Error" String="."/>+ </context>++ <!-- Triple-quoted Q-strings -->+ <context name="Triple Q-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces attribute="String"/>+ <DetectIdentifier attribute="String"/>+ <IncludeRules context="stringescape"/>+ <IncludeRules context="stringformat"/>+ <StringDetect attribute="String" String=""""" context="#pop" endRegion="Triple Q-region"/>+ </context>++ <context name="Raw Triple Q-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces attribute="Raw String"/>+ <DetectIdentifier attribute="Raw String"/>+ <Detect2Chars attribute="Raw String" char="\" char1="""/>+ <Detect2Chars attribute="Raw String" char="\" char1="\"/>+ <IncludeRules context="stringformat"/>+ <StringDetect attribute="Raw String" String=""""" context="#pop" endRegion="Triple Q-region"/>+ </context>++ <context name="Triple Q-F-String" attribute="F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces attribute="F-String"/>+ <DetectIdentifier attribute="F-String"/>+ <IncludeRules context="stringescape"/>+ <IncludeRules context="stringinterpolation"/>+ <StringDetect attribute="F-String" String=""""" context="#pop" endRegion="Triple Q-region"/>+ </context>++ <context name="Raw Triple Q-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces attribute="Raw F-String"/>+ <DetectIdentifier attribute="Raw F-String"/>+ <Detect2Chars attribute="Raw F-String" char="\" char1="""/>+ <Detect2Chars attribute="Raw F-String" char="\" char1="\"/>+ <IncludeRules context="stringinterpolation"/>+ <StringDetect attribute="Raw F-String" String=""""" context="#pop" endRegion="Triple Q-region"/>+ </context>++ <context name="Triple Q-B-String" attribute="B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <RegExpr attribute="B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|"(?!""))++"/>+ <IncludeRules context="bytesescape"/>+ <StringDetect attribute="B-String" String=""""" context="#pop" endRegion="Triple Q-region"/>+ <RegExpr attribute="Error" String="."/>+ </context>++ <context name="Raw Triple Q-B-String" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <RegExpr attribute="Raw B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\.?|"(?!""))++"/>+ <StringDetect attribute="Raw B-String" String=""""" context="#pop" endRegion="Triple Q-region"/>+ <RegExpr attribute="Error" String="."/>+ </context>+++ <!-- Single-quoted A-strings -->+ <context name="Single A-string" attribute="String" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces attribute="String"/>+ <DetectIdentifier attribute="String"/>+ <IncludeRules context="stringescape"/>+ <IncludeRules context="stringformat"/>+ <DetectChar attribute="String" char="'" context="#pop"/>+ </context>++ <context name="Raw A-string" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces attribute="Raw String"/>+ <DetectIdentifier attribute="Raw String"/>+ <Detect2Chars attribute="Raw String" char="\" char1="'"/>+ <Detect2Chars attribute="Raw String" char="\" char1="\"/>+ <IncludeRules context="stringformat"/>+ <DetectChar attribute="Raw String" char="'" context="#pop"/>+ <LineContinue attribute="Raw String" context="#stay"/>+ </context>++ <context name="Single A-F-String" attribute="F-String" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces attribute="F-String"/>+ <DetectIdentifier attribute="F-String"/>+ <IncludeRules context="stringescape"/>+ <IncludeRules context="stringinterpolation"/>+ <DetectChar attribute="F-String" char="'" context="#pop"/>+ </context>++ <context name="Raw A-F-String" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces attribute="Raw F-String"/>+ <DetectIdentifier attribute="Raw F-String"/>+ <Detect2Chars attribute="Raw F-String" char="\" char1="'"/>+ <Detect2Chars attribute="Raw F-String" char="\" char1="\"/>+ <IncludeRules context="stringinterpolation"/>+ <DetectChar attribute="Raw F-String" char="'" context="#pop"/>+ <LineContinue attribute="Raw F-String" context="#stay"/>+ </context>++ <context name="Single A-B-String" attribute="B-String" lineEndContext="#pop!UnfinishedStringError">+ <RegExpr attribute="B-String" String="[\x20-\x26\x28-\x5B\x5D-\x7E]++"/>+ <IncludeRules context="bytesescape"/>+ <DetectChar attribute="B-String" char="'" context="#pop"/>+ <RegExpr attribute="Error" String="."/>+ </context>++ <context name="Raw A-B-String" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">+ <RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.)++"/>+ <DetectChar attribute="Raw B-String" char="'" context="#pop"/>+ <LineContinue attribute="Raw B-String" context="#stay"/>+ <RegExpr attribute="Error" String="."/>+ </context>++ <!-- Single-quoted Q-strings -->+ <context name="Single Q-string" attribute="String" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces attribute="String"/>+ <DetectIdentifier attribute="String"/>+ <IncludeRules context="stringescape"/>+ <IncludeRules context="stringformat"/>+ <DetectChar attribute="String" char=""" context="#pop"/>+ </context>++ <context name="Raw Q-string" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces attribute="Raw String"/>+ <DetectIdentifier attribute="Raw String"/>+ <Detect2Chars attribute="Raw String" char="\" char1="""/>+ <Detect2Chars attribute="Raw String" char="\" char1="\"/>+ <IncludeRules context="stringformat"/>+ <DetectChar attribute="Raw String" char=""" context="#pop"/>+ <LineContinue attribute="Raw String" context="#stay"/>+ </context>++ <context name="Single Q-F-String" attribute="F-String" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces attribute="F-String"/>+ <DetectIdentifier attribute="F-String"/>+ <IncludeRules context="stringescape"/>+ <IncludeRules context="stringinterpolation"/>+ <DetectChar attribute="F-String" char=""" context="#pop"/>+ </context>++ <context name="Raw Q-F-String" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces attribute="Raw F-String"/>+ <DetectIdentifier attribute="Raw F-String"/>+ <Detect2Chars attribute="Raw F-String" char="\" char1="""/>+ <Detect2Chars attribute="Raw F-String" char="\" char1="\"/>+ <IncludeRules context="stringinterpolation"/>+ <DetectChar attribute="Raw F-String" char=""" context="#pop"/>+ <LineContinue attribute="Raw F-String" context="#stay"/>+ </context>++ <context name="Single Q-B-String" attribute="B-String" lineEndContext="#pop!UnfinishedStringError">+ <RegExpr attribute="B-String" String="[\x20\x21\x23-\x5B\x5D-\x7E]++"/>+ <IncludeRules context="bytesescape"/>+ <DetectChar attribute="B-String" char=""" context="#pop"/>+ <RegExpr attribute="Error" String="."/>+ </context>++ <context name="Raw Q-B-String" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">+ <RegExpr attribute="Raw B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\.)++"/>+ <DetectChar attribute="Raw B-String" char=""" context="#pop"/>+ <LineContinue attribute="Raw B-String" context="#stay"/>+ <RegExpr attribute="Error" String="."/>+ </context>++ <!-- Regex -->++ <!--++ doctest: NOTE|XXX|HACK|FIXME|BUG|TODO+ que dit la doc ?++ -->++ <!-- Regex r'...' -->++ <context name="Raw A-Regex" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces attribute="Raw String"/>+ <DetectIdentifier attribute="Raw String"/>+ <StringDetect String="[^]" attribute="Regex Set" context="Raw A-Regex Set"/>+ <StringDetect String="[]" attribute="Regex Set" context="Raw A-Regex Set"/>+ <StringDetect String="[" attribute="Regex Set" context="Raw A-Regex Set"/>+ <StringDetect String="(?" lookAhead="1" context="Raw A-Regex Parent"/>+ <StringDetect String="(" attribute="Regex Capturing" context="Raw A-Regex Capture"/>+ <StringDetect String="'" attribute="Raw String" context="#pop"/>+ <IncludeRules context="RegexStringCommon"/>+ </context>++ <context name="Raw A-Regex Parent" attribute="Regex Set" lineEndContext="#pop">+ <StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw A-Regex NonCapture"/>+ <StringDetect String="(?P<" lookAhead="1" context="Raw A-Regex NamedCapture"/>+ <StringDetect String="(?#" attribute="Comment" context="Raw A-Regex ParentComment"/>+ <!-- regex package support: (?<...>) for (?P<...>) -->+ <StringDetect String="(?<" lookAhead="1" context="Raw A-Regex NamedCapture"/>+ <!-- regex package support:+ (?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)+ (?|...) -->+ <RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|<[=!]|\())" attribute="Regex Parenthesis" context="Raw A-Regex ParentOptions"/>+ <IncludeRules context="RegexParentCommon"/>+ <StringDetect String="(" attribute="Regex Parenthesis" context="Raw A-Regex ParentError"/>+ </context>++ <context name="Raw A-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">+ <!-- regex package support: | -->+ <AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw A-Regex Parenthesis"/>+ <StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw A-Regex ParentCond"/>+ </context>+ <context name="Raw A-Regex ParentCond" attribute="Raw String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw A-Regex Parenthesis">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw A-Regex Parenthesis"/>+ <RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>+ <!-- regex package support: -->+ <RegExpr String="\?<?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw A-Regex LookaroundInCond"/>+ </context>++ <context name="Raw A-Regex ParentError" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String="?" attribute="Error" context="#pop#pop!Raw A-Regex Parenthesis"/>+ </context>++ <context name="Raw A-Regex NamedCapture" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String="(" attribute="Regex Capturing"/>+ <!-- regex package support: P is optional -->+ <RegExpr String="\?P?<(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw A-Regex Capture"/>+ </context>++ <context name="Raw A-Regex LookaroundInCond" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw A-Regex Parenthesis"/>+ <IncludeRules context="Raw A-Regex ParentInside"/>+ </context>++ <context name="Raw A-Regex Parenthesis" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Parenthesis" context="#pop"/>+ <IncludeRules context="Raw A-Regex ParentInside"/>+ </context>++ <context name="Raw A-Regex Capture" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Capturing" context="#pop"/>+ <IncludeRules context="Raw A-Regex ParentInside"/>+ </context>++ <context name="Raw A-Regex NonCapture" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Non-Capturing" context="#pop"/>+ <IncludeRules context="Raw A-Regex ParentInside"/>+ </context>++ <context name="Raw A-Regex ParentInside" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String="'" lookAhead="1" context="#pop"/>+ <IncludeRules context="Raw A-Regex"/>+ </context>++ <context name="Raw A-Regex ParentComment" attribute="Comment" lineEndContext="#pop">+ <IncludeRules context="RegexCommentCommon"/>+ <StringDetect String="'" lookAhead="1" context="#pop#pop"/>+ </context>++ <context name="Raw A-Regex Set" attribute="Regex Set" lineEndContext="#pop">+ <IncludeRules context="RegexSetCommon"/>+ <StringDetect String="'" lookAhead="1" context="#pop"/>+ </context>+++ <!-- Regex r"..." -->++ <context name="Raw Q-Regex" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces attribute="Raw String"/>+ <DetectIdentifier attribute="Raw String"/>+ <StringDetect String="[^]" attribute="Regex Set" context="Raw Q-Regex Set"/>+ <StringDetect String="[]" attribute="Regex Set" context="Raw Q-Regex Set"/>+ <StringDetect String="[" attribute="Regex Set" context="Raw Q-Regex Set"/>+ <StringDetect String="(?" lookAhead="1" context="Raw Q-Regex Parent"/>+ <StringDetect String="(" attribute="Regex Capturing" context="Raw Q-Regex Capture"/>+ <StringDetect String=""" attribute="Raw String" context="#pop"/>+ <IncludeRules context="RegexStringCommon"/>+ </context>++ <context name="Raw Q-Regex Parent" attribute="Regex Set" lineEndContext="#pop">+ <StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Q-Regex NonCapture"/>+ <StringDetect String="(?P<" lookAhead="1" context="Raw Q-Regex NamedCapture"/>+ <StringDetect String="(?#" attribute="Comment" context="Raw Q-Regex ParentComment"/>+ <!-- regex package support: (?<...>) for (?P<...>) -->+ <StringDetect String="(?<" lookAhead="1" context="Raw Q-Regex NamedCapture"/>+ <!-- regex package support:+ (?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)+ (?|...) -->+ <RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|<[=!]|\())" attribute="Regex Parenthesis" context="Raw Q-Regex ParentOptions"/>+ <IncludeRules context="RegexParentCommon"/>+ <StringDetect String="(" attribute="Regex Parenthesis" context="Raw Q-Regex ParentError"/>+ </context>++ <context name="Raw Q-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">+ <!-- regex package support: | -->+ <AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Q-Regex Parenthesis"/>+ <StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Q-Regex ParentCond"/>+ </context>+ <context name="Raw Q-Regex ParentCond" attribute="Raw String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Q-Regex Parenthesis">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Q-Regex Parenthesis"/>+ <RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>+ <!-- regex package support: lookaround in conditional pattern: (?(?!...)a|b) etc -->+ <RegExpr String="\?<?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Q-Regex LookaroundInCond"/>+ </context>++ <context name="Raw Q-Regex ParentError" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String="?" attribute="Error" context="#pop#pop!Raw Q-Regex Parenthesis"/>+ </context>++ <context name="Raw Q-Regex NamedCapture" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String="(" attribute="Regex Capturing"/>+ <!-- regex package support: P is optional -->+ <RegExpr String="\?P?<(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Q-Regex Capture"/>+ </context>++ <context name="Raw Q-Regex LookaroundInCond" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Q-Regex Parenthesis"/>+ <IncludeRules context="Raw Q-Regex ParentInside"/>+ </context>++ <context name="Raw Q-Regex Parenthesis" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Parenthesis" context="#pop"/>+ <IncludeRules context="Raw Q-Regex ParentInside"/>+ </context>++ <context name="Raw Q-Regex Capture" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Capturing" context="#pop"/>+ <IncludeRules context="Raw Q-Regex ParentInside"/>+ </context>++ <context name="Raw Q-Regex NonCapture" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Non-Capturing" context="#pop"/>+ <IncludeRules context="Raw Q-Regex ParentInside"/>+ </context>++ <context name="Raw Q-Regex ParentInside" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String=""" lookAhead="1" context="#pop"/>+ <IncludeRules context="Raw Q-Regex"/>+ </context>++ <context name="Raw Q-Regex ParentComment" attribute="Comment" lineEndContext="#pop">+ <IncludeRules context="RegexCommentCommon"/>+ <StringDetect String=""" lookAhead="1" context="#pop#pop"/>+ </context>++ <context name="Raw Q-Regex Set" attribute="Regex Set" lineEndContext="#pop">+ <IncludeRules context="RegexSetCommon"/>+ <StringDetect String=""" lookAhead="1" context="#pop"/>+ </context>+++ <!-- Regex r'''...''' -->++ <context name="Raw Triple A-Regex" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces attribute="Raw String"/>+ <DetectIdentifier attribute="Raw String"/>+ <StringDetect String="[^]" attribute="Regex Set" context="Raw Triple A-Regex Set"/>+ <StringDetect String="[]" attribute="Regex Set" context="Raw Triple A-Regex Set"/>+ <StringDetect String="[" attribute="Regex Set" context="Raw Triple A-Regex Set"/>+ <StringDetect String="(?" lookAhead="1" context="Raw Triple A-Regex Parent"/>+ <StringDetect String="(" attribute="Regex Capturing" context="Raw Triple A-Regex Capture" beginRegion="RegParent"/>+ <StringDetect String="#" attribute="Comment" context="Raw Triple A-Regex Comment"/>+ <StringDetect String="'''" attribute="Raw String" context="#pop" endRegion="Triple A-region"/>+ <IncludeRules context="RegexStringCommon"/>+ </context>++ <context name="Raw Triple A-Regex Comment" attribute="Comment" lineEndContext="#pop">+ <StringDetect String="'''" lookAhead="1" context="#pop"/>+ <LineContinue attribute="Operator"/>+ <RegExpr String="([^'\\]++|\\.|'(?!''))++" attribute="Comment"/>+ </context>++ <context name="Raw Triple A-Regex Parent" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Triple A-Regex NonCapture" beginRegion="RegParent"/>+ <StringDetect String="(?P<" lookAhead="1" context="Raw Triple A-Regex NamedCapture"/>+ <StringDetect String="(?#" attribute="Comment" context="Raw Triple A-Regex ParentComment" beginRegion="RegParent"/>+ <!-- regex package support: (?<...>) for (?P<...>) -->+ <StringDetect String="(?<" lookAhead="1" context="Raw Triple A-Regex NamedCapture"/>+ <!-- regex package support:+ (?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)+ (?|...) -->+ <RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|<[=!]|\())" attribute="Regex Parenthesis" context="Raw Triple A-Regex ParentOptions" beginRegion="RegParent"/>+ <IncludeRules context="RegexParentCommon"/>+ <StringDetect String="(" attribute="Regex Parenthesis" context="Raw Triple A-Regex ParentError" beginRegion="RegParent"/>+ </context>++ <context name="Raw Triple A-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#stay" noIndentationBasedFolding="true">+ <!-- regex package support: | -->+ <AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple A-Regex Parenthesis"/>+ <StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Triple A-Regex ParentCond" beginRegion="RegParent"/>+ </context>+ <context name="Raw Triple A-Regex ParentCond" attribute="Raw String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Triple A-Regex Parenthesis">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple A-Regex Parenthesis" endRegion="RegParent"/>+ <RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>+ <!-- regex package support: -->+ <RegExpr String="\?<?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple A-Regex LookaroundInCond"/>+ </context>++ <context name="Raw Triple A-Regex ParentError" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String="?" attribute="Error" context="#pop#pop!Raw Triple A-Regex Parenthesis"/>+ </context>++ <context name="Raw Triple A-Regex NamedCapture" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String="(" attribute="Regex Capturing" beginRegion="RegParent"/>+ <!-- regex package support: P is optional -->+ <RegExpr String="\?P?<(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple A-Regex Capture"/>+ </context>++ <context name="Raw Triple A-Regex LookaroundInCond" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Triple A-Regex Parenthesis" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-Regex ParentInside"/>+ </context>++ <context name="Raw Triple A-Regex Parenthesis" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Parenthesis" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-Regex ParentInside"/>+ </context>++ <context name="Raw Triple A-Regex Capture" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Capturing" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-Regex ParentInside"/>+ </context>++ <context name="Raw Triple A-Regex NonCapture" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Non-Capturing" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-Regex ParentInside"/>+ </context>++ <context name="Raw Triple A-Regex ParentInside" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String="'''" lookAhead="1" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-Regex"/>+ </context>++ <context name="Raw Triple A-Regex ParentComment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">+ <IncludeRules context="RegexTripleCommentCommon"/>+ <StringDetect String="'''" lookAhead="1" context="#pop#pop" endRegion="RegParent"/>+ </context>++ <context name="Raw Triple A-Regex Set" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">+ <IncludeRules context="RegexSetCommon"/>+ <StringDetect String="'''" lookAhead="1" context="#pop"/>+ </context>+++ <!-- Regex r"""...""" -->++ <context name="Raw Triple Q-Regex" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces attribute="Raw String"/>+ <DetectIdentifier attribute="Raw String"/>+ <StringDetect String="[^]" attribute="Regex Set" context="Raw Triple Q-Regex Set"/>+ <StringDetect String="[]" attribute="Regex Set" context="Raw Triple Q-Regex Set"/>+ <StringDetect String="[" attribute="Regex Set" context="Raw Triple Q-Regex Set"/>+ <StringDetect String="(?" lookAhead="1" context="Raw Triple Q-Regex Parent"/>+ <StringDetect String="(" attribute="Regex Capturing" context="Raw Triple Q-Regex Capture" beginRegion="RegParent"/>+ <StringDetect String="#" attribute="Comment" context="Raw Triple Q-Regex Comment"/>+ <StringDetect String=""""" attribute="Raw String" context="#pop" endRegion="Triple Q-region"/>+ <IncludeRules context="RegexStringCommon"/>+ </context>++ <context name="Raw Triple Q-Regex Comment" attribute="Comment" lineEndContext="#pop">+ <StringDetect String=""""" lookAhead="1" context="#pop"/>+ <LineContinue attribute="Operator"/>+ <RegExpr String="([^"\\]++|\\.|"(?!""))++" attribute="Comment"/>+ </context>++ <context name="Raw Triple Q-Regex Parent" attribute="Regex Set" lineEndContext="#pop">+ <StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Triple Q-Regex NonCapture" beginRegion="RegParent"/>+ <StringDetect String="(?P<" lookAhead="1" context="Raw Triple Q-Regex NamedCapture"/>+ <StringDetect String="(?#" attribute="Comment" context="Raw Triple Q-Regex ParentComment" beginRegion="RegParent"/>+ <!-- regex package support: (?<...>) for (?P<...>) -->+ <StringDetect String="(?<" lookAhead="1" context="Raw Triple Q-Regex NamedCapture"/>+ <!-- regex package support:+ (?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)+ (?|...) -->+ <RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|<[=!]|\())" attribute="Regex Parenthesis" context="Raw Triple Q-Regex ParentOptions" beginRegion="RegParent"/>+ <IncludeRules context="RegexParentCommon"/>+ <StringDetect String="(" attribute="Regex Parenthesis" context="Raw Triple Q-Regex ParentError" beginRegion="RegParent"/>+ </context>++ <context name="Raw Triple Q-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">+ <!-- regex package support: | -->+ <AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple Q-Regex Parenthesis"/>+ <StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Triple Q-Regex ParentCond" beginRegion="RegParent"/>+ </context>+ <context name="Raw Triple Q-Regex ParentCond" attribute="Raw String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Triple Q-Regex Parenthesis">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple Q-Regex Parenthesis" endRegion="RegParent"/>+ <RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>+ <!-- regex package support: -->+ <RegExpr String="\?<?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple Q-Regex LookaroundInCond"/>+ </context>++ <context name="Raw Triple Q-Regex ParentError" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String="?" attribute="Error" context="#pop#pop!Raw Triple Q-Regex Parenthesis"/>+ </context>++ <context name="Raw Triple Q-Regex NamedCapture" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String="(" attribute="Regex Capturing" beginRegion="RegParent"/>+ <!-- regex package support: P is optional -->+ <RegExpr String="\?P?<(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple Q-Regex Capture"/>+ </context>++ <context name="Raw Triple Q-Regex LookaroundInCond" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Triple Q-Regex Parenthesis" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-Regex ParentInside"/>+ </context>++ <context name="Raw Triple Q-Regex Parenthesis" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Parenthesis" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-Regex ParentInside"/>+ </context>++ <context name="Raw Triple Q-Regex Capture" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Capturing" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-Regex ParentInside"/>+ </context>++ <context name="Raw Triple Q-Regex NonCapture" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Non-Capturing" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-Regex ParentInside"/>+ </context>++ <context name="Raw Triple Q-Regex ParentInside" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=""""" lookAhead="1" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-Regex"/>+ </context>++ <context name="Raw Triple Q-Regex ParentComment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">+ <IncludeRules context="RegexTripleCommentCommon"/>+ <StringDetect String=""""" lookAhead="1" context="#pop#pop" endRegion="RegParent"/>+ </context>++ <context name="Raw Triple Q-Regex Set" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">+ <IncludeRules context="RegexSetCommon"/>+ <StringDetect String=""""" lookAhead="1" context="#pop"/>+ </context>+++ <!-- Regex rb'...' -->++ <context name="Raw A-B-Regex" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <RegExpr attribute="Raw B-String" String="[ -#%&,\-/->@-Z\]_-z~]++"/>+ <StringDetect String="[^]" attribute="Regex Set" context="Raw A-B-Regex Set"/>+ <StringDetect String="[]" attribute="Regex Set" context="Raw A-B-Regex Set"/>+ <StringDetect String="[" attribute="Regex Set" context="Raw A-B-Regex Set"/>+ <StringDetect String="(?" lookAhead="1" context="Raw A-B-Regex Parent"/>+ <StringDetect String="(" attribute="Regex Capturing" context="Raw A-B-Regex Capture"/>+ <StringDetect String="'" attribute="Raw B-String" context="#pop"/>+ <IncludeRules context="RegexBStringCommon"/>+ </context>++ <context name="Raw A-B-Regex Parent" attribute="Regex Set" lineEndContext="#pop">+ <StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw A-B-Regex NonCapture"/>+ <StringDetect String="(?P<" lookAhead="1" context="Raw A-B-Regex NamedCapture"/>+ <StringDetect String="(?#" attribute="Comment" context="Raw A-Regex ParentComment"/>+ <!-- regex package support: (?<...>) for (?P<...>) -->+ <StringDetect String="(?<" lookAhead="1" context="Raw A-B-Regex NamedCapture"/>+ <!-- regex package support:+ (?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)+ (?|...) -->+ <RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|<[=!]|\())" attribute="Regex Parenthesis" context="Raw A-B-Regex ParentOptions"/>+ <IncludeRules context="RegexParentCommon"/>+ <StringDetect String="(" attribute="Regex Parenthesis" context="Raw A-B-Regex ParentError"/>+ </context>++ <context name="Raw A-B-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">+ <!-- regex package support: | -->+ <AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw A-B-Regex Parenthesis"/>+ <StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw A-B-Regex ParentCond"/>+ </context>+ <context name="Raw A-B-Regex ParentCond" attribute="Raw B-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw A-B-Regex Parenthesis">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw A-B-Regex Parenthesis"/>+ <RegExpr String="\b[_a-zA-Z][_a-zA-Z0-9]+|\b[0-9]{1,2}" attribute="Regex Backreference"/>+ <!-- regex package support: -->+ <RegExpr String="\?<?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw A-B-Regex LookaroundInCond"/>+ </context>++ <context name="Raw A-B-Regex ParentError" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String="?" attribute="Error" context="#pop#pop!Raw A-B-Regex Parenthesis"/>+ </context>++ <context name="Raw A-B-Regex NamedCapture" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String="(" attribute="Regex Capturing"/>+ <!-- regex package support: P is optional -->+ <RegExpr String="\?P?<(([__a-zA-Z][_a-zA-Z0-9]*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw A-B-Regex Capture"/>+ </context>++ <context name="Raw A-B-Regex LookaroundInCond" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw A-B-Regex Parenthesis"/>+ <IncludeRules context="Raw A-B-Regex ParentInside"/>+ </context>++ <context name="Raw A-B-Regex Parenthesis" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Parenthesis" context="#pop"/>+ <IncludeRules context="Raw A-B-Regex ParentInside"/>+ </context>++ <context name="Raw A-B-Regex Capture" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Capturing" context="#pop"/>+ <IncludeRules context="Raw A-B-Regex ParentInside"/>+ </context>++ <context name="Raw A-B-Regex NonCapture" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Non-Capturing" context="#pop"/>+ <IncludeRules context="Raw A-B-Regex ParentInside"/>+ </context>++ <context name="Raw A-B-Regex ParentInside" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String="'" lookAhead="1" context="#pop"/>+ <IncludeRules context="Raw A-B-Regex"/>+ </context>++ <context name="Raw A-B-Regex Set" attribute="Regex Set" lineEndContext="#pop">+ <RegExpr attribute="Regex Set" String="[ -&(-Z^-~]++"/>+ <IncludeRules context="RegexBStringSetCommon"/>+ <StringDetect String="'" lookAhead="1" context="#pop"/>+ <RegExpr attribute="Error" String="."/>+ </context>+++ <!-- Regex rb"..." -->++ <context name="Raw Q-B-Regex" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">+ <RegExpr attribute="Raw B-String" String="[ !#%-',\-/->@-Z\]_-z~]++"/>+ <StringDetect String="[^]" attribute="Regex Set" context="Raw Q-B-Regex Set"/>+ <StringDetect String="[]" attribute="Regex Set" context="Raw Q-B-Regex Set"/>+ <StringDetect String="[" attribute="Regex Set" context="Raw Q-B-Regex Set"/>+ <StringDetect String="(?" lookAhead="1" context="Raw Q-B-Regex Parent"/>+ <StringDetect String="(" attribute="Regex Capturing" context="Raw Q-B-Regex Capture"/>+ <StringDetect String=""" attribute="Raw B-String" context="#pop"/>+ <IncludeRules context="RegexBStringCommon"/>+ </context>++ <context name="Raw Q-B-Regex Parent" attribute="Regex Set" lineEndContext="#pop">+ <StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Q-B-Regex NonCapture"/>+ <StringDetect String="(?P<" lookAhead="1" context="Raw Q-B-Regex NamedCapture"/>+ <StringDetect String="(?#" attribute="Comment" context="Raw Q-Regex ParentComment"/>+ <!-- regex package support: (?<...>) for (?P<...>) -->+ <StringDetect String="(?<" lookAhead="1" context="Raw Q-B-Regex NamedCapture"/>+ <!-- regex package support:+ (?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)+ (?|...) -->+ <RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|<[=!]|\())" attribute="Regex Parenthesis" context="Raw Q-B-Regex ParentOptions"/>+ <IncludeRules context="RegexParentCommon"/>+ <StringDetect String="(" attribute="Regex Parenthesis" context="Raw Q-B-Regex ParentError"/>+ </context>++ <context name="Raw Q-B-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">+ <!-- regex package support: | -->+ <AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Q-B-Regex Parenthesis"/>+ <StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Q-B-Regex ParentCond"/>+ </context>+ <context name="Raw Q-B-Regex ParentCond" attribute="Raw B-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Q-B-Regex Parenthesis">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Q-B-Regex Parenthesis"/>+ <RegExpr String="\b[_a-zA-Z][_a-zA-Z0-9]+|\b[0-9]{1,2}" attribute="Regex Backreference"/>+ <!-- regex package support: -->+ <RegExpr String="\?<?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Q-B-Regex LookaroundInCond"/>+ </context>++ <context name="Raw Q-B-Regex ParentError" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String="?" attribute="Error" context="#pop#pop!Raw Q-B-Regex Parenthesis"/>+ </context>++ <context name="Raw Q-B-Regex NamedCapture" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String="(" attribute="Regex Capturing"/>+ <!-- regex package support: P is optional -->+ <RegExpr String="\?P?<(([__a-zA-Z][_a-zA-Z0-9]*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Q-B-Regex Capture"/>+ </context>++ <context name="Raw Q-B-Regex LookaroundInCond" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Q-B-Regex Parenthesis"/>+ <IncludeRules context="Raw Q-B-Regex ParentInside"/>+ </context>++ <context name="Raw Q-B-Regex Parenthesis" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Parenthesis" context="#pop"/>+ <IncludeRules context="Raw Q-B-Regex ParentInside"/>+ </context>++ <context name="Raw Q-B-Regex Capture" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Capturing" context="#pop"/>+ <IncludeRules context="Raw Q-B-Regex ParentInside"/>+ </context>++ <context name="Raw Q-B-Regex NonCapture" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Non-Capturing" context="#pop"/>+ <IncludeRules context="Raw Q-B-Regex ParentInside"/>+ </context>++ <context name="Raw Q-B-Regex ParentInside" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String=""" lookAhead="1" context="#pop"/>+ <IncludeRules context="Raw Q-B-Regex"/>+ </context>++ <context name="Raw Q-B-Regex Set" attribute="Regex Set" lineEndContext="#pop">+ <RegExpr attribute="Regex Set" String="[ !#-Z^-~]++"/>+ <IncludeRules context="RegexBStringSetCommon"/>+ <StringDetect String=""" lookAhead="1" context="#pop"/>+ <RegExpr attribute="Error" String="."/>+ </context>+++ <!-- Regex rb'''...''' -->++ <context name="Raw Triple A-B-Regex" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <RegExpr attribute="Raw B-String" String="([ !"%&,\-/->@-Z\]_-z~]++|'(?!''))++"/>+ <StringDetect String="[^]" attribute="Regex Set" context="Raw Triple A-B-Regex Set"/>+ <StringDetect String="[]" attribute="Regex Set" context="Raw Triple A-B-Regex Set"/>+ <StringDetect String="[" attribute="Regex Set" context="Raw Triple A-B-Regex Set"/>+ <StringDetect String="(?" lookAhead="1" context="Raw Triple A-B-Regex Parent"/>+ <StringDetect String="(" attribute="Regex Capturing" context="Raw Triple A-B-Regex Capture" beginRegion="RegParent"/>+ <StringDetect String="#" attribute="Comment" context="Raw Triple A-B-Regex Comment"/>+ <StringDetect String="'''" attribute="Raw B-String" context="#pop" endRegion="Triple A-region"/>+ <IncludeRules context="RegexBStringCommon"/>+ </context>++ <context name="Raw Triple A-B-Regex Comment" attribute="Comment" lineEndContext="#pop">+ <StringDetect String="'''" lookAhead="1" context="#pop"/>+ <LineContinue attribute="Operator"/>+ <RegExpr String="([ -&(-\[\]-~]++|\\.|'(?!''))++" attribute="Comment"/>+ </context>++ <context name="Raw Triple A-B-Regex Parent" attribute="Regex Set" lineEndContext="#pop">+ <StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Triple A-B-Regex NonCapture" beginRegion="RegParent"/>+ <StringDetect String="(?P<" lookAhead="1" context="Raw Triple A-B-Regex NamedCapture"/>+ <StringDetect String="(?#" attribute="Comment" context="Raw Triple A-Regex ParentComment" beginRegion="RegParent"/>+ <!-- regex package support: (?<...>) for (?P<...>) -->+ <StringDetect String="(?<" lookAhead="1" context="Raw Triple A-B-Regex NamedCapture"/>+ <!-- regex package support:+ (?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)+ (?|...) -->+ <RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|<[=!]|\())" attribute="Regex Parenthesis" context="Raw Triple A-B-Regex ParentOptions" beginRegion="RegParent"/>+ <IncludeRules context="RegexParentCommon"/>+ <StringDetect String="(" attribute="Regex Parenthesis" context="Raw Triple A-B-Regex ParentError" beginRegion="RegParent"/>+ </context>++ <context name="Raw Triple A-B-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">+ <!-- regex package support: | -->+ <AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple A-B-Regex Parenthesis"/>+ <StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Triple A-B-Regex ParentCond" beginRegion="RegParent"/>+ </context>+ <context name="Raw Triple A-B-Regex ParentCond" attribute="Raw B-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Triple A-B-Regex Parenthesis">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple A-B-Regex Parenthesis" endRegion="RegParent"/>+ <RegExpr String="\b[_a-zA-Z][_a-zA-Z0-9]+|\b[0-9]{1,2}" attribute="Regex Backreference"/>+ <!-- regex package support: -->+ <RegExpr String="\?<?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple A-B-Regex LookaroundInCond"/>+ </context>++ <context name="Raw Triple A-B-Regex ParentError" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String="?" attribute="Error" context="#pop#pop!Raw Triple A-B-Regex Parenthesis"/>+ </context>++ <context name="Raw Triple A-B-Regex NamedCapture" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String="(" attribute="Regex Capturing" beginRegion="RegParent"/>+ <!-- regex package support: P is optional -->+ <RegExpr String="\?P?<(([__a-zA-Z][_a-zA-Z0-9]*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple A-B-Regex Capture"/>+ </context>++ <context name="Raw Triple A-B-Regex LookaroundInCond" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Triple A-B-Regex Parenthesis" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-B-Regex ParentInside"/>+ </context>++ <context name="Raw Triple A-B-Regex Parenthesis" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Parenthesis" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-B-Regex ParentInside"/>+ </context>++ <context name="Raw Triple A-B-Regex Capture" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Capturing" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-B-Regex ParentInside"/>+ </context>++ <context name="Raw Triple A-B-Regex NonCapture" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Non-Capturing" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-B-Regex ParentInside"/>+ </context>++ <context name="Raw Triple A-B-Regex ParentInside" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String="'''" lookAhead="1" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-B-Regex"/>+ </context>++ <context name="Raw Triple A-B-Regex Set" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">+ <RegExpr attribute="Regex Set" String="([ -&(-Z^-~]++|'(?!''))++"/>+ <IncludeRules context="RegexBStringSetCommon"/>+ <StringDetect String="'''" lookAhead="1" context="#pop"/>+ <RegExpr attribute="Error" String="."/>+ </context>+++ <!-- Regex rb"""...""" -->++ <context name="Raw Triple Q-B-Regex" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <RegExpr attribute="Raw B-String" String="([ !%-',\-/->@-Z\]_-z~]++|"(?!""))++"/>+ <StringDetect String="[^]" attribute="Regex Set" context="Raw Triple Q-B-Regex Set"/>+ <StringDetect String="[]" attribute="Regex Set" context="Raw Triple Q-B-Regex Set"/>+ <StringDetect String="[" attribute="Regex Set" context="Raw Triple Q-B-Regex Set"/>+ <StringDetect String="(?" lookAhead="1" context="Raw Triple Q-B-Regex Parent"/>+ <StringDetect String="(" attribute="Regex Capturing" context="Raw Triple Q-B-Regex Capture" beginRegion="RegParent"/>+ <StringDetect String="#" attribute="Comment" context="Raw Triple Q-B-Regex Comment"/>+ <StringDetect String=""""" attribute="Raw B-String" context="#pop" endRegion="Triple Q-region"/>+ <IncludeRules context="RegexBStringCommon"/>+ </context>++ <context name="Raw Triple Q-B-Regex Comment" attribute="Comment" lineEndContext="#pop">+ <StringDetect String=""""" lookAhead="1" context="#pop"/>+ <LineContinue attribute="Operator"/>+ <RegExpr String="([ !#-\[\]-~]++|\\.|"(?!""))++" attribute="Comment"/>+ </context>++ <context name="Raw Triple Q-B-Regex Parent" attribute="Regex Set" lineEndContext="#pop">+ <StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Triple Q-B-Regex NonCapture" beginRegion="RegParent"/>+ <StringDetect String="(?P<" lookAhead="1" context="Raw Triple Q-B-Regex NamedCapture"/>+ <StringDetect String="(?#" attribute="Comment" context="Raw Triple Q-Regex ParentComment" beginRegion="RegParent"/>+ <!-- regex package support: (?<...>) for (?P<...>) -->+ <StringDetect String="(?<" lookAhead="1" context="Raw Triple Q-B-Regex NamedCapture"/>+ <!-- regex package support:+ (?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)+ (?|...) -->+ <RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|<[=!]|\())" attribute="Regex Parenthesis" context="Raw Triple Q-B-Regex ParentOptions" beginRegion="RegParent"/>+ <IncludeRules context="RegexParentCommon"/>+ <StringDetect String="(" attribute="Regex Parenthesis" context="Raw Triple Q-B-Regex ParentError" beginRegion="RegParent"/>+ </context>++ <context name="Raw Triple Q-B-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">+ <!-- regex package support: | -->+ <AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple Q-B-Regex Parenthesis"/>+ <StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Triple Q-B-Regex ParentCond" beginRegion="RegParent"/>+ </context>+ <context name="Raw Triple Q-B-Regex ParentCond" attribute="Raw B-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Triple Q-B-Regex Parenthesis">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple Q-B-Regex Parenthesis" endRegion="RegParent"/>+ <RegExpr String="\b[_a-zA-Z][_a-zA-Z0-9]+|\b[0-9]{1,2}" attribute="Regex Backreference"/>+ <!-- regex package support: -->+ <RegExpr String="\?<?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple Q-B-Regex LookaroundInCond"/>+ </context>++ <context name="Raw Triple Q-B-Regex ParentError" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String="?" attribute="Error" context="#pop#pop!Raw Triple Q-B-Regex Parenthesis"/>+ </context>++ <context name="Raw Triple Q-B-Regex NamedCapture" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String="(" attribute="Regex Capturing" beginRegion="RegParent"/>+ <!-- regex package support: P is optional -->+ <RegExpr String="\?P?<(([__a-zA-Z][_a-zA-Z0-9]*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple Q-B-Regex Capture"/>+ </context>++ <context name="Raw Triple Q-B-Regex LookaroundInCond" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Triple Q-B-Regex Parenthesis" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-B-Regex ParentInside"/>+ </context>++ <context name="Raw Triple Q-B-Regex Parenthesis" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Parenthesis" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-B-Regex ParentInside"/>+ </context>++ <context name="Raw Triple Q-B-Regex Capture" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Capturing" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-B-Regex ParentInside"/>+ </context>++ <context name="Raw Triple Q-B-Regex NonCapture" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Non-Capturing" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-B-Regex ParentInside"/>+ </context>++ <context name="Raw Triple Q-B-Regex ParentInside" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=""""" lookAhead="1" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-B-Regex"/>+ </context>++ <context name="Raw Triple Q-B-Regex Set" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">+ <RegExpr attribute="Regex Set" String="([ !#-Z^-~]++|"(?!""))++"/>+ <IncludeRules context="RegexBStringSetCommon"/>+ <StringDetect String=""""" lookAhead="1" context="#pop"/>+ <RegExpr attribute="Error" String="."/>+ </context>+++ <!-- Regex rf'...' -->++ <context name="Raw A-F-Regex" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces attribute="Raw F-String"/>+ <DetectIdentifier attribute="Raw F-String"/>+ <StringDetect String="[^]" attribute="Regex Set" context="Raw A-F-Regex Set"/>+ <StringDetect String="[]" attribute="Regex Set" context="Raw A-F-Regex Set"/>+ <StringDetect String="[" attribute="Regex Set" context="Raw A-F-Regex Set"/>+ <StringDetect String="(?" lookAhead="1" context="Raw A-F-Regex Parent"/>+ <StringDetect String="(" attribute="Regex Capturing" context="Raw A-F-Regex Capture"/>+ <StringDetect String="'" attribute="Raw F-String" context="#pop"/>+ <IncludeRules context="RegexFStringCommon"/>+ </context>++ <context name="Raw A-F-Regex Parent" attribute="Regex Set" lineEndContext="#pop">+ <StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw A-F-Regex NonCapture"/>+ <StringDetect String="(?P<" lookAhead="1" context="Raw A-F-Regex NamedCapture"/>+ <StringDetect String="(?#" attribute="Comment" context="Raw A-F-Regex ParentComment"/>+ <!-- regex package support: (?<...>) for (?P<...>) -->+ <StringDetect String="(?<" lookAhead="1" context="Raw A-F-Regex NamedCapture"/>+ <!-- regex package support:+ (?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)+ (?|...) -->+ <RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01]|&fStringSimple;)*(-([imsxafLuw]|&fStringSimple;)+)?:|[=>!|]|<[=!]|\())" attribute="Regex Parenthesis" context="Raw A-F-Regex ParentOptions"/>+ <IncludeRules context="RegexFStringParentCommon"/>+ <StringDetect String="(" attribute="Regex Parenthesis" context="Raw A-F-Regex ParentError"/>+ </context>++ <context name="Raw A-F-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">+ <!-- regex package support: | -->+ <AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw A-F-Regex Parenthesis"/>+ <StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw A-F-Regex ParentCond"/>+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ </context>+ <context name="Raw A-F-Regex ParentCond" attribute="Raw F-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw A-F-Regex Parenthesis">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw A-F-Regex Parenthesis"/>+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ <RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>+ <!-- regex package support: -->+ <RegExpr String="\?<?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw A-F-Regex LookaroundInCond"/>+ </context>++ <context name="Raw A-F-Regex ParentError" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String="?" attribute="Error" context="#pop#pop!Raw A-F-Regex Parenthesis"/>+ </context>++ <context name="Raw A-F-Regex NamedCapture" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String="(" attribute="Regex Capturing"/>+ <!-- regex package support: P is optional -->+ <RegExpr String="\?P?<(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw A-F-Regex Capture"/>+ </context>++ <context name="Raw A-F-Regex LookaroundInCond" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw A-F-Regex Parenthesis"/>+ <IncludeRules context="Raw A-F-Regex ParentInside"/>+ </context>++ <context name="Raw A-F-Regex Parenthesis" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Parenthesis" context="#pop"/>+ <IncludeRules context="Raw A-F-Regex ParentInside"/>+ </context>++ <context name="Raw A-F-Regex Capture" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Capturing" context="#pop"/>+ <IncludeRules context="Raw A-F-Regex ParentInside"/>+ </context>++ <context name="Raw A-F-Regex NonCapture" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Non-Capturing" context="#pop"/>+ <IncludeRules context="Raw A-F-Regex ParentInside"/>+ </context>++ <context name="Raw A-F-Regex ParentInside" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String="'" lookAhead="1" context="#pop"/>+ <IncludeRules context="Raw A-F-Regex"/>+ </context>++ <context name="Raw A-F-Regex ParentComment" attribute="Comment" lineEndContext="#pop">+ <IncludeRules context="RegexCommentCommon"/>+ <IncludeRules context="RegexFString"/>+ <StringDetect String="'" lookAhead="1" context="#pop#pop"/>+ </context>++ <context name="Raw A-F-Regex Set" attribute="Regex Set" lineEndContext="#pop">+ <IncludeRules context="RegexFStringSetCommon"/>+ <IncludeRules context="RegexFString"/>+ <StringDetect String="'" lookAhead="1" context="#pop"/>+ </context>+++ <!-- Regex rf"..." -->++ <context name="Raw Q-F-Regex" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">+ <DetectSpaces attribute="Raw F-String"/>+ <DetectIdentifier attribute="Raw F-String"/>+ <StringDetect String="[^]" attribute="Regex Set" context="Raw Q-F-Regex Set"/>+ <StringDetect String="[]" attribute="Regex Set" context="Raw Q-F-Regex Set"/>+ <StringDetect String="[" attribute="Regex Set" context="Raw Q-F-Regex Set"/>+ <StringDetect String="(?" lookAhead="1" context="Raw Q-F-Regex Parent"/>+ <StringDetect String="(" attribute="Regex Capturing" context="Raw Q-F-Regex Capture"/>+ <StringDetect String=""" attribute="Raw F-String" context="#pop"/>+ <IncludeRules context="RegexFStringCommon"/>+ </context>++ <context name="Raw Q-F-Regex Parent" attribute="Regex Set" lineEndContext="#pop">+ <StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Q-F-Regex NonCapture"/>+ <StringDetect String="(?P<" lookAhead="1" context="Raw Q-F-Regex NamedCapture"/>+ <StringDetect String="(?#" attribute="Comment" context="Raw Q-F-Regex ParentComment"/>+ <!-- regex package support: (?<...>) for (?P<...>) -->+ <StringDetect String="(?<" lookAhead="1" context="Raw Q-F-Regex NamedCapture"/>+ <!-- regex package support:+ (?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)+ (?|...) -->+ <RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01]|&fStringSimple;)*(-([imsxafLuw]|&fStringSimple;)+)?:|[=>!|]|<[=!]|\())" attribute="Regex Parenthesis" context="Raw Q-F-Regex ParentOptions"/>+ <IncludeRules context="RegexFStringParentCommon"/>+ <StringDetect String="(" attribute="Regex Parenthesis" context="Raw Q-F-Regex ParentError"/>+ </context>++ <context name="Raw Q-F-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">+ <!-- regex package support: | -->+ <AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Q-F-Regex Parenthesis"/>+ <StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Q-F-Regex ParentCond"/>+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ </context>+ <context name="Raw Q-F-Regex ParentCond" attribute="Raw F-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Q-F-Regex Parenthesis">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Q-F-Regex Parenthesis"/>+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ <RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>+ <!-- regex package support: lookaround in conditional pattern: (?(?!...)a|b) etc -->+ <RegExpr String="\?<?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Q-F-Regex LookaroundInCond"/>+ </context>++ <context name="Raw Q-F-Regex ParentError" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String="?" attribute="Error" context="#pop#pop!Raw Q-F-Regex Parenthesis"/>+ </context>++ <context name="Raw Q-F-Regex NamedCapture" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String="(" attribute="Regex Capturing"/>+ <!-- regex package support: P is optional -->+ <RegExpr String="\?P?<(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Q-F-Regex Capture"/>+ </context>++ <context name="Raw Q-F-Regex LookaroundInCond" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Q-F-Regex Parenthesis"/>+ <IncludeRules context="Raw Q-F-Regex ParentInside"/>+ </context>++ <context name="Raw Q-F-Regex Parenthesis" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Parenthesis" context="#pop"/>+ <IncludeRules context="Raw Q-F-Regex ParentInside"/>+ </context>++ <context name="Raw Q-F-Regex Capture" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Capturing" context="#pop"/>+ <IncludeRules context="Raw Q-F-Regex ParentInside"/>+ </context>++ <context name="Raw Q-F-Regex NonCapture" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String=")" attribute="Regex Non-Capturing" context="#pop"/>+ <IncludeRules context="Raw Q-F-Regex ParentInside"/>+ </context>++ <context name="Raw Q-F-Regex ParentInside" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String=""" lookAhead="1" context="#pop"/>+ <IncludeRules context="Raw Q-F-Regex"/>+ </context>++ <context name="Raw Q-F-Regex ParentComment" attribute="Comment" lineEndContext="#pop">+ <IncludeRules context="RegexCommentCommon"/>+ <IncludeRules context="RegexFString"/>+ <StringDetect String=""" lookAhead="1" context="#pop#pop"/>+ </context>++ <context name="Raw Q-F-Regex Set" attribute="Regex Set" lineEndContext="#pop">+ <IncludeRules context="RegexFStringSetCommon"/>+ <IncludeRules context="RegexFString"/>+ <StringDetect String=""" lookAhead="1" context="#pop"/>+ </context>+++ <!-- Regex rf'''...''' -->++ <context name="Raw Triple A-F-Regex" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces attribute="Raw F-String"/>+ <DetectIdentifier attribute="Raw F-String"/>+ <StringDetect String="[^]" attribute="Regex Set" context="Raw Triple A-F-Regex Set"/>+ <StringDetect String="[]" attribute="Regex Set" context="Raw Triple A-F-Regex Set"/>+ <StringDetect String="[" attribute="Regex Set" context="Raw Triple A-F-Regex Set"/>+ <StringDetect String="(?" lookAhead="1" context="Raw Triple A-F-Regex Parent"/>+ <StringDetect String="(" attribute="Regex Capturing" context="Raw Triple A-F-Regex Capture" beginRegion="RegParent"/>+ <StringDetect String="#" attribute="Comment" context="Raw Triple A-F-Regex Comment"/>+ <StringDetect String="'''" attribute="Raw F-String" context="#pop" endRegion="Triple A-region"/>+ <IncludeRules context="RegexFStringCommon"/>+ </context>++ <context name="Raw Triple A-F-Regex Comment" attribute="Comment" lineEndContext="#pop">+ <StringDetect String="'''" lookAhead="1" context="#pop"/>+ <LineContinue attribute="Operator"/>+ <IncludeRules context="RegexFString"/>+ <RegExpr String="([^'\\{}]++|\\.|'(?!''))++" attribute="Comment"/>+ </context>++ <context name="Raw Triple A-F-Regex Parent" attribute="Regex Set" lineEndContext="#pop">+ <StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Triple A-F-Regex NonCapture" beginRegion="RegParent"/>+ <StringDetect String="(?P<" lookAhead="1" context="Raw Triple A-F-Regex NamedCapture"/>+ <StringDetect String="(?#" attribute="Comment" context="Raw Triple A-F-Regex ParentComment" beginRegion="RegParent"/>+ <!-- regex package support: (?<...>) for (?P<...>) -->+ <StringDetect String="(?<" lookAhead="1" context="Raw Triple A-F-Regex NamedCapture"/>+ <!-- regex package support:+ (?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)+ (?|...) -->+ <RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01]|&fStringSimple;)*(-([imsxafLuw]|&fStringSimple;)+)?:|[=>!|]|<[=!]|\())" attribute="Regex Parenthesis" context="Raw Triple A-F-Regex ParentOptions" beginRegion="RegParent"/>+ <IncludeRules context="RegexFStringParentCommon"/>+ <StringDetect String="(" attribute="Regex Parenthesis" context="Raw Triple A-F-Regex ParentError" beginRegion="RegParent"/>+ </context>++ <context name="Raw Triple A-F-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">+ <!-- regex package support: | -->+ <AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple A-F-Regex Parenthesis"/>+ <StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Triple A-F-Regex ParentCond" beginRegion="RegParent"/>+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ </context>+ <context name="Raw Triple A-F-Regex ParentCond" attribute="Raw F-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Triple A-F-Regex Parenthesis">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple A-F-Regex Parenthesis" endRegion="RegParent"/>+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ <RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>+ <!-- regex package support: -->+ <RegExpr String="\?<?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple A-F-Regex LookaroundInCond"/>+ </context>++ <context name="Raw Triple A-F-Regex ParentError" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String="?" attribute="Error" context="#pop#pop!Raw Triple A-F-Regex Parenthesis"/>+ </context>++ <context name="Raw Triple A-F-Regex NamedCapture" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String="(" attribute="Regex Capturing" beginRegion="RegParent"/>+ <!-- regex package support: P is optional -->+ <RegExpr String="\?P?<(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple A-F-Regex Capture"/>+ </context>++ <context name="Raw Triple A-F-Regex LookaroundInCond" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Triple A-F-Regex Parenthesis" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-F-Regex ParentInside"/>+ </context>++ <context name="Raw Triple A-F-Regex Parenthesis" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Parenthesis" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-F-Regex ParentInside"/>+ </context>++ <context name="Raw Triple A-F-Regex Capture" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Capturing" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-F-Regex ParentInside"/>+ </context>++ <context name="Raw Triple A-F-Regex NonCapture" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Non-Capturing" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-F-Regex ParentInside"/>+ </context>++ <context name="Raw Triple A-F-Regex ParentInside" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String="'''" lookAhead="1" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple A-F-Regex"/>+ </context>++ <context name="Raw Triple A-F-Regex ParentComment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">+ <IncludeRules context="RegexTripleCommentCommon"/>+ <IncludeRules context="RegexFString"/>+ <StringDetect String="'''" lookAhead="1" context="#pop#pop" endRegion="RegParent"/>+ </context>++ <context name="Raw Triple A-F-Regex Set" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">+ <IncludeRules context="RegexFStringSetCommon"/>+ <IncludeRules context="RegexFString"/>+ <StringDetect String="'''" lookAhead="1" context="#pop"/>+ </context>+++ <!-- Regex rf"""...""" -->++ <context name="Raw Triple Q-F-Regex" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces attribute="Raw F-String"/>+ <DetectIdentifier attribute="Raw F-String"/>+ <StringDetect String="[^]" attribute="Regex Set" context="Raw Triple Q-F-Regex Set"/>+ <StringDetect String="[]" attribute="Regex Set" context="Raw Triple Q-F-Regex Set"/>+ <StringDetect String="[" attribute="Regex Set" context="Raw Triple Q-F-Regex Set"/>+ <StringDetect String="(?" lookAhead="1" context="Raw Triple Q-F-Regex Parent"/>+ <StringDetect String="(" attribute="Regex Capturing" context="Raw Triple Q-F-Regex Capture" beginRegion="RegParent"/>+ <StringDetect String="#" attribute="Comment" context="Raw Triple Q-F-Regex Comment"/>+ <StringDetect String=""""" attribute="Raw F-String" context="#pop" endRegion="Triple Q-region"/>+ <IncludeRules context="RegexFStringCommon"/>+ </context>++ <context name="Raw Triple Q-F-Regex Comment" attribute="Comment" lineEndContext="#pop">+ <StringDetect String=""""" lookAhead="1" context="#pop"/>+ <LineContinue attribute="Operator"/>+ <IncludeRules context="RegexFString"/>+ <RegExpr String="([^"\\{}]++|\\.|"(?!""))++" attribute="Comment"/>+ </context>++ <context name="Raw Triple Q-F-Regex Parent" attribute="Regex Set" lineEndContext="#pop">+ <StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Triple Q-F-Regex NonCapture" beginRegion="RegParent"/>+ <StringDetect String="(?P<" lookAhead="1" context="Raw Triple Q-F-Regex NamedCapture"/>+ <StringDetect String="(?#" attribute="Comment" context="Raw Triple Q-F-Regex ParentComment" beginRegion="RegParent"/>+ <!-- regex package support: (?<...>) for (?P<...>) -->+ <StringDetect String="(?<" lookAhead="1" context="Raw Triple Q-F-Regex NamedCapture"/>+ <!-- regex package support:+ (?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)+ (?|...) -->+ <RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01]|&fStringSimple;)*(-([imsxafLuw]|&fStringSimple;)+)?:|[=>!|]|<[=!]|\())" attribute="Regex Parenthesis" context="Raw Triple Q-F-Regex ParentOptions" beginRegion="RegParent"/>+ <IncludeRules context="RegexFStringParentCommon"/>+ <StringDetect String="(" attribute="Regex Parenthesis" context="Raw Triple Q-F-Regex ParentError" beginRegion="RegParent"/>+ </context>++ <context name="Raw Triple Q-F-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop#pop!Raw Triple Q-F-Regex Parenthesis">+ <!-- regex package support: | -->+ <AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple Q-F-Regex Parenthesis"/>+ <AnyChar String="<?" attribute="Regex Parenthesis Options"/>+ <StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Triple Q-F-Regex ParentCond" beginRegion="RegParent"/>+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ </context>+ <context name="Raw Triple Q-F-Regex ParentCond" attribute="Raw F-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Triple Q-F-Regex Parenthesis">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple Q-F-Regex Parenthesis" endRegion="RegParent"/>+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ <RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>+ <!-- regex package support: -->+ <RegExpr String="\?<?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple Q-F-Regex LookaroundInCond"/>+ </context>++ <context name="Raw Triple Q-F-Regex ParentError" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String="?" attribute="Error" context="#pop#pop!Raw Triple Q-F-Regex Parenthesis"/>+ </context>++ <context name="Raw Triple Q-F-Regex NamedCapture" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String="(" attribute="Regex Capturing" beginRegion="RegParent"/>+ <!-- regex package support: P is optional -->+ <RegExpr String="\?P?<(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple Q-F-Regex Capture"/>+ </context>++ <context name="Raw Triple Q-F-Regex LookaroundInCond" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Triple Q-F-Regex Parenthesis" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-F-Regex ParentInside"/>+ </context>++ <context name="Raw Triple Q-F-Regex Parenthesis" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Parenthesis" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-F-Regex ParentInside"/>+ </context>++ <context name="Raw Triple Q-F-Regex Capture" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Capturing" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-F-Regex ParentInside"/>+ </context>++ <context name="Raw Triple Q-F-Regex NonCapture" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=")" attribute="Regex Non-Capturing" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-F-Regex ParentInside"/>+ </context>++ <context name="Raw Triple Q-F-Regex ParentInside" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <StringDetect String=""""" lookAhead="1" context="#pop" endRegion="RegParent"/>+ <IncludeRules context="Raw Triple Q-F-Regex"/>+ </context>++ <context name="Raw Triple Q-F-Regex ParentComment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">+ <IncludeRules context="RegexTripleCommentCommon"/>+ <IncludeRules context="RegexFString"/>+ <StringDetect String=""""" lookAhead="1" context="#pop#pop" endRegion="RegParent"/>+ </context>++ <context name="Raw Triple Q-F-Regex Set" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">+ <IncludeRules context="RegexFStringSetCommon"/>+ <IncludeRules context="RegexFString"/>+ <StringDetect String=""""" lookAhead="1" context="#pop"/>+ </context>+++ <!-- Regex common context -->++ <context name="RegexFString" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String="{{" attribute="String Char"/>+ <StringDetect String="}}" attribute="String Char"/>+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ <StringDetect String="}" attribute="Error"/>+ </context>++ <context name="RegexFStringParentCommon" attribute="Raw F-String" lineEndContext="#pop">+ <!-- regex package support: (?R) (?0) -->+ <RegExpr String="\(\?([R0](?=\))|(?=([aiLmsuxfwbepr]+|V[01]|&fStringSimple;)*\)))" attribute="Regex Parenthesis Options" context="RegexFStringParentOptions"/>+ <!-- regex package support: (?P=1), (?1), (?P>name), (?P&name) -->+ <RegExpr String="\(\?P[=>&]" attribute="Regex Backreference" context="RegexFStringParentBackRef"/>+ </context>+ <context name="RegexFStringParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop#pop">+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ <StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop"/>+ </context>+ <context name="RegexFStringParentBackRef" attribute="Regex Backreference" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ <StringDetect String=")" attribute="Regex Backreference" context="#pop#pop"/>+ <DetectIdentifier attribute="Regex Backreference"/>+ <Int attribute="Regex Backreference"/>+ </context>++ <context name="RegexFStringCommon" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String="\" lookAhead="1" context="RegexFStringEscape"/>+ <IncludeRules context="RegexCommonSymbol"/>+ <RegExpr String="\{\{(,®FStringRangeN;?|®FStringRangeN;(,®FStringRangeN;?)?)\}\}" lookAhead="1" context="RegexFStringCommonRange"/>+ <IncludeRules context="RegexFString"/>+ </context>+ <context name="RegexFStringCommonRange" attribute="Regex Quantifier" lineEndContext="#pop">+ <StringDetect String="{{" attribute="String Char"/>+ <StringDetect String="}}" attribute="String Char" context="#pop"/>+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ </context>++ <context name="RegexFStringSetCommon" attribute="Raw F-String" lineEndContext="#pop">+ <StringDetect String="]" attribute="Regex Set" context="#pop"/>+ <StringDetect String="\" lookAhead="1" context="RegexFStringSetEscape"/>+ <!-- regex package support: character classes [:...:] -->+ <StringDetect String="[" lookAhead="1" context="RegexSetCharClass"/>+ </context>++ <context name="RegexFStringSetEscape" attribute="Raw F-String" lineEndContext="#pop">+ <IncludeRules context="RegexFStringEscapeCommon"/>+ <StringDetect String="\b" attribute="String Char" context="#pop"/>+ <LineContinue attribute="String Char" context="#pop"/>+ <RegExpr String="." attribute="Error" context="#pop"/>+ </context>++ <context name="RegexFStringEscape" attribute="Raw F-String" lineEndContext="#pop">+ <IncludeRules context="RegexFStringEscapeCommon"/>+ <IncludeRules context="RegexEscapeCommonBegin"/>+ <RegExpr String="\\g<(?=&fStringSimple;>)" attribute="Regex Backreference" context="RegexFStringEscapeG"/>+ <IncludeRules context="RegexEscapeCommonEnd"/>+ </context>+ <context name="RegexFStringEscapeG" attribute="Regex Backreference" lineEndContext="#pop#pop">+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ <StringDetect String=">" attribute="Regex Backreference" context="#pop#pop"/>+ </context>++ <!-- contains no \b -->+ <context name="RegexFStringEscapeCommon" attribute="Raw F-String" lineEndContext="#pop">+ <IncludeRules context="RegexEscapeSpecialCommon"/>+ <!-- regex package support: \p{value} \P{value} \p{property=value} \P{property=value} -->+ <RegExpr String="\\[[:^alnum:]afnrtv]|\\[0-7]{1,3}|&escapedHexUni;|\\[pP]{{\^?[a-zA-Z0-9_]+([:=][a-zA-Z0-9_]*)?}}|\\({{|}})|\\[xuUpPN]?(?={([^{]|$))" attribute="String Char" context="#pop"/>+ <RegExpr String="\\[pP]{{\^?(?=(&fStringSimple;|[a-zA-Z0-9_]++)[:=]?(([a-zA-Z0-9_]*|&fStringSimple;)?)}})|\\N{{(?=&fStringSimple;}})" attribute="String Char" context="RegexFStringEscapeP"/>+ <RegExpr String="\\L<(?=&fStringSimple;>)" attribute="Regex Special" context="RegexFStringEscapeL"/>+ </context>+ <context name="RegexFStringEscapeP" attribute="String Char" lineEndContext="#pop#pop">+ <StringDetect String="}}" attribute="String Char" context="#pop#pop"/>+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ </context>+ <context name="RegexFStringEscapeL" attribute="Regex Special" lineEndContext="#pop#pop">+ <StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>+ <StringDetect String=">" attribute="Regex Special" context="#pop#pop"/>+ </context>+++ <context name="RegexBStringCommon" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String="\" lookAhead="1" context="RegexBStringEscape"/>+ <IncludeRules context="RegexCommonSymbol"/>+ <IncludeRules context="RegexCommonRangeQuantifier"/>+ <AnyChar String="{}" attribute="Raw B-String"/>+ <RegExpr attribute="Error" String="."/>+ </context>++ <context name="RegexBStringSetCommon" attribute="Raw B-String" lineEndContext="#pop">+ <StringDetect String="]" attribute="Regex Set" context="#pop"/>+ <StringDetect String="\" lookAhead="1" context="RegexBStringSetEscape"/>+ <!-- regex package support: character classes [:...:] -->+ <StringDetect String="[" lookAhead="1" context="RegexSetCharClass"/>+ </context>++ <context name="RegexBStringSetEscape" attribute="Raw B-String" lineEndContext="#pop">+ <IncludeRules context="RegexBStringEscapeCommon"/>+ <StringDetect String="\b" attribute="String Char" context="#pop"/>+ <LineContinue attribute="String Char" context="#pop"/>+ <RegExpr String="." attribute="Error" context="#pop"/>+ </context>++ <context name="RegexBStringEscape" attribute="Raw B-String" lineEndContext="#pop">+ <IncludeRules context="RegexBStringEscapeCommon"/>+ <IncludeRules context="RegexEscapeCommonBegin"/>+ <IncludeRules context="RegexEscapeCommonEnd"/>+ </context>++ <!-- contains no \b -->+ <context name="RegexBStringEscapeCommon" attribute="Raw B-String" lineEndContext="#pop">+ <IncludeRules context="RegexEscapeSpecialCommon"/>+ <RegExpr String="\\[[:^alnum:]afnrtv]|\\[0-7]{1,3}|&escapedHex;" attribute="String Char" context="#pop"/>+ </context>+++ <context name="RegexStringCommon" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String="\" lookAhead="1" context="RegexEscape"/>+ <IncludeRules context="RegexCommonSymbol"/>+ <IncludeRules context="RegexCommonRangeQuantifier"/>+ </context>++ <context name="RegexCommonSymbol" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String="|" attribute="Regex Alternation"/>+ <StringDetect String=")" attribute="Error"/>+ <AnyChar String="*+?" attribute="Regex Quantifier"/>+ <AnyChar String="^$." attribute="Regex Special"/>+ </context>+ <context name="RegexCommonRangeQuantifier" attribute="Raw String" lineEndContext="#pop">+ <RegExpr String="\{(,[0-9]*|[0-9]+(,[0-9]*)?)\}" attribute="Regex Quantifier"/>+ </context>++ <context name="RegexCommentCommon" attribute="Comment" lineEndContext="#pop">+ <DetectSpaces attribute="Comment"/>+ <DetectIdentifier attribute="Comment"/>+ <StringDetect String=")" attribute="Comment" context="#pop#pop"/>+ <StringDetect String="\)" attribute="Comment"/>+ <StringDetect String="\\" attribute="Comment"/>+ <StringDetect String="\'" attribute="Comment"/>+ <StringDetect String="\"" attribute="Comment"/>+ </context>++ <context name="RegexTripleCommentCommon" attribute="Comment" lineEndContext="#pop">+ <DetectSpaces attribute="Comment"/>+ <DetectIdentifier attribute="Comment"/>+ <StringDetect String=")" attribute="Comment" context="#pop#pop" endRegion="RegParent"/>+ <StringDetect String="\)" attribute="Comment"/>+ <StringDetect String="\\" attribute="Comment"/>+ <StringDetect String="\'" attribute="Comment"/>+ <StringDetect String="\"" attribute="Comment"/>+ </context>++ <context name="RegexParentCommon" attribute="Raw String" lineEndContext="#pop">+ <!-- regex package support: (?R) (?0) -->+ <RegExpr String="\(\?(([aiLmsuxfwbepr]+|V[01])*|[R0])\)" attribute="Regex Parenthesis Options" context="#pop"/>+ <!-- regex package support: (?P=1), (?1), (?P>name), (?P&name) -->+ <RegExpr String="\(\?(P=([_[:alpha:]]\w*|[0-9]{1,2})?|[0-9]{1,2}|P[>&]([_[:alpha:]]\w*)?)\)?" attribute="Regex Backreference" context="#pop"/>+ </context>++ <context name="RegexSetCommon" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String="]" attribute="Regex Set" context="#pop"/>+ <StringDetect String="\" lookAhead="1" context="RegexSetEscape"/>+ <!-- regex package support: character classes [:...:] -->+ <StringDetect String="[" lookAhead="1" context="RegexSetCharClass"/>+ </context>++ <context name="RegexSetCharClass" attribute="Raw String" lineEndContext="#pop">+ <RegExpr String="\[:\^?[a-zA-Z_]*:\]" attribute="Regex Character Class" context="#pop"/>+ <StringDetect String="[" attribute="Regex Set" context="#pop"/>+ </context>++ <context name="RegexSetEscape" attribute="Raw String" lineEndContext="#pop">+ <IncludeRules context="RegexStringEscapeCommon"/>+ <StringDetect String="\b" attribute="String Char" context="#pop"/>+ <LineContinue attribute="String Char" context="#pop"/>+ <RegExpr String="." attribute="Error" context="#pop"/>+ </context>++ <context name="RegexEscape" attribute="Raw String" lineEndContext="#pop">+ <IncludeRules context="RegexStringEscapeCommon"/>+ <IncludeRules context="RegexEscapeCommonBegin"/>+ <IncludeRules context="RegexEscapeCommonEnd"/>+ </context>++ <context name="RegexEscapeCommonBegin" attribute="Raw String" lineEndContext="#pop">+ <RegExpr String="\\[0-9]{1,2}|\\g<([0-9]{1,2}|[_[:alpha:]]\w*)>" attribute="Regex Backreference" context="#pop"/>+ </context>+ <context name="RegexEscapeCommonEnd" attribute="Raw String" lineEndContext="#pop">+ <StringDetect String="\b" attribute="Regex Special" context="#pop"/>+ <LineContinue attribute="String Char" context="#pop"/>+ <RegExpr String="." attribute="Error" context="#pop"/>+ </context>++ <!-- contains no \b -->+ <context name="RegexStringEscapeCommon" attribute="Raw String" lineEndContext="#pop">+ <IncludeRules context="RegexEscapeSpecialCommon"/>+ <!-- regex package support: \p{value} \P{value} \p{property=value} \P{property=value} -->+ <RegExpr String="\\[[:^alnum:]afnrtv]|\\[0-7]{1,3}|&escapedHexUni;|\\[pP]\{\^?[a-zA-Z0-9_]+([:=][a-zA-Z0-9_]*)?\}" attribute="String Char" context="#pop"/>+ </context>+ <context name="RegexEscapeSpecialCommon" attribute="Raw String" lineEndContext="#pop">+ <!-- regex package support: \K \m \M \G \X \L<name> -->+ <RegExpr String="\\[ABdDsSwWZKmMGX]|\\L<([_[:alpha:]]\w*)?>" attribute="Regex Special" context="#pop"/>+ </context>++ </contexts>++ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>+ <itemData name="Definition Keyword" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>+ <itemData name="Operator Keyword" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="Flow Control Keyword" defStyleNum="dsControlFlow" spellChecking="false"/>+ <itemData name="Builtin Function" defStyleNum="dsBuiltIn" spellChecking="false"/>+ <itemData name="Special Variable" defStyleNum="dsVariable" spellChecking="false"/>+ <itemData name="Extensions" defStyleNum="dsExtension" spellChecking="false"/>+ <itemData name="Exceptions" defStyleNum="dsPreprocessor" spellChecking="false"/>+ <itemData name="Overloaders" defStyleNum="dsFunction" spellChecking="false"/>+ <itemData name="Import" defStyleNum="dsImport" spellChecking="false"/>+ <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>+ <itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>+ <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>+ <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>+ <itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false"/>+ <itemData name="Complex" defStyleNum="dsOthers" spellChecking="false"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="Raw String" defStyleNum="dsVerbatimString"/>+ <itemData name="F-String" defStyleNum="dsSpecialString"/>+ <itemData name="Raw F-String" defStyleNum="dsVerbatimString"/>+ <itemData name="B-String" defStyleNum="dsString" spellChecking="false"/>+ <itemData name="Raw B-String" defStyleNum="dsVerbatimString" spellChecking="false"/>+ <itemData name="String Char" defStyleNum="dsChar" spellChecking="false"/>+ <itemData name="String Substitution" defStyleNum="dsSpecialChar" spellChecking="false"/>+ <itemData name="Decorator" defStyleNum="dsAttribute" spellChecking="false"/>+ <itemData name="Error" defStyleNum="dsError"/>+ <!-- Regex -->+ <itemData name="Regex Alternation" defStyleNum="dsControlFlow" spellChecking="false"/>+ <itemData name="Regex Set" defStyleNum="dsPreprocessor" spellChecking="false"/>+ <itemData name="Regex Character Class" defStyleNum="dsExtension" spellChecking="false" bold="0"/>+ <itemData name="Regex Capturing" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="Regex Non-Capturing" defStyleNum="dsNormal" spellChecking="false"/>+ <itemData name="Regex Parenthesis" defStyleNum="dsExtension" spellChecking="false"/>+ <itemData name="Regex Parenthesis Options" defStyleNum="dsFunction" spellChecking="false"/>+ <itemData name="Regex Special" defStyleNum="dsDecVal" spellChecking="false"/>+ <itemData name="Regex Quantifier" defStyleNum="dsOperator" spellChecking="false"/>+ <itemData name="Regex Backreference" defStyleNum="dsVariable" spellChecking="false"/> </itemDatas> </highlighting> <general>
xml/rhtml.xml view
@@ -44,7 +44,7 @@ --> <!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->-<language name="Ruby/Rails/RHTML" version="15" kateversion="5.79" section="Markup" extensions="*.rhtml;*.RHTML;*.html.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPLv2+">+<language name="Ruby/Rails/RHTML" version="16" kateversion="5.79" section="Markup" extensions="*.rhtml;*.RHTML;*.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPLv2+" priority="1"> <highlighting>
xml/ruby.xml view
@@ -1,922 +1,1394 @@ <?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE language>--<!--- Ruby syntax highlighting definition for Kate.-- Copyright (C) 2004 by Sebastian Vuorinen (sebastian dot vuorinen at helsinki dot fi)- Copyright (C) 2004 by Stefan Lang (langstefan@gmx.at)- Copyright (C) 2008 by Robin Pedersen (robinpeder@gmail.com)- Copyright (C) 2011 by Miquel Sabaté (mikisabate@gmail.com)-- This library is free software; you can redistribute it and/or- modify it under the terms of the GNU Library General Public- License as published by the Free Software Foundation; either- version 2 of the License, or (at your option) any later version.-- This library is distributed in the hope that it will be useful,- but WITHOUT ANY WARRANTY; without even the implied warranty of- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU- Library General Public License for more details.-- You should have received a copy of the GNU Library General Public- License along with this library; if not, write to the- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,- Boston, MA 02110-1301, USA.--->--<!--- TODO: Division after gdl contexts is interpreted as regexp--->--<!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->-<language name="Ruby" alternativeNames="RB;JRuby" section="Scripts"- version="19" kateversion="5.0"- extensions="*.rb;*.rjs;*.rxml;*.xml.erb;*.js.erb;*.rake;Rakefile;Gemfile;*.gemspec;Vagrantfile"- mimetype="application/x-ruby"- style="ruby" indenter="ruby"- author="Stefan Lang (langstefan@gmx.at), Sebastian Vuorinen (sebastian.vuorinen@helsinki.fi), Robin Pedersen (robinpeder@gmail.com), Miquel Sabaté (mikisabate@gmail.com)" license="LGPLv2+">-- <highlighting>-- <list name="keywords">- <item>BEGIN</item>- <item>END</item>- <item>and</item>- <item>begin</item>- <item>break</item>- <item>case</item>- <item>defined?</item>- <item>do</item>- <item>else</item>- <item>elsif</item>- <item>end</item>- <item>ensure</item>- <item>for</item>- <item>if</item>- <item>in</item>- <item>next</item>- <item>not</item>- <item>or</item>- <item>redo</item>- <item>rescue</item>- <item>retry</item>- <item>return</item>- <item>then</item>- <item>unless</item>- <item>until</item>- <item>when</item>- <item>yield</item>- </list>-- <list name="access-control">- <item>private_class_method</item>- <item>private</item>- <item>protected</item>- <item>public_class_method</item>- <item>public</item>- </list>-- <list name="attribute-definitions">- <item>attr_reader</item>- <item>attr_writer</item>- <item>attr_accessor</item>- </list>-- <list name="definitions">- <item>alias</item>- <item>module</item>- <item>class</item>- <item>def</item>- <item>undef</item>- </list>-- <list name="pseudo-variables">- <item>self</item>- <item>super</item>- <item>nil</item>- <item>false</item>- <item>true</item>- <item>caller</item>- <item>__FILE__</item>- <item>__LINE__</item>- </list>-- <list name="default-globals">- <item>$stdout</item>- <item>$defout</item>- <item>$stderr</item>- <item>$deferr</item>- <item>$stdin</item>- </list>-- <!-- Kernel module methods.- NOTE: Methods ending in ? or !- are included below as regexes.- -->- <list name="kernel-methods">- <!-- backquote ` -->- <item>abort</item>- <item>at_exit</item>- <item>autoload</item>- <item>autoload?</item>- <item>binding</item>- <item>block_given?</item>- <item>callcc</item>- <item>caller</item>- <item>catch</item>- <item>chomp</item>- <item>chomp!</item>- <item>chop</item>- <item>chop!</item>- <item>eval</item>- <item>exec</item>- <item>exit</item>- <item>exit!</item>- <item>fail</item>- <item>fork</item>- <item>format</item>- <item>getc</item>- <item>gets</item>- <item>global_variables</item>- <item>gsub</item>- <item>gsub!</item>- <item>iterator?</item>- <item>lambda</item>- <item>load</item>- <item>local_variables</item>- <item>loop</item>- <item>method_missing</item>- <item>open</item>- <item>p</item>- <item>print</item>- <item>printf</item>- <item>proc</item>- <item>putc</item>- <item>puts</item>- <item>raise</item>- <item>rand</item>- <item>readline</item>- <item>readlines</item>- <item>require</item>- <item>require_relative</item>- <item>scan</item>- <item>select</item>- <item>set_trace_func</item>- <item>sleep</item>- <item>split</item>- <item>sprintf</item>- <item>srand</item>- <item>sub</item>- <item>sub!</item>- <item>syscall</item>- <item>system</item>- <item>test</item>- <item>throw</item>- <item>trace_var</item>- <item>trap</item>- <item>untrace_var</item>- <item>warn</item>- </list>-- <list name="mixin-methods">- <item>extend</item>- <item>include</item>- <item>prepend</item>- <item>refine</item>- <item>using</item>- </list>-- <contexts>- <context name="Normal" attribute="Normal Text" lineEndContext="#stay">- <!-- ruby ignores newline after \ -->- <LineContinue attribute="Normal Text" context="Line Continue"/>-- <!-- __END__ token on own line. -->- <RegExpr attribute="Keyword" String="^__END__$" context="DATA" column="0"/>-- <!-- "shebang" line -->- <RegExpr attribute="Keyword" String="^#!\/.*" context="#stay" column="0"/>-- <!-- "def" - "end" blocks -->- <!-- check for statement modifiers with regexes -->- <DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/>- <DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/>- <RegExpr attribute="Keyword" String="[=([]\s*(if|unless|while|until)\b|(while|until)\b(?!.*\bdo\b)|\;\s*(while|until)\b(?!.*\bdo\b)|\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>- <RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>- <WordDetect attribute="Keyword" String="class" context="no_heredoc" beginRegion="def block"/>- <WordDetect attribute="Keyword" String="module" context="#stay" beginRegion="def block"/>- <WordDetect attribute="Keyword" String="begin" context="#stay" beginRegion="def block"/>- <RegExpr attribute="Keyword" String="\bfor\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>- <WordDetect attribute="Keyword" String="case" context="#stay" beginRegion="def block"/>- <WordDetect attribute="Keyword" String="do" context="#stay" beginRegion="def block"/>- <WordDetect attribute="Keyword" String="def" context="#stay" beginRegion="def block"/>- <WordDetect attribute="Keyword" String="end" context="#stay" endRegion="def block"/>- <!-- elsif/else close the current block and start a new one -->- <RegExpr attribute="Keyword" String="\b(else|elsif|rescue|ensure)\b" context="#stay" endRegion="def block" beginRegion="def block"/>-- <StringDetect attribute="Operator" String="..." context="#stay"/>- <Detect2Chars attribute="Operator" char="." char1="." context="#stay"/>-- <!-- marks a message (being sent, not defined) -->- <RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(\?|\!|\b)" context="check_div_2"/>-- <!-- Check for "ASCII code operator". e.g.: ?a -->- <RegExpr attribute="Dec" String="\s\?(\\M\-)?(\\C\-)?\\?\S" context="check_div_1"/>-- <keyword attribute="Keyword" String="keywords" context="#stay"/>- <keyword attribute="Attribute Definition" String="attribute-definitions" context="check_div_2"/>- <keyword attribute="Access Control" String="access-control" context="check_div_2"/>- <keyword attribute="Definition" String="definitions" context="#stay" />- <keyword attribute="Pseudo variable" String="pseudo-variables" context="check_div_1"/>- <keyword attribute="Default globals" String="default-globals" context="check_div_2"/>- <keyword attribute="Kernel methods" String="kernel-methods" context="check_div_2"/>- <keyword attribute="Module mixin methods" String="mixin-methods" context="check_div_2"/>-- <!-- (global) vars starting with $- Match them before $_.- -->- <RegExpr attribute="Global Variable" String="\$[a-zA-Z_0-9]+|\$\-[a-zA-Z_]\b" context="check_div_1"/>- <!-- special-character globals -->- <RegExpr attribute="Default globals" String="\$[\d_*`+@;,.~=\!\$:?'/\\\-\&"><]" context="check_div_1"/>- <RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="check_div_2"/>- <!-- Generally a module or class name like "File", "MyModule_1", .. -->- <RegExpr attribute="Constant" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="check_div_2"/>-- <!-- Numeric values. Note that we have to allow underscores between two digits (thus the creepy regular expressions). -->- <RegExpr attribute="Hex" String="\b\-?0[xX]([0-9a-fA-F]|_[0-9a-fA-F])+" context="check_div_1"/>- <RegExpr attribute="Bin" String="\b\-?0[bB]([01]|_[01])+" context="check_div_1"/>- <RegExpr attribute="Octal" String="\b\-?0[1-7]([0-7]|_[0-7])*" context="check_div_1"/>- <RegExpr attribute="Float" String="\b\-?[0-9]([0-9]|_[0-9])*\.[0-9]([0-9]|_[0-9])*([eE]\-?[1-9]([0-9]|_[0-9])*(\.[0-9]*)?)?" context="check_div_1"/>- <RegExpr attribute="Dec" String="\b\-?[1-9]([0-9]|_[0-9])*\b" context="check_div_1"/>- <Int attribute="Dec" context="check_div_1"/>- <HlCChar attribute="Char" context="check_div_1"/>-- <!-- Check for =begin before assignment operator. -->- <RegExpr attribute="Blockcomment" String="^=begin(?:\s|$)" context="Embedded documentation" beginRegion="comment block" column="0"/>-- <!-- recognize the beginning of a HEREDOC- This uses new features in Kate 2.3 and later-- There is no other chance of keeping heredoc apart from the- push operator '<<' than requiring to put space between the operator- and the string.- -->- <RegExpr attribute="Operator" context="find_indented_heredoc" String="\s*<<[-~](?=\w+|["'`])" beginRegion="HereDocument" />- <RegExpr attribute="Operator" context="find_heredoc" String="\s*<<(?=\w+|["'`])" beginRegion="HereDocument" />-- <DetectChar attribute="Operator" char="." context="#stay"/>- <Detect2Chars attribute="Operator" char="&" char1="&" context="#stay"/>- <Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>- <!-- \s! is regexp hack -->- <RegExpr attribute="Operator" String="\s[\?\:\%]\s|[|&<>\^\+*~\-=]+|\s!|/=\s" context="#stay"/>- <Detect2Chars attribute="Operator" char="%" char1="=" context="#stay"/>- <Detect2Chars attribute="Operator" char=":" char1=":" context="Member Access"/>-- <RegExpr attribute="Symbol" String=":(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?|:\[\]=?" context="check_div_1"/>-- <!-- Do not send to "check_div_1" context!:- after detecting these rules (": ") there can be a regular expression (see bug: #361875) -->- <RegExpr attribute="Symbol" String="(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?: |\[\]=?: " context="#stay"/>-- <DetectChar attribute="String" char=""" context="Quoted String"/>- <DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>- <DetectChar attribute="Command" char="`" context="Command String"/>-- <Detect2Chars attribute="Normal Text" char="?" char1="#" context="#stay"/>-- <RegExpr attribute="Comment" String="^#\s*BEGIN.*$" context="#stay" beginRegion="marker" column="0"/>- <RegExpr attribute="Comment" String="^#\s*END.*$" context="#stay" endRegion="marker" column="0"/>- <DetectChar attribute="Comment" char="#" context="General Comment"/>-- <DetectChar attribute="Delimiter" char="[" context="#stay"/>- <DetectChar attribute="Delimiter" char="]" context="check_div_1"/>-- <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"/>-- <!-- handle the different regular expression formats -->- <DetectChar attribute="Regular Expression" char="/" context="RegEx 1"/>-- <!-- recognize the beginning of a general delimited input format -->- <!-- this moves to the next context to separate out the exact nature of the GDL input -->- <RegExpr attribute="GDL input" context="find_gdl_input" String="\s*[%](?=[QqxwW]?[^\s])" beginRegion="GdlInput" />-- <DetectChar attribute="Normal Text" char=")" context="check_div_1"/>- <DetectIdentifier attribute="Normal Text" context="check_div_2"/>-- </context>-- <!-- In the following contexts, a slash character ('/') is a division operator -->- <!-- Everywhere else, it's a regular expression delimiter -->-- <!-- A slash is always a division operator, even if preceeded by whitespace -->- <context name="check_div_1" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <AnyChar attribute="Operator" String="/%" context="#pop"/>- </context>-- <!-- Same as check_div_1, but with double pop to exit the surrounding context -->- <context name="check_div_1_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <AnyChar attribute="Operator" String="/%" context="#pop#pop"/>- </context>-- <!-- A slash is division operator if it's the first character, or if preceeded and followed by whitespace -->- <context name="check_div_2" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">- <AnyChar attribute="Operator" String="/%" context="#pop"/>- <DetectSpaces attribute="Normal Text" context="check_div_2_internal"/>- </context>-- <!-- Internal context used by check_div_2 -->- <context name="check_div_2_internal" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">-<!-- <DetectChar attribute="Operator" char="%" context="#pop#pop"/> -->- <RegExpr attribute="Operator" String="[/%](?=\s)" context="#pop#pop"/>- </context>-- <!-- Same as check_div_2, but with double pop to exit the surrounding context -->- <context name="check_div_2_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">- <AnyChar attribute="Operator" String="/%" context="#pop#pop"/>- <DetectSpaces attribute="Normal Text" context="check_div_2_pop_internal"/>- </context>-- <!-- Internal context used by check_div_2_pop -->- <context name="check_div_2_pop_internal" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop#pop" lineEndContext="#pop#pop#pop">- <DetectChar attribute="Operator" char="%" context="#pop#pop#pop"/>- <RegExpr attribute="Operator" String="/(?=\s)" context="#pop#pop#pop"/>- </context>-- <context name="Line Continue" attribute="Normal Text" lineEndContext="#pop">- <RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)|(if|unless)\b" context="#stay" firstNonSpace="true"/>- <IncludeRules context="Normal"/>- </context>-- <context name="Find closing block brace" attribute="Normal Text" lineEndContext="#stay">- <DetectChar attribute="Operator" char="}" context="check_div_1_pop" endRegion="def block"/>- <IncludeRules context="Normal"/>- </context>-- <context name="Quoted String" attribute="String" lineEndContext="#stay">- <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>- <Detect2Chars attribute="String" char="\" char1=""" context="#stay"/>- <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="$" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>- <DetectChar char=""" attribute="String" context="check_div_1_pop"/>- </context>-- <context name="Apostrophed String" attribute="Raw String" lineEndContext="#stay">- <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>- <Detect2Chars attribute="String" char="\" char1="'" context="#stay"/>- <DetectChar char="'" attribute="Raw String" context="check_div_1_pop"/>- </context>-- <context name="Command String" attribute="Command" lineEndContext="#stay">- <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>- <Detect2Chars attribute="String" char="\" char1="`" context="#stay"/>- <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="$" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>- <DetectChar char="`" attribute="Command" context="check_div_1_pop"/>- </context>-- <context name="Embedded documentation" attribute="Blockcomment" lineEndContext="#stay">- <RegExpr attribute="Comment" String="^=end(?:\s.*|$)" context="#pop" endRegion="comment block" column="0"/>- <DetectSpaces />- <IncludeRules context="##Comments" />- </context>-- <context name="RegEx 1" attribute="Regular Expression" lineEndContext="#stay">- <Detect2Chars attribute="Regular Expression" char="\" char1="/" context="#stay"/>- <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="$" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>- <RegExpr attribute="Regular Expression" String="/[uiomxn]*" context="check_div_1_pop"/>- </context>-- <!-- Substitutions can be nested -->- <context name="Subst" attribute="Normal Text" lineEndContext="#stay">- <DetectChar attribute="Substitution" char="}" context="#pop"/>- <!-- Highlight substitution as code. -->- <IncludeRules context="Normal"/>- </context>-- <context name="Short Subst" attribute="Substitution" lineEndContext="#pop">- <!-- Check for e.g.: "#@var#@@xy" -->- <RegExpr attribute="Substitution" String="#@{1,2}" context="#stay"/>- <Detect2Chars attribute="Substitution" char="#" char1="$" context="#stay"/>- <RegExpr attribute="Substitution" String="\w(?!\w)" context="#pop"/>- </context>-- <!-- This handles access of nested module classes and class methods -->- <context name="Member Access" attribute="Member" lineEndContext="#pop">- <!-- marks a message (being sent, not defined) -->- <RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?(?=[^\w\d\.\:])" context="check_div_2_pop"/>- <RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?" context="#stay"/>- <RegExpr attribute="Constant" String="[A-Z]+_*(\d|[a-z])\w*(?=[^\w\d\.\:])" context="check_div_2_pop"/>- <RegExpr attribute="Constant" String="[A-Z]+_*([0-9]|[a-z])\w*" context="#stay"/>- <RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*(?=[^\w\d\.\:])" context="check_div_2_pop"/>- <RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*" context="#stay"/>- <Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/>- <DetectChar attribute="Member" char="." context="#stay"/>-- <AnyChar attribute="Operator" String="=+-*/%|&[]{}~" context="#pop"/>- <DetectChar attribute="Comment" char="#" context="#pop"/>- <AnyChar attribute="Normal Text" String="()\" context="#pop"/>- <RegExpr attribute="Member" String="\W" context="#pop"/>- </context>-- <context name="General Comment" attribute="Comment" lineEndContext="#pop">- <DetectSpaces />- <IncludeRules context="##Comments" />- </context>-- <!-- HEREDOC support- The contexts below support both normal and indented heredocs- -->- <!-- here we markup the heredoc markers -->- <context name="find_heredoc" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">- <RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'" />- <RegExpr attribute="Keyword" context="normal_heredoc" String="(?|(\w+)|"(\w+)"|`(\w+)`)" />- </context>- <context name="find_indented_heredoc" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">- <RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'" />- <RegExpr attribute="Keyword" context="indented_heredoc" String="(?|(\w+)|"(\w+)"|`(\w+)`)" />- </context>- <!-- these are the real heredoc contexts -->- <context name="indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">- <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>- <IncludeRules context="heredoc_rules" />- </context>- <context name="apostrophed_indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">- <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>- </context>-- <context name="normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">- <RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>- <IncludeRules context="heredoc_rules" />- </context>- <context name="apostrophed_normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">- <RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>- </context>-- <!-- rules for heredoc types -->- <context name="heredoc_rules" attribute="Normal Text" lineEndContext="#stay">- <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="$" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>- </context>-- <!-- avoid highlighting heredoc markers, for example, in singleton class definition (see bug: #358273) -->- <context name="no_heredoc" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">- <DetectSpaces />- <Detect2Chars attribute="Operator" char="<" char1="<" context="#pop"/>- <!-- comments -->- <RegExpr attribute="Comment" String="^#\s*BEGIN.*$" context="#stay" beginRegion="marker" column="0"/>- <RegExpr attribute="Comment" String="^#\s*END.*$" context="#stay" endRegion="marker" column="0"/>- <DetectChar attribute="Comment" char="#" context="General Comment"/>- </context>-- <!-- General delimited input support- The contexts below handle the various gdl formats- -->- <context name="find_gdl_input" attribute="Normal Text" lineEndContext="#pop">-- <!-- handle token arrays -->- <Detect2Chars attribute="GDL input" context="gdl_token_array_1" char="w" char1="(" />- <Detect2Chars attribute="GDL input" context="gdl_token_array_2" char="w" char1="{" />- <Detect2Chars attribute="GDL input" context="gdl_token_array_3" char="w" char1="[" />- <Detect2Chars attribute="GDL input" context="gdl_token_array_4" char="w" char1="<" />- <!-- then we handle the 'any char' format -->- <RegExpr attribute="GDL input" context="gdl_token_array_5" String="w([^\s\w])" />-- <!-- handle token arrays -->- <Detect2Chars attribute="GDL input" context="gdl_token_array_1" char="W" char1="(" />- <Detect2Chars attribute="GDL input" context="gdl_token_array_2" char="W" char1="{" />- <Detect2Chars attribute="GDL input" context="gdl_token_array_3" char="W" char1="[" />- <Detect2Chars attribute="GDL input" context="gdl_token_array_4" char="W" char1="<" />- <!-- then we handle the 'any char' format -->- <RegExpr attribute="GDL input" context="gdl_token_array_5" String="W([^\s\w])" />-- <!-- handle apostrophed strings -->- <Detect2Chars attribute="GDL input" context="gdl_apostrophed_1" char="q" char1="(" />- <Detect2Chars attribute="GDL input" context="gdl_apostrophed_2" char="q" char1="{" />- <Detect2Chars attribute="GDL input" context="gdl_apostrophed_3" char="q" char1="[" />- <Detect2Chars attribute="GDL input" context="gdl_apostrophed_4" char="q" char1="<" />- <!-- then we handle the 'any char' format -->- <RegExpr attribute="GDL input" context="gdl_apostrophed_5" String="q([^\s\w])" />-- <!-- handle shell commands -->- <Detect2Chars attribute="GDL input" context="gdl_shell_command_1" char="x" char1="(" />- <Detect2Chars attribute="GDL input" context="gdl_shell_command_2" char="x" char1="{" />- <Detect2Chars attribute="GDL input" context="gdl_shell_command_3" char="x" char1="[" />- <Detect2Chars attribute="GDL input" context="gdl_shell_command_4" char="x" char1="<" />- <!-- then we handle the 'any char' format -->- <RegExpr attribute="GDL input" context="gdl_shell_command_5" String="x([^\s\w])" />-- <!-- handle regular expressions -->- <Detect2Chars attribute="GDL input" context="gdl_regexpr_1" char="r" char1="(" />- <Detect2Chars attribute="GDL input" context="gdl_regexpr_2" char="r" char1="{" />- <Detect2Chars attribute="GDL input" context="gdl_regexpr_3" char="r" char1="[" />- <Detect2Chars attribute="GDL input" context="gdl_regexpr_4" char="r" char1="<" />- <!-- then we handle the 'any char' format -->- <RegExpr attribute="GDL input" context="gdl_regexpr_5" String="r([^\s\w])" />-- <!-- handle double-quoted strings -->- <!--- be careful to make this the last GDL ruleset, because the rule for- the short form %?foo? will otherwise catch any of the other formats- -->- <Detect2Chars attribute="GDL input" context="gdl_dq_string_1" char="Q" char1="(" />- <Detect2Chars attribute="GDL input" context="gdl_dq_string_2" char="Q" char1="{" />- <Detect2Chars attribute="GDL input" context="gdl_dq_string_3" char="Q" char1="[" />- <Detect2Chars attribute="GDL input" context="gdl_dq_string_4" char="Q" char1="<" />- <DetectChar attribute="GDL input" context="gdl_dq_string_1" char="(" />- <DetectChar attribute="GDL input" context="gdl_dq_string_2" char="{" />- <DetectChar attribute="GDL input" context="gdl_dq_string_3" char="[" />- <DetectChar attribute="GDL input" context="gdl_dq_string_4" char="<" />- <!-- then we handle the 'any char' format -->- <RegExpr attribute="GDL input" context="gdl_dq_string_5" String="Q?([^\s\w])" />-- </context>- <!-- double-quoted string specific contexts follow -->- <context name="gdl_dq_string_1" attribute="String" lineEndContext="#stay" >- <IncludeRules context="dq_string_rules" />- <Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>- <DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />- <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />- </context>- <context name="gdl_dq_string_1_nested" attribute="String" lineEndContext="#stay" >- <IncludeRules context="dq_string_rules" />- <DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />- <DetectChar attribute="String" context="#pop" char=")" />- </context>- <!-- note that here substitution should win over nesting -->- <context name="gdl_dq_string_2" attribute="String" lineEndContext="#stay" >- <IncludeRules context="dq_string_rules" />- <Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>- <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />- <DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />- </context>- <context name="gdl_dq_string_2_nested" attribute="String" lineEndContext="#stay" >- <DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />- <DetectChar attribute="String" context="#pop" char="}" />- <IncludeRules context="dq_string_rules" />- </context>-- <context name="gdl_dq_string_3" attribute="String" lineEndContext="#stay" >- <IncludeRules context="dq_string_rules" />- <Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>- <DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />- <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />- </context>- <context name="gdl_dq_string_3_nested" attribute="String" lineEndContext="#stay" >- <DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />- <DetectChar attribute="String" context="#pop" char="]" />- <IncludeRules context="dq_string_rules" />- </context>-- <context name="gdl_dq_string_4" attribute="String" lineEndContext="#stay" >- <IncludeRules context="dq_string_rules" />- <Detect2Chars attribute="String" char="\" char1=">" context="#stay"/>- <DetectChar attribute="String" context="gdl_dq_string_4_nested" char="<" />- <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" />- </context>- <context name="gdl_dq_string_4_nested" attribute="String" lineEndContext="#stay" >- <DetectChar attribute="String" context="gdl_dq_string_4_nested" char="<" />- <DetectChar attribute="String" context="#pop" char=">" />- <IncludeRules context="dq_string_rules" />- </context>-- <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the- delimiter character- -->- <context name="gdl_dq_string_5" attribute="String" lineEndContext="#stay" dynamic="true">- <IncludeRules context="dq_string_rules" />- <StringDetect attribute="String" String="\%1" context="#stay" dynamic="true" />- <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />- </context>- <!-- rules to be included in all dq_string contexts -->- <context name="dq_string_rules" attribute="String" lineEndContext="#stay" >- <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>- <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="$" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>- </context>-- <!-- token array specific contexts -->-- <context name="gdl_token_array_1" attribute="String" lineEndContext="#stay" >- <IncludeRules context="token_array_rules" />- <Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>- <DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />- <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />- </context>- <context name="gdl_token_array_1_nested" attribute="String" lineEndContext="#stay" >- <IncludeRules context="token_array_rules" />- <DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />- <DetectChar attribute="String" context="#pop" char=")" />- </context>-- <context name="gdl_token_array_2" attribute="String" lineEndContext="#stay" >- <IncludeRules context="token_array_rules" />- <Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>- <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />- <DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />- </context>- <context name="gdl_token_array_2_nested" attribute="String" lineEndContext="#stay" >- <IncludeRules context="token_array_rules" />- <DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />- <DetectChar attribute="String" context="#pop" char="}" />- </context>-- <context name="gdl_token_array_3" attribute="String" lineEndContext="#stay" >- <IncludeRules context="token_array_rules" />- <Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>- <DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />- <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />- </context>- <context name="gdl_token_array_3_nested" attribute="String" lineEndContext="#stay" >- <IncludeRules context="token_array_rules" />- <DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />- <DetectChar attribute="String" context="#pop" char="]" />- </context>-- <context name="gdl_token_array_4" attribute="String" lineEndContext="#stay" >- <IncludeRules context="token_array_rules" />- <Detect2Chars attribute="String" char="\" char1=">" context="#stay"/>- <DetectChar attribute="String" context="gdl_token_array_4_nested" char="<" />- <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" />- </context>- <context name="gdl_token_array_4_nested" attribute="String" lineEndContext="#stay" >- <IncludeRules context="token_array_rules" />- <DetectChar attribute="String" context="gdl_token_array_4_nested" char="<" />- <DetectChar attribute="String" context="#pop" char=">" />- </context>-- <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the- delimiter character- -->- <context name="gdl_token_array_5" attribute="String" lineEndContext="#stay" dynamic="true">- <IncludeRules context="token_array_rules" />- <StringDetect attribute="String" String="\%1" context="#stay" dynamic="true"/>- <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />- </context>-- <!-- rules to be included in all token_array contexts -->- <context name="token_array_rules" attribute="String" lineEndContext="#stay" >- <Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>- </context>-- <!-- apostrophed string specific contexts -->-- <context name="gdl_apostrophed_1" attribute="Raw String" lineEndContext="#stay" >- <IncludeRules context="apostrophed_rules" />- <Detect2Chars attribute="Raw String" char="\" char1=")" context="#stay"/>- <DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />- <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />- </context>- <context name="gdl_apostrophed_1_nested" attribute="Raw String" lineEndContext="#stay" >- <IncludeRules context="apostrophed_rules" />- <DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />- <DetectChar attribute="Raw String" context="#pop" char=")" />- </context>-- <context name="gdl_apostrophed_2" attribute="Raw String" lineEndContext="#stay" >- <IncludeRules context="apostrophed_rules" />- <Detect2Chars attribute="Raw String" char="\" char1="}" context="#stay"/>- <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />- <DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />- </context>- <context name="gdl_apostrophed_2_nested" attribute="Raw String" lineEndContext="#stay" >- <IncludeRules context="apostrophed_rules" />- <DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />- <DetectChar attribute="Raw String" context="#pop" char="}" />- </context>-- <context name="gdl_apostrophed_3" attribute="Raw String" lineEndContext="#stay" >- <IncludeRules context="apostrophed_rules" />- <Detect2Chars attribute="Raw String" char="\" char1="]" context="#stay"/>- <DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />- <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />- </context>- <context name="gdl_apostrophed_3_nested" attribute="Raw String" lineEndContext="#stay" >- <IncludeRules context="apostrophed_rules" />- <DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />- <DetectChar attribute="Raw String" context="#pop" char="]" />- </context>-- <context name="gdl_apostrophed_4" attribute="Raw String" lineEndContext="#stay" >- <IncludeRules context="apostrophed_rules" />- <Detect2Chars attribute="Raw String" char="\" char1=">" context="#stay"/>- <DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="<" />- <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" />- </context>- <context name="gdl_apostrophed_4_nested" attribute="Raw String" lineEndContext="#stay" >- <IncludeRules context="apostrophed_rules" />- <DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="<" />- <DetectChar attribute="Raw String" context="#pop" char=">" />- </context>-- <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the- delimiter character- -->- <context name="gdl_apostrophed_5" attribute="Raw String" lineEndContext="#stay" dynamic="true">- <IncludeRules context="apostrophed_rules" />- <StringDetect attribute="Raw String" String="\%1" context="#stay" dynamic="true"/>- <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />- </context>-- <!-- rules to be included in all apostrophed contexts -->- <context name="apostrophed_rules" attribute="Raw String" lineEndContext="#stay" >- <Detect2Chars attribute="Raw String" char="\" char1="\" context="#stay"/>- </context>-- <!-- shell command specific contexts -->-- <context name="gdl_shell_command_1" attribute="Command" lineEndContext="#stay" >- <IncludeRules context="shell_command_rules" />- <Detect2Chars attribute="Command" char="\" char1=")" context="#stay"/>- <DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />- <DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />- </context>- <context name="gdl_shell_command_1_nested" attribute="Command" lineEndContext="#stay" >- <IncludeRules context="shell_command_rules" />- <DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />- <DetectChar attribute="Command" context="#pop" char=")" />- </context>-- <context name="gdl_shell_command_2" attribute="Command" lineEndContext="#stay" >- <IncludeRules context="shell_command_rules" />- <Detect2Chars attribute="Command" char="\" char1="}" context="#stay"/>- <DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />- <DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />- </context>- <context name="gdl_shell_command_2_nested" attribute="Command" lineEndContext="#stay" >- <IncludeRules context="shell_command_rules" />- <DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />- <DetectChar attribute="Command" context="#pop" char="}" />- </context>-- <context name="gdl_shell_command_3" attribute="Command" lineEndContext="#stay" >- <IncludeRules context="shell_command_rules" />- <Detect2Chars attribute="Command" char="\" char1="]" context="#stay"/>- <DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />- <DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />- </context>- <context name="gdl_shell_command_3_nested" attribute="Command" lineEndContext="#stay" >- <IncludeRules context="shell_command_rules" />- <DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />- <DetectChar attribute="Command" context="#pop" char="]" />- </context>-- <context name="gdl_shell_command_4" attribute="Command" lineEndContext="#stay" >- <IncludeRules context="shell_command_rules" />- <Detect2Chars attribute="Command" char="\" char1=">" context="#stay"/>- <DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="<" />- <DetectChar attribute="GDL input" context="#pop#pop" char=">" endRegion="GdlInput" />- </context>- <context name="gdl_shell_command_4_nested" attribute="Command" lineEndContext="#stay" >- <IncludeRules context="shell_command_rules" />- <DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="<" />- <DetectChar attribute="Command" context="#pop" char=">" />- </context>-- <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the- delimiter character- -->- <context name="gdl_shell_command_5" attribute="Command" lineEndContext="#stay" dynamic="true">- <IncludeRules context="shell_command_rules" />- <StringDetect attribute="Command" String="\%1" context="#stay" dynamic="true" />- <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />- </context>-- <!-- rules to be included in all shell_command contexts -->- <context name="shell_command_rules" attribute="Command" lineEndContext="#stay" >- <Detect2Chars attribute="Command" char="\" char1="\" context="#stay"/>- <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="$" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>- </context>-- <!-- regular expression specific contexts -->-- <context name="gdl_regexpr_1" attribute="Regular Expression" lineEndContext="#stay" >- <IncludeRules context="regexpr_rules" />- <Detect2Chars attribute="Regular Expression" char="\" char1=")" context="#stay"/>- <DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />- <RegExpr attribute="GDL input" context="#pop#pop" String="\)[uiomxn]*" endRegion="GdlInput" />- </context>- <context name="gdl_regexpr_1_nested" attribute="Regular Expression" lineEndContext="#stay" >- <IncludeRules context="regexpr_rules" />- <DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />- <DetectChar attribute="Regular Expression" context="#pop" char=")" />- </context>-- <context name="gdl_regexpr_2" attribute="Regular Expression" lineEndContext="#stay" >- <IncludeRules context="regexpr_rules" />- <Detect2Chars attribute="Regular Expression" char="\" char1="}" context="#stay"/>- <RegExpr attribute="GDL input" context="#pop#pop" String="\}[uiomxn]*" endRegion="GdlInput" />- <DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />- </context>- <context name="gdl_regexpr_2_nested" attribute="Regular Expression" lineEndContext="#stay" >- <IncludeRules context="regexpr_rules" />- <DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />- <DetectChar attribute="Regular Expression" context="#pop" char="}" />- </context>-- <context name="gdl_regexpr_3" attribute="Regular Expression" lineEndContext="#stay" >- <IncludeRules context="regexpr_rules" />- <Detect2Chars attribute="Regular Expression" char="\" char1="]" context="#stay"/>- <DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />- <RegExpr attribute="GDL input" context="#pop#pop" String="\][uiomxn]*" endRegion="GdlInput" />- </context>- <context name="gdl_regexpr_3_nested" attribute="Regular Expression" lineEndContext="#stay" >- <IncludeRules context="regexpr_rules" />- <DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />- <DetectChar attribute="Regular Expression" context="#pop" char="]" />- </context>-- <context name="gdl_regexpr_4" attribute="Regular Expression" lineEndContext="#stay" >- <IncludeRules context="regexpr_rules" />- <Detect2Chars attribute="Regular Expression" char="\" char1=">" context="#stay"/>- <DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="<" />- <RegExpr attribute="GDL input" context="#pop#pop" String=">[uiomxn]*" endRegion="GdlInput" />- </context>- <context name="gdl_regexpr_4_nested" attribute="Regular Expression" lineEndContext="#stay" >- <IncludeRules context="regexpr_rules" />- <DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="<" />- <DetectChar attribute="Regular Expression" context="#pop" char=">" />- </context>-- <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the- delimiter character- -->- <context name="gdl_regexpr_5" attribute="Regular Expression" lineEndContext="#stay" dynamic="true">- <IncludeRules context="regexpr_rules" />- <StringDetect attribute="Regular Expression" String="\%1" context="#stay" dynamic="true" />- <RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1[uiomxn]*" dynamic="true" endRegion="GdlInput" />- </context>-- <!-- rules to be included in all regexpr contexts -->- <context name="regexpr_rules" attribute="Regular Expression" lineEndContext="#stay" >- <Detect2Chars attribute="Regular Expression" char="\" char1="\" context="#stay"/>- <RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="$" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>- </context>-- <!-- END of General delimited input support -->-- <!-- handle data in script -->- <context name="DATA" attribute="Data" lineEndContext="#stay"/>- </contexts>-- <itemDatas>- <itemData name="Normal Text" defStyleNum="dsNormal"/>-- <itemData name="Keyword" defStyleNum="dsControlFlow"/>- <itemData name="Attribute Definition" defStyleNum="dsOthers"/>- <itemData name="Access Control" defStyleNum="dsAttribute" bold="1"/> <!-- #0000FF -->- <itemData name="Definition" defStyleNum="dsKeyword"/>- <itemData name="Pseudo variable" defStyleNum="dsDecVal"/>-- <itemData name="Dec" defStyleNum="dsDecVal"/>- <itemData name="Float" defStyleNum="dsFloat"/>- <itemData name="Char" defStyleNum="dsChar"/>- <itemData name="Octal" defStyleNum="dsBaseN"/>- <itemData name="Hex" defStyleNum="dsBaseN"/>- <itemData name="Bin" defStyleNum="dsBaseN"/>-- <itemData name="Symbol" defStyleNum="dsWarning" bold="0" underline="0"/> <!-- #D40000 -->- <itemData name="String" defStyleNum="dsString"/>- <itemData name="Raw String" defStyleNum="dsVerbatimString" /> <!-- #DD4A4A -->- <itemData name="Command" defStyleNum="dsInformation"/> <!-- #AA3000 -->- <itemData name="Message" defStyleNum="dsAttribute" bold="0"/> <!-- #4000A7 -->- <itemData name="Regular Expression" defStyleNum="dsSpecialString"/> <!-- #4A5704 -->- <itemData name="Substitution" defStyleNum="dsSpecialChar"/>- <itemData name="Data" defStyleNum="dsNormal"/>- <!-- short for 'general delimited input' -->- <itemData name="GDL input" defStyleNum="dsOthers" />-- <itemData name="Default globals" defStyleNum="dsVariable" bold="1"/> <!-- #C00000 -->- <itemData name="Global Variable" defStyleNum="dsVariable"/> <!-- #C00000 -->- <itemData name="Global Constant" defStyleNum="dsConstant" bold="1"/> <!-- #bb1188 -->- <itemData name="Constant" defStyleNum="dsDataType"/>- <itemData name="Constant Value" defStyleNum="dsConstant" bold="0"/> <!-- #bb1188 -->- <itemData name="Kernel methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->- <itemData name="Module mixin methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->- <itemData name="Member" defStyleNum="dsNormal"/>- <itemData name="Instance Variable" defStyleNum="dsOthers"/>- <itemData name="Class Variable" defStyleNum="dsOthers"/>-- <itemData name="Comment" defStyleNum="dsComment"/>- <itemData name="Blockcomment" defStyleNum="dsComment"/>-- <itemData name="Here Document" defStyleNum="dsDocumentation"/>-- <itemData name="Delimiter" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->- <itemData name="Operator" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->+<!DOCTYPE language[+ <!ENTITY dec "[0-9](_?[0-9]++)*+">+ <!ENTITY percent_lit "[QqxwWiIsr]?[^\s[:alnum:]]">++ <!ENTITY ident "[_[:alpha:]]\w*+">+ <!ENTITY global_constant "(?!^__END__$)(\b_+\d[_\d]*\b|\b(_[_\d]*)?[[:upper:]][_\d[:upper:]]*\b)">+ <!ENTITY constant "\b[[:upper:]][_\d[:upper:]]*[[:lower:]]\w*">+ <!ENTITY no_param "abort|alias|and|at_exit|attr_accessor|attr_reader|attr_writer|begin|binding|break|callcc|caller|case|catch|class|def|do|else|elsif|end|ensure|eval|exec|extend|fail|false|__FILE__|for|fork|format|getc|gets|global_variables|if|in|include|lambda|__LINE__|load|local_variables|loop|method_missing|module|next|nil|not|open|or|p|prepend|print|printf|private|private_class_method|proc|protected|public|public_class_method|putc|puts|raise|rand|readline|readlines|redo|refine|require|require_relative|rescue|retry|return|scan|select|self|set_trace_func|sleep|split|sprintf|srand|super|syscall|system|test|then|throw|trace_var|trap|true|undef|unless|until|untrace_var|using|warn|when|while|yield|autoload|chomp|chop|exit|gsub|sub">+ <!-- ignore keyword, constant, class name and symbol (e.g. sym:).+ Constants can be preceded by ? or !, but this doesn't work with <keyword>+ -->+ <!ENTITY is_constant "((_[_\d]*)?[[:upper:]]\w*+|_+\d[_\d]*+\b)([^?!]|$)">+ <!ENTITY ident_not_kw "\b((?!(abort|alias|and|at_exit|attr_accessor|attr_reader|attr_writer|begin|binding|break|callcc|caller|case|catch|class|def|do|else|elsif|end|ensure|eval|exec|extend|fail|false|for|fork|format|getc|gets|global_variables|if|in|include|lambda|load|local_variables|loop|method_missing|module|next|nil|not|open|or|p|prepend|print|printf|private|private_class_method|proc|protected|public|public_class_method|putc|puts|raise|rand|readline|readlines|redo|refine|require|require_relative|rescue|retry|return|scan|select|self|set_trace_func|sleep|split|sprintf|srand|super|syscall|system|test|then|throw|trace_var|trap|true|undef|unless|until|untrace_var|using|warn|when|while|yield)([^?!\w]|$)|\bautoload([^!\w]|$)|(block_given\?|defined\?|iterator\?)|(chomp|chop|exit|gsub|sub)([^?\w]|$)|&is_constant;)|(?<=[!?])(?=[[:lower:]]))&ident;(?!:)[?!]?">+ <!ENTITY msg "\b(?!&is_constant;)&ident;[?!]?">++ <!ENTITY special_escape "[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u\{[0-9a-fA-F]{0,6}\}|u[0-9a-fA-F]{4}|(c(\\M-)?|C-|M-(\\c|\\C-)?)(\\([^0-7xucCM]|[0-7]{1,3}|x[0-9a-fA-F]{1,2}|$)|[ -BD-LN-\[\]-bd-tv-~])">+ <!ENTITY escape "\\([^0-7xucCM]|&special_escape;|$)">+ <!ENTITY partial_escape "[ux][0-9a-fA-F]*|u(\{[0-9a-fA-F]{0,6})?|(c(\\M-)?|C-|M-(\\c|\\C-)?)(\\[xucCM]?)?|c(\\M?)?|C|M(-(\\c?|\\(C-?)?)?)?">++ <!-- https://docs.ruby-lang.org/en/master/globals_rdoc.html -->+ <!-- $= $, $; are deprecated -->+ <!ENTITY global_var "\$([!@~&`'+/\\<>._*$?:"=,;]|[0-9]+|-\w|[[:alpha:]]\w*)">++ <!-- without ? : % / < = -->+ <!ENTITY safe_op "(?:[-+*~^|&]+|===?|<(=>?|(?!<))|[!>]=?|\.\.\.?)">+ <!ENTITY op1 "&safe_op;++|([?:/%]|<<)&safe_op;*+">+ <!-- /= %= <<= -->+ <!-- / spaces -->+ <!-- % which is not gld -->+ <!-- << which is not heredoc -->+ <!-- nospace / -->+ <!-- nospace % -->+ <!-- nospace << -->+ <!ENTITY op2 "&safe_op;++|[?:](?=\s|$)|([/%]|<<)(?=[\s=]|$)|%(?!&percent_lit;)|<<(?=\s|$|[^-~\w'"`]|[-~][^\w'"`])|(?<!\s)([/%]|<<)&safe_op;*+">++ <!ENTITY sym_op "\[\]=?|[-+~]@?|![=~@]?|[/%|^&]|<(=>?)?|>=?|=~|===?|\*\*?">+ <!ENTITY symbol "&ident;[=?!]?:(?!:)|\[\]=?:">+]>++<!--+ Ruby syntax highlighting definition for Kate.++ Copyright (C) 2004 by Sebastian Vuorinen (sebastian dot vuorinen at helsinki dot fi)+ Copyright (C) 2004 by Stefan Lang (langstefan@gmx.at)+ Copyright (C) 2008 by Robin Pedersen (robinpeder@gmail.com)+ Copyright (C) 2011 by Miquel Sabaté (mikisabate@gmail.com)+ Copyright (C) 2024 by Jonathan Poelen (jonathan.poelen@gmail.com)++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Library General Public+ License as published by the Free Software Foundation; either+ version 2 of the License, or (at your option) any later version.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Library General Public License for more details.++ You should have received a copy of the GNU Library General Public+ License along with this library; if not, write to the+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,+ Boston, MA 02110-1301, USA.+-->++<!--+https://docs.ruby-lang.org/en/master/syntax_rdoc.html++Ruby syntax has various ambiguous and context-dependent elements++- regex (/patt/), percent literal (%_abc_) and heredoc (<<x) begin with operators.+ puts %q+1++ ~ percent literal+ puts a %q+1++ ~ operator+ Note that regexes and oercent literal are indecisive because they depend on whether+ the element on the left is a function or a variable. Therefore we assume a regex.+ foo /a # (without space after /) operator or regex ?+- 'do' creates a block (begin/endRegion), but is optional with 'for', 'until' and 'while'.+ for x in a+ puts x+ end++ for x in a do+ puts x+ end+- 'if', 'unless', 'until' and 'while' when preceded by a value are modifiers+ without closure (not a block region).+ a += 1 while a < 10+- '?' which is a function suffix, a literal char or a ternary operator+ foo??a?1: 2+ ~~~~ func+ ~~ char+ ~ ~ ternary operator++For consistent highlighting and regions, the syntax is split into 3 parts:+- function call (first element of an expression)+- operator+- value++Each token fits into one of its categories and is followed by 1 or more of its+categories. For example, 'and' is an operator followed by a function call,+operator or value in order of priority.+So '/' in 'and /' corresponds to a regex.++Notes:+- 'do' is a value that creates a block, except in the condition of 'for', 'until' and 'while'.+- 'if', 'unless', 'until' and 'while' are modifiers only in the value category.+-->++<!--+ NOTE This syntax should be synchronized with Haml, for which a ',' and ' |' at+ the end of a line correspond to a <LineContinue>.+-->++<language name="Ruby" alternativeNames="RB;JRuby" section="Scripts"+ version="20" kateversion="5.79"+ extensions="*.rb;*.rjs;*.rxml;*.xml.erb;*.js.erb;*.rake;Rakefile;Gemfile;*.gemspec;Vagrantfile"+ mimetype="application/x-ruby"+ style="ruby" indenter="ruby"+ author="Stefan Lang (langstefan@gmx.at), Sebastian Vuorinen (sebastian.vuorinen@helsinki.fi), Robin Pedersen (robinpeder@gmail.com), Miquel Sabaté (mikisabate@gmail.com), Jonathan Poelen (jonathan.poelen@gmail.com)"+ license="LGPLv2+">++ <highlighting>++ <list name="keyword">+ <item>class</item>+ <item>def</item>+ <item>end</item>+ <item>ensure</item>+ <item>when</item>+ <include>keyword-begin-end-cond</include>+ <include>keyword-block-cond</include>+ <include>keyword-block-then-value</include>+ <include>keyword-block</include>+ <include>keyword-loop</include>+ <include>keyword-then-stmt</include>+ <include>keyword-then-value</include>+ </list>++ <list name="keyword-then-value">+ <item>break</item>+ <item>defined?</item>+ <item>in</item>+ <item>next</item>+ <item>redo</item>+ <item>retry</item>+ <item>return</item>+ <item>yield</item>+ </list>++ <list name="keyword-then-stmt">+ <item>and</item>+ <item>not</item>+ <item>or</item>+ <item>then</item>+ <item>BEGIN</item>+ <item>END</item>+ </list>++ <list name="keyword-block">+ <item>begin</item>+ <item>do</item>+ </list>++ <list name="keyword-block-then-value">+ <item>case</item>+ <item>module</item>+ </list>++ <!-- keyword with optional 'then' -->+ <list name="keyword-block-cond">+ <item>if</item>+ <item>unless</item>+ </list>++ <list name="keyword-begin-end-cond">+ <item>else</item>+ <item>elsif</item>+ <item>rescue</item>+ </list>++ <!-- keyword with optional 'do' -->+ <list name="keyword-loop">+ <item>for</item>+ <item>until</item>+ <item>while</item>+ </list>++ <list name="keyword-modifiers">+ <item>if</item>+ <item>unless</item>+ <item>until</item>+ <item>while</item>+ <item>rescue</item>+ </list>++ <list name="access-control">+ <item>private_class_method</item>+ <item>private</item>+ <item>protected</item>+ <item>public_class_method</item>+ <item>public</item>+ </list>++ <list name="attribute-definitions">+ <item>attr_reader</item>+ <item>attr_writer</item>+ <item>attr_accessor</item>+ </list>++ <list name="definitions">+ <item>alias</item>+ <item>module</item>+ <item>class</item>+ <item>def</item>+ <item>undef</item>+ </list>++ <list name="pseudo-variables">+ <item>self</item>+ <item>super</item>+ <item>nil</item>+ <item>false</item>+ <item>true</item>+ <item>caller</item>+ <item>__FILE__</item>+ <item>__LINE__</item>+ </list>++ <list name="default-globals">+ <item>$stdout</item>+ <item>$stderr</item>+ <item>$stdin</item>+ </list>++ <!-- Kernel module methods.+ NOTE: Methods ending in ? or !+ are included below as regexes.+ -->+ <list name="kernel-methods">+ <!-- backquote ` -->+ <item>abort</item>+ <item>at_exit</item>+ <item>autoload</item>+ <item>autoload?</item>+ <item>binding</item>+ <item>block_given?</item>+ <item>callcc</item>+ <item>caller</item>+ <item>catch</item>+ <item>chomp</item>+ <item>chomp!</item>+ <item>chop</item>+ <item>chop!</item>+ <item>eval</item>+ <item>exec</item>+ <item>exit</item>+ <item>exit!</item>+ <item>fail</item>+ <item>fork</item>+ <item>format</item>+ <item>getc</item>+ <item>gets</item>+ <item>global_variables</item>+ <item>gsub</item>+ <item>gsub!</item>+ <item>iterator?</item>+ <item>lambda</item>+ <item>load</item>+ <item>local_variables</item>+ <item>loop</item>+ <item>method_missing</item>+ <item>open</item>+ <item>p</item>+ <item>print</item>+ <item>printf</item>+ <item>proc</item>+ <item>putc</item>+ <item>puts</item>+ <item>raise</item>+ <item>rand</item>+ <item>readline</item>+ <item>readlines</item>+ <item>require</item>+ <item>require_relative</item>+ <item>scan</item>+ <item>select</item>+ <item>set_trace_func</item>+ <item>sleep</item>+ <item>split</item>+ <item>sprintf</item>+ <item>srand</item>+ <item>sub</item>+ <item>sub!</item>+ <item>syscall</item>+ <item>system</item>+ <item>test</item>+ <item>throw</item>+ <item>trace_var</item>+ <item>trap</item>+ <item>untrace_var</item>+ <item>warn</item>+ </list>++ <list name="mixin-methods">+ <item>extend</item>+ <item>include</item>+ <item>prepend</item>+ <item>refine</item>+ <item>using</item>+ </list>++ <contexts>+ <context name="Normal" attribute="Normal Text" fallthroughContext="Ruby">+ <!-- "shebang" line -->+ <StringDetect attribute="Keyword" String="#!/" context="Shebang" column="0"/>+ </context>++ <context name="Shebang" attribute="Keyword" lineEndContext="#pop">+ </context>++ <context name="Ruby" attribute="Normal Text" fallthroughContext="Expr">+ <DetectSpaces attribute="Normal Text"/>++ <AnyChar attribute="Normal Text" String=";("/>+ <DetectChar attribute="Normal Text" char=")" context="Op1ThenExpr"/>++ <DetectChar attribute="Delimiter" char="]" context="Op1ThenExpr"/>++ <DetectChar attribute="Operator" char="{" beginRegion="brace"/>+ <DetectChar attribute="Operator" char="}" context="Op1ThenExpr" endRegion="brace"/>++ <DetectChar attribute="Comment" char="#" context="General Comment"/>++ <RegExpr attribute="Normal Text" String="&ident_not_kw;" context="MsgParamOrOp2"/>++ <!-- Detects key symbol in a hash+ Unfortunately in the absence of a space before ':',+ the syntax is ambiguous with a function call containing a symbol.++ hash: {sym:foo}+ function: foo:sym <- 'foo:' is considered as a symbol+ -->+ <RegExpr attribute="Symbol" String="&symbol;" context="MsgParamOrOp2"/>++ <DetectChar attribute="Delimiter" char="[" context="MsgParamOrOp2"/>++ <keyword attribute="Keyword" String="keyword-block" beginRegion="def block"/>+ <keyword attribute="Keyword" String="keyword-loop" context="Loop" beginRegion="def block"/>+ <keyword attribute="Keyword" String="keyword-block-then-value" context="MsgParamOrOp2" beginRegion="def block"/>+ <keyword attribute="Keyword" String="keyword-begin-end-cond" context="Cond" endRegion="def block" beginRegion="def block"/>+ <keyword attribute="Keyword" String="keyword-then-stmt"/>+ <keyword attribute="Keyword" String="keyword-then-value" context="MsgParamOrOp2"/>+ <keyword attribute="Keyword" String="keyword-block-cond" context="Cond" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="end" context="MsgParamOrOp2" endRegion="def block"/>+ <WordDetect attribute="Keyword" String="class" context="Op1ThenExpr" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="def" context="DefFn" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="when" context="Cond"/>+ <WordDetect attribute="Keyword" String="ensure" endRegion="def block" beginRegion="def block"/>+ <WordDetect attribute="Definition" String="alias" context="Alias"/>+ <WordDetect attribute="Definition" String="undef" context="Alias"/>++ <keyword attribute="Attribute Definition" String="attribute-definitions" context="Op2ThenExpr"/>+ <keyword attribute="Access Control" String="access-control" context="Op2ThenExpr"/>+ <keyword attribute="Definition" String="definitions" context="Expr"/>+ <keyword attribute="Pseudo variable" String="pseudo-variables" context="Op1ThenExpr"/>+ <keyword attribute="Kernel methods" String="kernel-methods" context="Op2ThenExpr"/>+ <keyword attribute="Module mixin methods" String="mixin-methods" context="Op2ThenExpr"/>++ <!-- Generally a module or class name like "File", "MyModule_1", .. -->+ <RegExpr attribute="Constant" String="&constant;" context="MsgParamOrOp2"/>+ <RegExpr attribute="Global Constant" String="&global_constant;" context="MsgParamOrOp2"/>++ <!-- __END__ token on own line. -->+ <RegExpr attribute="Keyword" String="^__END__$" context="DATA" column="0"/>++ <DetectIdentifier attribute="Normal Text" context="SuffixFunctionMsgParamOrOp2"/>++ <!-- Check for =begin before assignment operator. -->+ <WordDetect attribute="Blockcomment" String="=begin" context="Embedded documentation" beginRegion="comment block" column="0"/>++ <!-- ruby ignores newline after \ -->+ <LineContinue attribute="Normal Text"/>+ </context>++ <context name="SuffixFunctionMsgParamOrOp2" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!MsgParamOrOp2">+ <AnyChar attribute="Normal Text" String="!?" context="#pop!MsgParamOrOp2"/>+ </context>+++ <!-- until 'do' or end of line -->+ <context name="Loop" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="LoopExpr">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Operator" char="{" context="LoopFindBrace" beginRegion="brace"/>+ <DetectChar attribute="Operator" char="}" context="#pop" lookAhead="1"/>+ <WordDetect attribute="Keyword" String="do" context="#pop"/>+ <LineContinue attribute="Normal Text"/>+ </context>+ <context name="LoopFindBrace" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="LoopExpr">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Operator" char="{" context="LoopFindBrace" beginRegion="brace"/>+ <DetectChar attribute="Operator" char="}" context="#pop!Op1ThenLoopExpr" endRegion="brace"/>+ <WordDetect attribute="Keyword" String="do" context="#pop" lookAhead="1"/>+ <LineContinue attribute="Normal Text"/>+ </context>+ <context name="LoopExpr" attribute="Normal Text" lineEndContext="#pop">+ <WordDetect attribute="Keyword" String="do" context="#pop" lookAhead="1"/>+ <IncludeRules context="Expr"/>+ </context>++ <!-- until 'then' or end of line -->+ <context name="Cond" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="CondExpr">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Operator" char="{" context="CondFindBrace" beginRegion="brace"/>+ <DetectChar attribute="Operator" char="}" context="#pop" lookAhead="1"/>+ <WordDetect attribute="Keyword" String="then" context="#pop"/>+ <LineContinue attribute="Normal Text"/>+ </context>+ <context name="CondFindBrace" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="CondExpr">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Operator" char="{" context="CondFindBrace" beginRegion="brace"/>+ <DetectChar attribute="Operator" char="}" context="#pop!Op1ThenCondExpr" endRegion="brace"/>+ <WordDetect attribute="Keyword" String="then" context="#pop" lookAhead="1"/>+ <LineContinue attribute="Normal Text"/>+ </context>+ <context name="CondExpr" attribute="Normal Text" lineEndContext="#pop">+ <WordDetect attribute="Keyword" String="then" context="#pop" lookAhead="1"/>+ <IncludeRules context="Expr"/>+ </context>++ <!-- after function call+ Assume that+ foo /a is a regex but not foo /=a+ foo %+ is a percent literal+ foo <<a is a heredoc+ (This is not true when foo is a variable...)+ -->+ <context name="MsgParamOrOp2" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!Expr">+ <DetectSpaces attribute="Normal Text"/>+ <RegExpr attribute="Operator" String="&op2;" context="#pop!Expr"/>+ <DetectChar attribute="Member" char="." context="MemberAccessCall"/>+ <StringDetect attribute="Operator" String="::" context="MemberAccessCall"/>+ <LineContinue attribute="Normal Text"/>+ </context>++ <context name="MsgFnName" attribute="Normal Text" lineEndContext="#pop#pop#pop" fallthroughContext="#pop!FnParent">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Member" char="." context="MemberAccess"/>+ <StringDetect attribute="Operator" String="::" context="MemberAccess"/>+ <LineContinue attribute="Normal Text"/>+ </context>++ <context name="Expr" attribute="Normal Text" lineEndContext="#pop">+ <DetectSpaces attribute="Normal Text"/>++ <StringDetect attribute="Operator" String=".." context="Dot2Op"/>+ <DetectChar attribute="Member" char="." context="MemberAccess"/>++ <DetectChar attribute="Operator" char="=" context="#pop"/>++ <!-- pop to parent for interpolation -->+ <AnyChar String="{}" context="#pop" lookAhead="1"/>++ <AnyChar attribute="Normal Text" String=";(" context="#pop"/>+ <DetectChar attribute="Normal Text" char=","/>+ <DetectChar attribute="Normal Text" char=")" context="Op1"/>++ <DetectChar attribute="Comment" char="#" context="#pop!General Comment"/>++ <DetectChar char="@" context="AtVar" lookAhead="1"/>+ <DetectChar char="$" context="Var" lookAhead="1"/>++ <DetectChar attribute="Delimiter" char="]" context="Op1"/>++ <HlCChar attribute="Char" context="Op1"/>+ <DetectChar attribute="String" char='"' context="DQuote"/>+ <DetectChar attribute="Raw String" char="'" context="SQuote"/>+ <DetectChar attribute="Command" char="`" context="Command String"/>++ <DetectChar attribute="Regular Expression" char="/" context="RegEx"/>+ <!-- Check for "ASCII code operator". e.g.: ?a -->+ <DetectChar char="?" context="MaybeCharLiteral" lookAhead="1"/>++ <AnyChar context="Number" String="0123456789" lookAhead="1"/>++ <RegExpr attribute="Normal Text" String="&ident_not_kw;" context="Op2"/>++ <RegExpr attribute="Symbol" String="&symbol;" context="#pop!MsgParamOrOp2"/>++ <DetectChar attribute="Delimiter" char="[" context="#pop!MsgParamOrOp2"/>++ <StringDetect attribute="Operator" String="::" context="MemberAccess"/>++ <LineContinue attribute="Normal Text"/>++ <keyword attribute="Attribute Definition" String="attribute-definitions" context="Op2"/>+ <keyword attribute="Access Control" String="access-control" context="Op2"/>+ <keyword attribute="Pseudo variable" String="pseudo-variables" context="Op1"/>+ <keyword attribute="Kernel methods" String="kernel-methods" context="Op2"/>+ <keyword attribute="Module mixin methods" String="mixin-methods" context="Op2"/>++ <keyword attribute="Keyword" String="keyword-modifiers"/>++ <keyword attribute="Keyword" String="keyword-block" beginRegion="def block" context="#pop"/>+ <keyword attribute="Keyword" String="keyword-loop" context="#pop!Loop" beginRegion="def block"/>+ <keyword attribute="Keyword" String="keyword-block-then-value" context="#pop!MsgParamOrOp2" beginRegion="def block"/>+ <keyword attribute="Keyword" String="keyword-begin-end-cond" context="#pop!Cond" endRegion="def block" beginRegion="def block"/>+ <keyword attribute="Keyword" String="keyword-then-stmt" context="#pop"/>+ <keyword attribute="Keyword" String="keyword-then-value" context="#pop!MsgParamOrOp2"/>+ <WordDetect attribute="Keyword" String="end" context="#pop!MsgParamOrOp2" endRegion="def block"/>+ <WordDetect attribute="Keyword" String="class" context="Op1" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="def" context="#pop!DefFn" beginRegion="def block"/>+ <WordDetect attribute="Keyword" String="when" context="#pop!Cond"/>+ <WordDetect attribute="Keyword" String="ensure" context="#pop" endRegion="def block" beginRegion="def block"/>+ <WordDetect attribute="Definition" String="alias" context="Alias"/>+ <WordDetect attribute="Definition" String="undef" context="Alias"/>++ <keyword attribute="Definition" String="definitions"/>++ <!-- Generally a module or class name like "File", "MyModule_1", .. -->+ <RegExpr attribute="Constant" String="&constant;" context="Op1"/>+ <RegExpr attribute="Global Constant" String="&global_constant;" context="Op1"/>++ <RegExpr attribute="Symbol" String=":((@@?|\$)&ident;|&ident;([?]|!(?!=)|=(?![=>~]))?|&sym_op;|(?=['"])|&global_var;)" context="Op1"/>++ <!-- recognize the beginning of a general delimited input format -->+ <!-- this moves to the next context to separate out the exact nature of the GDL input -->+ <RegExpr attribute="GDL input" context="find_gdl_input" String="%(?=&percent_lit;)" beginRegion="GdlInput"/>++ <!-- recognize the beginning of a HEREDOC -->+ <RegExpr attribute="Operator" context="Heredoc" String="<<(?=[-~]?(\w+|'\w+'|"\w+"|`\w+`))" beginRegion="HereDocument"/>++ <!-- should not happen in valid syntax -->+ <RegExpr attribute="Operator" String="([/%?:]|<<?)&safe_op;*|&safe_op;+"/>+ <DetectIdentifier attribute="Normal Text" context="SuffixFunction"/>+ </context>++ <!-- alias / ++ ~ never regex+ same for undef+ -->+ <context name="Alias" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectSpaces attribute="Normal Text"/>+ <AnyChar attribute="Operator" String="-+*~^|&=<>!%/"/>+ <DetectChar char="$" context="Var" lookAhead="1"/>+ <DetectChar attribute="String" char='"' context="AliasDQuote"/>+ <DetectChar attribute="Raw String" char="'" context="AliasSQuote"/>+ <DetectChar attribute="Normal Text" char=","/>+ <LineContinue attribute="Normal Text"/>+ <RegExpr attribute="Symbol" String=":(&ident;[=?!]?|&sym_op;)"/>+ <RegExpr attribute="Normal Text" String="\b(?!(&no_param;)([^?!\w]|$))&ident;"/>+ </context>+ <context name="AliasDQuote" attribute="String">+ <DetectChar char='"' attribute="String" context="AliasCheckSym"/>+ <IncludeRules context="DQuoteSpecial"/>+ </context>+ <context name="AliasSQuote" attribute="Raw String">+ <Detect2Chars attribute="String" char="\" char1="\"/>+ <Detect2Chars attribute="String" char="\" char1="'"/>+ <DetectChar char="'" attribute="Raw String" context="AliasCheckSym"/>+ </context>+ <context name="AliasCheckSym" attribute="Raw String" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop">+ <DetectChar char=":" attribute="Symbol" context="#pop#pop"/>+ </context>++ <context name="Dot2Op" attribute="Operator" lineEndContext="#pop#pop" fallthroughContext="#pop">+ <!-- triple dot -->+ <DetectChar attribute="Operator" char="." context="#pop"/>+ </context>++ <context name="SuffixFunction" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!Op2">+ <AnyChar attribute="Normal Text" String="!?" context="#pop!Op2"/>+ </context>++ <!-- A slash is always a division operator, even if preceeded by whitespace -->+ <context name="Op1" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Operator" char="=" context="#pop#pop"/>+ <RegExpr attribute="Operator" String="&op1;" context="#pop"/>+ <LineContinue attribute="Normal Text"/>+ </context>++ <context name="Op1ThenExpr" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!Expr">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Operator" char="=" context="#pop"/>+ <RegExpr attribute="Operator" String="&op1;" context="#pop!Expr"/>+ <LineContinue attribute="Normal Text"/>+ </context>++ <context name="Op1ThenLoopExpr" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!LoopExpr">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Operator" char="=" context="#pop"/>+ <RegExpr attribute="Operator" String="&op1;" context="#pop!LoopExpr"/>+ <LineContinue attribute="Normal Text"/>+ </context>++ <context name="Op1ThenCondExpr" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!CondExpr">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Operator" char="=" context="#pop"/>+ <RegExpr attribute="Operator" String="&op1;" context="#pop!CondExpr"/>+ <LineContinue attribute="Normal Text"/>+ </context>++ <!-- A slash is division operator if it's the first character, or if preceeded and followed by whitespace -->+ <context name="Op2" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Operator" char="=" context="#pop#pop"/>+ <RegExpr attribute="Operator" String="&op2;" context="#pop"/>+ <LineContinue attribute="Normal Text"/>+ </context>++ <context name="Op2ThenExpr" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!Expr">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Operator" char="=" context="#pop"/>+ <RegExpr attribute="Operator" String="&op2;" context="#pop!Expr"/>+ <LineContinue attribute="Normal Text"/>+ </context>++ <context name="Var" attribute="Normal Text" lineEndContext="#pop#pop">+ <!-- (global) vars starting with $ -->+ <RegExpr attribute="Global Variable" String="\$((?!(stdin|stdout|stderr|_|LOAD_PATH|LOADED_FEATURES|FILENAME|DEBUG|VERBOSE)\b)[[:alpha:]]\w*|[0-9]+|-(?![ailpFIvWwdx])\w)" context="#pop!Op1"/>+ <!-- special-character globals and other predefined variables -->+ <RegExpr attribute="Default globals" String="&global_var;" context="#pop!Op1"/>+ <DetectChar attribute="Error" char="$" context="#pop!Op1"/>+ </context>++ <context name="AtVar" attribute="Normal Text" lineEndContext="#pop#pop">+ <RegExpr attribute="Instance Variable" String="@&ident;" context="#pop!Op1"/>+ <RegExpr attribute="Class Variable" String="@@&ident;" context="#pop!Op1"/>+ <DetectChar attribute="Error" char="@"/>+ </context>++ <!-- def foo() block-statement+ ~~~ any ident (including keyword)++ def Abc::foo() block-statement+ ~~~ ~~~ ident (no keyword)+ -->+ <context name="DefFn" attribute="Normal Text" fallthroughContext="FnName">+ <DetectSpaces attribute="Normal Text"/>+ <LineContinue attribute="Normal Text"/>+ <DetectChar attribute="Comment" char="#" context="General Comment"/>+ </context>+ <context name="FnName" attribute="Normal Text" fallthroughContext="FnParent">+ <RegExpr attribute="Normal Text" String="&ident_not_kw;" context="MsgFnName"/>++ <keyword attribute="Attribute Definition" String="attribute-definitions" context="FnParent" weakDeliminator=":"/>+ <keyword attribute="Access Control" String="access-control" context="FnParent" weakDeliminator=":"/>+ <keyword attribute="Definition" String="definitions" context="FnParent" weakDeliminator=":"/>+ <keyword attribute="Pseudo variable" String="pseudo-variables" context="FnParent" weakDeliminator=":"/>+ <keyword attribute="Kernel methods" String="kernel-methods" context="FnParent" weakDeliminator=":"/>+ <keyword attribute="Module mixin methods" String="mixin-methods" context="FnParent" weakDeliminator=":"/>+ <keyword attribute="Keyword" String="keyword" context="FnParent" weakDeliminator=":"/>++ <RegExpr attribute="Operator" String="[-+~]@?|![~@]?|[/%^]|\*\*?|\|\||&&|<(=>?)?|>=?|===?|\*\*?" context="FnParent"/>+ <RegExpr attribute="Constant" String="&constant;" context="MsgFnName"/>+ <RegExpr attribute="Global Constant" String="&global_constant;" context="MsgFnName"/>++ <StringDetect attribute="Symbol" String="[]=" context="FnParent"/>+ <StringDetect attribute="Symbol" String="[]" context="FnParent"/>+ <DetectChar attribute="Comment" char="#" context="General Comment"/>+ </context>+ <context name="FnParent" attribute="Normal Text" fallthroughContext="#pop#pop#pop">+ <DetectChar attribute="Normal Text" char="(" context="DefFnParams"/>+ <DetectSpaces attribute="Normal Text"/>+ <LineContinue attribute="Normal Text"/>+ <DetectChar attribute="Comment" char="#" context="General Comment"/>+ </context>+ <context name="DefFnParams" attribute="Normal Text" fallthroughContext="#pop#pop#pop#pop">+ <DetectChar attribute="Normal Text" char=")" context="#pop#pop#pop#pop"/>+ <DetectChar attribute="Comment" char="#" context="General Comment"/>+ <RegExpr attribute="Normal Text" String="([\s,]+|\b(?!(&no_param;)\b|[[:upper:]])&ident;(?=$|[^?!]))++"/>+ <RegExpr attribute="Constant" String="&constant;"/>+ <RegExpr attribute="Global Constant" String="&global_constant;"/>+ <keyword attribute="Attribute Definition" String="attribute-definitions"/>+ <keyword attribute="Access Control" String="access-control"/>+ <keyword attribute="Kernel methods" String="kernel-methods"/>+ <keyword attribute="Module mixin methods" String="mixin-methods"/>+ </context>+++ <!-- Numeric values. Note that we have to allow underscores between two digits. -->+ <context name="Number" attribute="Normal Text" lineEndContext="#pop#pop" fallthroughContext="NumberError">+ <RegExpr attribute="Dec" String="\b(0[dD]&dec;|(0(\b|(?=[ri]))|[1-9](_?[0-9]++)*+)(?![eE]|[.][0-9]))" context="NumberSuffix"/>+ <RegExpr attribute="Float" String="\b([1-9](_?[0-9]++)*+|0)(\.&dec;([eE][-+]?&dec;)?|[eE][-+]?&dec;)" context="NumberSuffix"/>+ <RegExpr attribute="Hex" String="\b0[xX][0-9a-fA-F](_?[0-9a-fA-F]++)*+" context="NumberSuffix"/>+ <RegExpr attribute="Bin" String="\b0[bB][01](_?[01]++)*+" context="NumberSuffix"/>+ <RegExpr attribute="Octal" String="\b0[oO]?[0-7](_?[0-7]++)*+" context="NumberSuffix"/>+ <DetectChar char="0" attribute="Dec" context="NumberError"/>+ </context>++ <context name="NumberSuffix" attribute="Number Suffix" lineEndContext="#pop#pop" fallthroughContext="#pop!NumberError">+ <StringDetect attribute="Number Suffix" String="ri" context="#pop!NumberError"/>+ <AnyChar attribute="Number Suffix" String="ri" context="#pop!NumberError"/>+ </context>++ <context name="NumberError" attribute="Error" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop!Op1">+ <DetectIdentifier/>+ <AnyChar String="0123456789"/>+ </context>++ <context name="Find closing brace" attribute="Normal Text" fallthroughContext="Expr">+ <DetectChar attribute="Operator" char="}" context="#pop!Op1ThenExpr" endRegion="brace"/>+ <IncludeRules context="Ruby"/>+ </context>++ <!-- "..." -->+ <context name="DQuote" attribute="String">+ <DetectChar char='"' attribute="String" context="CheckSym"/>+ <IncludeRules context="DQuoteSpecial"/>+ </context>++ <!-- "...": -->+ <context name="CheckSym" attribute="Raw String" lineEndContext="#pop#pop!Op1" fallthroughContext="#pop#pop!Op1">+ <DetectChar char=":" attribute="Symbol" context="#pop#pop#pop"/>+ </context>++ <!-- \ in "..." -->+ <context name="DQuoteSpecial" attribute="String">+ <DetectChar char="\" context="DQuoteEscape" lookAhead="1"/>+ <DetectChar char="#" context="DQuoteSubstitution" lookAhead="1"/>+ </context>+ <context name="DQuoteEscape" attribute="String">+ <RegExpr attribute="String Char" String="&escape;" context="#pop"/>+ <RegExpr attribute="Error" String="\\(&partial_escape;|)" context="#pop"/>+ </context>+ <context name="DQuoteSubstitution" attribute="String">+ <StringDetect attribute="Substitution" String="#{" context="#pop!Subst"/>+ <RegExpr attribute="Substitution" String="#@@?\w+|#&global_var;" context="#pop"/>+ <DetectChar char="#" context="#pop"/>+ </context>++ <!-- '...' -->+ <context name="SQuote" attribute="Raw String">+ <Detect2Chars attribute="String" char="\" char1="\"/>+ <Detect2Chars attribute="String" char="\" char1="'"/>+ <DetectChar char="'" attribute="Raw String" context="CheckSym"/>+ </context>++ <!-- `...` -->+ <context name="Command String" attribute="Command">+ <DetectChar char="`" attribute="Command" context="#pop!Op1"/>+ <Detect2Chars attribute="String" char="\" char1="\"/>+ <Detect2Chars attribute="String" char="\" char1="`"/>+ <DetectChar char="#" context="DQuoteSubstitution" lookAhead="1"/>+ </context>++ <!-- ?x -->+ <context name="MaybeCharLiteral" attribute="String" lineEndContext="#pop" fallthroughContext="#pop!Op1">+ <RegExpr attribute="Operator" String="\?(?=\s|$)" context="#pop"/>+ <DetectChar attribute="Char Literal" char="?" context="CharLiteral"/>+ </context>+ <context name="CharLiteral" attribute="String">+ <RegExpr attribute="Char" String="[^\\\s]" context="#pop#pop!Op1"/>+ <RegExpr attribute="String Char" String="&escape;" context="#pop#pop!Op1"/>+ <RegExpr attribute="Error" String="\\(&partial_escape;|)" context="#pop#pop!Op1"/>+ </context>++ <context name="Embedded documentation" attribute="Blockcomment">+ <DetectSpaces/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier/>+ <WordDetect attribute="Comment" String="=end" context="Embedded documentation End" endRegion="comment block" column="0"/>+ </context>+ <context name="Embedded documentation End" attribute="Comment" lineEndContext="#pop#pop">+ </context>++ <context name="RegEx" attribute="Regular Expression">+ <DetectChar attribute="Regular Expression" context="RegExMode" char="/"/>+ <IncludeRules context="RegExSpecial"/>+ </context>+ <!-- as DQuoteSpecial, but with \. and \p{...} -->+ <context name="RegExSpecial" attribute="String Char">+ <DetectChar char="#" context="DQuoteSubstitution" lookAhead="1"/>+ <DetectChar char="\" context="RegExEscape" lookAhead="1"/>+ </context>+ <context name="RegExEscape" attribute="String">+ <RegExpr attribute="String Char" String="\\([^0-7xucCMp]|&special_escape;|p\{[-[:alpha:]]*\}|$)" context="#pop"/>+ <RegExpr attribute="Error" String="\\(&partial_escape;|p\{?|)" context="#pop"/>+ </context>++ <context name="RegExMode" attribute="String" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!Op1">+ <AnyChar attribute="Regular Expression" String="imxonues"/>+ </context>++ <!-- Substitutions can be nested -->+ <context name="Subst" attribute="Normal Text" fallthroughContext="Expr">+ <DetectChar attribute="Operator" char="{" context="Find closing brace" beginRegion="brace"/>+ <DetectChar attribute="Substitution" char="}" context="#pop"/>+ <!-- Highlight substitution as code. -->+ <IncludeRules context="Ruby"/>+ </context>++ <!-- This handles access of nested module classes and class methods -->+ <context name="MemberAccess" attribute="Member" fallthroughContext="#pop!Op1">+ <DetectSpaces attribute="Normal Text"/>+ <!-- marks a message (being sent, not defined) -->+ <RegExpr attribute="Message" String="&msg;" context="#pop!Op1"/>+ <RegExpr attribute="Constant" String="&constant;" context="#pop!Op1"/>+ <RegExpr attribute="Constant Value" String="&global_constant;" context="#pop!Op1"/>+ <RegExpr attribute="Operator" String="&sym_op;" context="#pop"/>+ </context>++ <context name="MemberAccessCall" attribute="Member" fallthroughContext="#pop">+ <DetectSpaces attribute="Normal Text"/>+ <!-- marks a message (being sent, not defined) -->+ <RegExpr attribute="Message" String="&msg;" context="#pop"/>+ <RegExpr attribute="Constant" String="&constant;" context="#pop"/>+ <RegExpr attribute="Constant Value" String="&global_constant;" context="#pop"/>+ <RegExpr attribute="Operator" String="&sym_op;" context="#pop"/>+ </context>++ <context name="General Comment" attribute="Comment" lineEndContext="#pop">+ <DetectSpaces/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier/>+ </context>++ <!-- HEREDOC support+ The contexts below support both normal and indented heredocs+ -->+ <!-- here we markup the heredoc markers -->+ <context name="Heredoc" attribute="Normal Text">+ <AnyChar attribute="Operator" String="-~" context="#pop!IndentedHeredoc"/>+ <RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'"/>+ <RegExpr attribute="Keyword" context="normal_heredoc" String="(?|(\w+)|"(\w+)"|`(\w+)`)"/>+ </context>+ <context name="IndentedHeredoc" attribute="Normal Text">+ <RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'"/>+ <RegExpr attribute="Keyword" context="indented_heredoc" String="(?|(\w+)|"(\w+)"|`(\w+)`)"/>+ </context>+ <!-- these are the real heredoc contexts -->+ <context name="indented_heredoc" attribute="Here Document">+ <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>+ <IncludeRules context="DQuoteSpecial"/>+ </context>+ <context name="apostrophed_indented_heredoc" attribute="Here Document">+ <RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>+ </context>++ <context name="normal_heredoc" attribute="Here Document">+ <RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>+ <IncludeRules context="DQuoteSpecial"/>+ </context>+ <context name="apostrophed_normal_heredoc" attribute="Here Document">+ <RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>+ </context>++ <!-- General delimited input support+ The contexts below handle the various gdl formats+ -->+ <context name="find_gdl_input" attribute="Normal Text" lineEndContext="#pop">+ <!-- handle double-quoted strings -->+ <DetectChar attribute="GDL input" context="%Q(" char="("/>+ <DetectChar attribute="GDL input" context="%Q{" char="{"/>+ <DetectChar attribute="GDL input" context="%Q[" char="["/>+ <DetectChar attribute="GDL input" context="%Q<" char="<"/>+ <StringDetect attribute="GDL input" context="%Q(" String="Q("/>+ <StringDetect attribute="GDL input" context="%Q{" String="Q{"/>+ <StringDetect attribute="GDL input" context="%Q[" String="Q["/>+ <StringDetect attribute="GDL input" context="%Q<" String="Q<"/>++ <!-- handle token arrays -->+ <StringDetect attribute="GDL input" context="%Q(" String="W("/>+ <StringDetect attribute="GDL input" context="%Q{" String="W{"/>+ <StringDetect attribute="GDL input" context="%Q[" String="W["/>+ <StringDetect attribute="GDL input" context="%Q<" String="W<"/>++ <!-- handle token arrays -->+ <StringDetect attribute="GDL input" context="%Q(" String="I("/>+ <StringDetect attribute="GDL input" context="%Q{" String="I{"/>+ <StringDetect attribute="GDL input" context="%Q[" String="I["/>+ <StringDetect attribute="GDL input" context="%Q<" String="I<"/>++ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="GDL input" context="%Q_" String="[QWI]?([^[:alnum:]])"/>++ <!-- handle token arrays -->+ <StringDetect attribute="GDL input" context="%w(" String="w("/>+ <StringDetect attribute="GDL input" context="%w{" String="w{"/>+ <StringDetect attribute="GDL input" context="%w[" String="w["/>+ <StringDetect attribute="GDL input" context="%w<" String="w<"/>++ <!-- handle token arrays -->+ <StringDetect attribute="GDL input" context="%w(" String="i("/>+ <StringDetect attribute="GDL input" context="%w{" String="i{"/>+ <StringDetect attribute="GDL input" context="%w[" String="i["/>+ <StringDetect attribute="GDL input" context="%w<" String="i<"/>++ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="GDL input" context="%w_" String="[wi]([^[:alnum:]])"/>++ <!-- handle apostrophed strings -->+ <StringDetect attribute="GDL input" context="%q(" String="q("/>+ <StringDetect attribute="GDL input" context="%q{" String="q{"/>+ <StringDetect attribute="GDL input" context="%q[" String="q["/>+ <StringDetect attribute="GDL input" context="%q<" String="q<"/>+ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="GDL input" context="%q_" String="q([^[:alnum:]])"/>++ <!-- handle token arrays -->+ <StringDetect attribute="GDL input" context="%s(" String="s("/>+ <StringDetect attribute="GDL input" context="%s{" String="s{"/>+ <StringDetect attribute="GDL input" context="%s[" String="s["/>+ <StringDetect attribute="GDL input" context="%s<" String="s<"/>+ <!-- then ie handle the 'any char' format -->+ <RegExpr attribute="GDL input" context="%s_" String="s([^[:alnum:]])"/>++ <!-- handle regular expressions -->+ <StringDetect attribute="GDL input" context="%r(" String="r("/>+ <StringDetect attribute="GDL input" context="%r{" String="r{"/>+ <StringDetect attribute="GDL input" context="%r[" String="r["/>+ <StringDetect attribute="GDL input" context="%r<" String="r<"/>+ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="GDL input" context="%r_" String="r([^[:alnum:]])"/>++ <!-- handle shell commands -->+ <StringDetect attribute="GDL input" context="%x(" String="x("/>+ <StringDetect attribute="GDL input" context="%x{" String="x{"/>+ <StringDetect attribute="GDL input" context="%x[" String="x["/>+ <StringDetect attribute="GDL input" context="%x<" String="x<"/>+ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="GDL input" context="%x_" String="x([^[:alnum:]])"/>+ </context>+++ <!-- double-quoted string specific contexts follow -->++ <context name="%Q(" attribute="String">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char=")" endRegion="GdlInput" />+ <IncludeRules context="%Q(_rule"/>+ </context>+ <context name="%Q(_nested" attribute="String">+ <DetectChar attribute="String" context="#pop" char=")"/>+ <IncludeRules context="%Q(_rule"/>+ </context>+ <context name="%Q(_rule" attribute="String">+ <DetectChar attribute="String" context="%Q(_nested" char="("/>+ <IncludeRules context="DQuoteSpecial"/>+ </context>++ <!-- note that here substitution should win over nesting -->+ <context name="%Q{" attribute="String">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char="}" endRegion="GdlInput" />+ <IncludeRules context="%Q{_rule"/>+ </context>+ <context name="%Q{_nested" attribute="String">+ <DetectChar attribute="String" context="#pop" char="}"/>+ <IncludeRules context="%Q{_rule"/>+ </context>+ <context name="%Q{_rule" attribute="String">+ <DetectChar attribute="String" context="%Q{_nested" char="{"/>+ <IncludeRules context="DQuoteSpecial"/>+ </context>++ <context name="%Q[" attribute="String">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char="]" endRegion="GdlInput" />+ <IncludeRules context="%Q[_rule"/>+ </context>+ <context name="%Q[_nested" attribute="String">+ <DetectChar attribute="String" context="#pop" char="]"/>+ <IncludeRules context="%Q[_rule"/>+ </context>+ <context name="%Q[_rule" attribute="String">+ <DetectChar attribute="String" context="%Q[_nested" char="["/>+ <IncludeRules context="DQuoteSpecial"/>+ </context>++ <context name="%Q<" attribute="String">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char=">" endRegion="GdlInput" />+ <IncludeRules context="%Q<_rule"/>+ </context>+ <context name="%Q<_nested" attribute="String">+ <DetectChar attribute="String" context="#pop" char=">"/>+ <IncludeRules context="%Q<_rule"/>+ </context>+ <context name="%Q<_rule" attribute="String">+ <DetectChar attribute="String" context="%Q<_nested" char="<"/>+ <IncludeRules context="DQuoteSpecial"/>+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="%Q_" attribute="String">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char="1" dynamic="true" endRegion="GdlInput" />+ <IncludeRules context="DQuoteSpecial"/>+ </context>+++ <!-- token array specific contexts -->++ <context name="%w(" attribute="Raw String">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char=")" endRegion="GdlInput"/>+ <IncludeRules context="%w(_rule"/>+ </context>+ <context name="%w(_nested" attribute="Raw String">+ <DetectChar attribute="Raw String" context="#pop" char=")"/>+ <IncludeRules context="%w(_rule"/>+ </context>+ <context name="%w(_rule" attribute="Raw String">+ <DetectChar attribute="Raw String" context="%w(_nested" char="("/>+ <Detect2Chars attribute="String Char" char="\" char1=" "/>+ <Detect2Chars attribute="String Char" char="\" char1="\"/>+ <Detect2Chars attribute="String Char" char="\" char1=")"/>+ <Detect2Chars attribute="String Char" char="\" char1="("/>+ </context>++ <context name="%w{" attribute="Raw String">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char="}" endRegion="GdlInput"/>+ <IncludeRules context="%w{_rule"/>+ </context>+ <context name="%w{_nested" attribute="Raw String">+ <DetectChar attribute="Raw String" context="#pop" char="}"/>+ <IncludeRules context="%w{_rule"/>+ </context>+ <context name="%w{_rule" attribute="Raw String">+ <DetectChar attribute="Raw String" context="%w{_nested" char="{"/>+ <Detect2Chars attribute="String Char" char="\" char1=" "/>+ <Detect2Chars attribute="String Char" char="\" char1="\"/>+ <Detect2Chars attribute="String Char" char="\" char1="}"/>+ <Detect2Chars attribute="String Char" char="\" char1="{"/>+ </context>++ <context name="%w[" attribute="Raw String">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char="]" endRegion="GdlInput"/>+ <IncludeRules context="%w[_rule"/>+ </context>+ <context name="%w[_nested" attribute="Raw String">+ <DetectChar attribute="Raw String" context="#pop" char="]"/>+ <IncludeRules context="%w[_rule"/>+ </context>+ <context name="%w[_rule" attribute="Raw String">+ <DetectChar attribute="Raw String" context="%w[_nested" char="["/>+ <Detect2Chars attribute="String Char" char="\" char1=" "/>+ <Detect2Chars attribute="String Char" char="\" char1="\"/>+ <Detect2Chars attribute="String Char" char="\" char1="]"/>+ <Detect2Chars attribute="String Char" char="\" char1="["/>+ </context>++ <context name="%w<" attribute="Raw String">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char=">" endRegion="GdlInput"/>+ <IncludeRules context="%w<_rule"/>+ </context>+ <context name="%w<_nested" attribute="Raw String">+ <DetectChar attribute="Raw String" context="#pop" char=">"/>+ <IncludeRules context="%w<_rule"/>+ </context>+ <context name="%w<_rule" attribute="Raw String">+ <DetectChar attribute="Raw String" context="%w<_nested" char="<"/>+ <Detect2Chars attribute="String Char" char="\" char1=" "/>+ <Detect2Chars attribute="String Char" char="\" char1="\"/>+ <Detect2Chars attribute="String Char" char="\" char1=">"/>+ <Detect2Chars attribute="String Char" char="\" char1="<"/>+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="%w_" attribute="Raw String">+ <Detect2Chars attribute="String Char" char="\" char1=" "/>+ <IncludeRules context="%q_"/>+ </context>+++ <!-- apostrophed string specific contexts -->++ <context name="%q(" attribute="Raw String">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char=")" endRegion="GdlInput"/>+ <IncludeRules context="%q(_rule"/>+ </context>+ <context name="%q(_nested" attribute="Raw String">+ <DetectChar attribute="Raw String" context="#pop" char=")"/>+ <IncludeRules context="%q(_rule"/>+ </context>+ <context name="%q(_rule" attribute="Raw String">+ <DetectChar attribute="Raw String" context="%q(_nested" char="("/>+ <Detect2Chars attribute="String Char" char="\" char1="\"/>+ <Detect2Chars attribute="String Char" char="\" char1=")"/>+ <Detect2Chars attribute="String Char" char="\" char1="("/>+ </context>++ <context name="%q{" attribute="Raw String">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char="}" endRegion="GdlInput"/>+ <IncludeRules context="%q{_rule"/>+ </context>+ <context name="%q{_nested" attribute="Raw String">+ <DetectChar attribute="Raw String" context="#pop" char="}"/>+ <IncludeRules context="%q{_rule"/>+ </context>+ <context name="%q{_rule" attribute="Raw String">+ <DetectChar attribute="Raw String" context="%q{_nested" char="{"/>+ <Detect2Chars attribute="String Char" char="\" char1="\"/>+ <Detect2Chars attribute="String Char" char="\" char1="}"/>+ <Detect2Chars attribute="String Char" char="\" char1="{"/>+ </context>++ <context name="%q[" attribute="Raw String">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char="]" endRegion="GdlInput"/>+ <IncludeRules context="%q[_rule"/>+ </context>+ <context name="%q[_nested" attribute="Raw String">+ <DetectChar attribute="Raw String" context="#pop" char="]"/>+ <IncludeRules context="%q[_rule"/>+ </context>+ <context name="%q[_rule" attribute="Raw String">+ <DetectChar attribute="Raw String" context="%q[_nested" char="["/>+ <Detect2Chars attribute="String Char" char="\" char1="\"/>+ <Detect2Chars attribute="String Char" char="\" char1="]"/>+ <Detect2Chars attribute="String Char" char="\" char1="["/>+ </context>++ <context name="%q<" attribute="Raw String">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char=">" endRegion="GdlInput"/>+ <IncludeRules context="%q<_rule"/>+ </context>+ <context name="%q<_nested" attribute="Raw String">+ <DetectChar attribute="Raw String" context="#pop" char=">"/>+ <IncludeRules context="%q<_rule"/>+ </context>+ <context name="%q<_rule" attribute="Raw String">+ <DetectChar attribute="Raw String" context="%q<_nested" char="<"/>+ <Detect2Chars attribute="String Char" char="\" char1="\"/>+ <Detect2Chars attribute="String Char" char="\" char1=">"/>+ <Detect2Chars attribute="String Char" char="\" char1="<"/>+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="%q_" attribute="Raw String">+ <Detect2Chars attribute="Raw String" char="\" char1="\"/>+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char="1" dynamic="true" endRegion="GdlInput" />+ <StringDetect attribute="String Char" String="\%1" dynamic="true"/>+ </context>+++ <!-- symbol string specific contexts -->++ <context name="%s(" attribute="Symbol">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char=")" endRegion="GdlInput"/>+ <IncludeRules context="%s(_rule"/>+ </context>+ <context name="%s(_nested" attribute="Symbol">+ <DetectChar attribute="Symbol" context="#pop" char=")"/>+ <IncludeRules context="%s(_rule"/>+ </context>+ <context name="%s(_rule" attribute="Symbol">+ <DetectChar attribute="Symbol" context="%s(_nested" char="("/>+ <Detect2Chars attribute="String Char" char="\" char1="\"/>+ <Detect2Chars attribute="String Char" char="\" char1=")"/>+ <Detect2Chars attribute="String Char" char="\" char1="("/>+ </context>++ <context name="%s{" attribute="Symbol">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char="}" endRegion="GdlInput"/>+ <IncludeRules context="%s{_rule"/>+ </context>+ <context name="%s{_nested" attribute="Symbol">+ <DetectChar attribute="Symbol" context="#pop" char="}"/>+ <IncludeRules context="%s{_rule"/>+ </context>+ <context name="%s{_rule" attribute="Symbol">+ <DetectChar attribute="Symbol" context="%s{_nested" char="{"/>+ <Detect2Chars attribute="String Char" char="\" char1="\"/>+ <Detect2Chars attribute="String Char" char="\" char1="}"/>+ <Detect2Chars attribute="String Char" char="\" char1="{"/>+ </context>++ <context name="%s[" attribute="Symbol">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char="]" endRegion="GdlInput"/>+ <IncludeRules context="%s[_rule"/>+ </context>+ <context name="%s[_nested" attribute="Symbol">+ <DetectChar attribute="Symbol" context="#pop" char="]"/>+ <IncludeRules context="%s[_rule"/>+ </context>+ <context name="%s[_rule" attribute="Symbol">+ <DetectChar attribute="Symbol" context="%s[_nested" char="["/>+ <Detect2Chars attribute="String Char" char="\" char1="\"/>+ <Detect2Chars attribute="String Char" char="\" char1="]"/>+ <Detect2Chars attribute="String Char" char="\" char1="["/>+ </context>++ <context name="%s<" attribute="Symbol">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char=">" endRegion="GdlInput"/>+ <IncludeRules context="%s<_rule"/>+ </context>+ <context name="%s<_nested" attribute="Symbol">+ <DetectChar attribute="Symbol" context="#pop" char=">"/>+ <IncludeRules context="%s<_rule"/>+ </context>+ <context name="%s<_rule" attribute="Symbol">+ <DetectChar attribute="Symbol" context="%s<_nested" char="<"/>+ <Detect2Chars attribute="String Char" char="\" char1="\"/>+ <Detect2Chars attribute="String Char" char="\" char1=">"/>+ <Detect2Chars attribute="String Char" char="\" char1="<"/>+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="%s_" attribute="Symbol">+ <Detect2Chars attribute="Symbol" char="\" char1="\"/>+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char="1" dynamic="true" endRegion="GdlInput" />+ <StringDetect attribute="String Char" String="\%1" dynamic="true"/>+ </context>+++ <!-- regular expression specific contexts -->++ <context name="%r(" attribute="String">+ <DetectChar attribute="GDL input" context="#pop!RegExMode" char=")" endRegion="GdlInput" /> <IncludeRules context="%r(_rule"/>+ </context>+ <context name="%r(_nested" attribute="String">+ <DetectChar attribute="String" context="#pop" char=")"/>+ <IncludeRules context="%r(_rule"/>+ </context>+ <context name="%r(_rule" attribute="String">+ <DetectChar attribute="String" context="%r(_nested" char="("/>+ <IncludeRules context="RegExSpecial"/>+ </context>++ <context name="%r{" attribute="String">+ <DetectChar attribute="GDL input" context="#pop!RegExMode" char="}" endRegion="GdlInput" />+ <IncludeRules context="%r{_rule"/>+ </context>+ <context name="%r{_nested" attribute="String">+ <DetectChar attribute="String" context="#pop" char="}"/>+ <IncludeRules context="%r{_rule"/>+ </context>+ <context name="%r{_rule" attribute="String">+ <DetectChar attribute="String" context="%r{_nested" char="{"/>+ <IncludeRules context="RegExSpecial"/>+ </context>++ <context name="%r[" attribute="String">+ <DetectChar attribute="GDL input" context="#pop!RegExMode" char="]" endRegion="GdlInput" />+ <IncludeRules context="%r[_rule"/>+ </context>+ <context name="%r[_nested" attribute="String">+ <DetectChar attribute="String" context="#pop" char="]"/>+ <IncludeRules context="%r[_rule"/>+ </context>+ <context name="%r[_rule" attribute="String">+ <DetectChar attribute="String" context="%r[_nested" char="["/>+ <IncludeRules context="RegExSpecial"/>+ </context>++ <context name="%r<" attribute="String">+ <DetectChar attribute="GDL input" context="#pop!RegExMode" char=">" endRegion="GdlInput" />+ <IncludeRules context="%r<_rule"/>+ </context>+ <context name="%r<_nested" attribute="String">+ <DetectChar attribute="String" context="#pop" char=">"/>+ <IncludeRules context="%r<_rule"/>+ </context>+ <context name="%r<_rule" attribute="String">+ <DetectChar attribute="String" context="%r<_nested" char="<"/>+ <IncludeRules context="RegExSpecial"/>+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="%r_" attribute="Regular Expression">+ <DetectChar attribute="GDL input" context="#pop!RegExMode" char="1" dynamic="true" endRegion="GdlInput" />+ <StringDetect attribute="String Char" String="\%1" dynamic="true" />+ <IncludeRules context="RegExSpecial"/>+ </context>+++ <!-- shell command specific contexts -->++ <context name="%x(" attribute="Command">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char=")" endRegion="GdlInput" />+ <IncludeRules context="%x(_rule"/>+ </context>+ <context name="%x(_nested" attribute="Command">+ <DetectChar attribute="Command" context="#pop" char=")"/>+ <IncludeRules context="%x(_rule"/>+ </context>+ <context name="%x(_rule" attribute="Command">+ <DetectChar attribute="Command" context="%x(_nested" char="("/>+ <IncludeRules context="DQuoteSpecial"/>+ </context>++ <context name="%x{" attribute="Command">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char="}" endRegion="GdlInput" />+ <IncludeRules context="%x{_rule"/>+ </context>+ <context name="%x{_nested" attribute="Command">+ <DetectChar attribute="Command" context="#pop" char="}"/>+ <IncludeRules context="%x{_rule"/>+ </context>+ <context name="%x{_rule" attribute="Command">+ <DetectChar attribute="Command" context="%x{_nested" char="{"/>+ <IncludeRules context="DQuoteSpecial"/>+ </context>++ <context name="%x[" attribute="Command">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char="]" endRegion="GdlInput" />+ <IncludeRules context="%x[_rule"/>+ </context>+ <context name="%x[_nested" attribute="Command">+ <DetectChar attribute="Command" context="#pop" char="]"/>+ <IncludeRules context="%x[_rule"/>+ </context>+ <context name="%x[_rule" attribute="Command">+ <DetectChar attribute="Command" context="%x[_nested" char="["/>+ <IncludeRules context="DQuoteSpecial"/>+ </context>++ <context name="%x<" attribute="Command">+ <DetectChar attribute="GDL input" context="#pop#pop!Op1" char=">" endRegion="GdlInput" />+ <IncludeRules context="%x<_rule"/>+ </context>+ <context name="%x<_nested" attribute="Command">+ <DetectChar attribute="Command" context="#pop" char=">"/>+ <IncludeRules context="%x<_rule"/>+ </context>+ <context name="%x<_rule" attribute="Command">+ <DetectChar attribute="Command" context="%x<_nested" char="<"/>+ <IncludeRules context="DQuoteSpecial"/>+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="%x_" attribute="Command">+ <IncludeRules context="%Q_"/>+ </context>++ <!-- END of General delimited input support -->++ <!-- handle data in script -->+ <context name="DATA" attribute="Data"/>+ </contexts>++ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal"/>++ <itemData name="Keyword" defStyleNum="dsControlFlow"/>+ <itemData name="Attribute Definition" defStyleNum="dsOthers"/>+ <itemData name="Access Control" defStyleNum="dsAttribute" bold="1"/> <!-- #0000FF -->+ <itemData name="Definition" defStyleNum="dsKeyword"/>+ <itemData name="Pseudo variable" defStyleNum="dsDecVal"/>++ <itemData name="Dec" defStyleNum="dsDecVal"/>+ <itemData name="Float" defStyleNum="dsFloat"/>+ <itemData name="Octal" defStyleNum="dsBaseN"/>+ <itemData name="Hex" defStyleNum="dsBaseN"/>+ <itemData name="Bin" defStyleNum="dsBaseN"/>+ <itemData name="Number Suffix" defStyleNum="dsBuiltIn"/>++ <itemData name="Symbol" defStyleNum="dsWarning" bold="0" underline="0"/> <!-- #D40000 -->+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="String Char" defStyleNum="dsSpecialChar" spellChecking="false"/>+ <itemData name="Raw String" defStyleNum="dsVerbatimString" /> <!-- #DD4A4A -->+ <itemData name="Char Literal" defStyleNum="dsSpecialChar" spellChecking="false"/>+ <itemData name="Char" defStyleNum="dsChar"/>++ <itemData name="Command" defStyleNum="dsInformation"/> <!-- #AA3000 -->+ <itemData name="Message" defStyleNum="dsAttribute" bold="0"/> <!-- #4000A7 -->+ <itemData name="Regular Expression" defStyleNum="dsSpecialString" spellChecking="false"/> <!-- #4A5704 -->+ <itemData name="Substitution" defStyleNum="dsSpecialChar"/>+ <itemData name="Data" defStyleNum="dsNormal"/>+ <!-- short for 'general delimited input' -->+ <itemData name="GDL input" defStyleNum="dsOthers" />++ <itemData name="Default globals" defStyleNum="dsVariable" bold="1"/> <!-- #C00000 -->+ <itemData name="Global Variable" defStyleNum="dsVariable"/> <!-- #C00000 -->+ <itemData name="Global Constant" defStyleNum="dsConstant" bold="1"/> <!-- #bb1188 -->+ <itemData name="Constant" defStyleNum="dsDataType"/>+ <itemData name="Constant Value" defStyleNum="dsConstant" bold="0"/> <!-- #bb1188 -->+ <itemData name="Kernel methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->+ <itemData name="Module mixin methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->+ <itemData name="Member" defStyleNum="dsAttribute"/>+ <itemData name="Instance Variable" defStyleNum="dsOthers"/>+ <itemData name="Class Variable" defStyleNum="dsOthers"/>++ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Blockcomment" defStyleNum="dsComment"/>++ <itemData name="Here Document" defStyleNum="dsDocumentation"/>++ <itemData name="Delimiter" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->+ <itemData name="Operator" defStyleNum="dsOperator" bold="1"/> <!-- #FF9FEC -->++ <itemData name="Error" defStyleNum="dsError"/> </itemDatas> </highlighting> <general>
xml/swift.xml view
@@ -10,7 +10,7 @@ <language name="Swift"- version="1"+ version="2" kateversion="5.62" section="Sources" extensions="*.swift"@@ -139,8 +139,7 @@ <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/> <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/> - <Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>- <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/>+ <IncludeRules context="FindComments"/> <AnyChar attribute="Symbol" context="#stay" String="()[]&|+,-/*<=>;!%?:~^"/> @@ -172,6 +171,11 @@ <DetectIdentifier attribute="Normal Text"/> </context> + <context attribute="Normal Text" lineEndContext="#stay" name="FindComments">+ <Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>+ <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="Number"> <IncludeRules context="FindFloat"/> <RegExpr attribute="Hex" context="#pop" String="\b0[xX]&hex;[lL]?\b"/>@@ -251,16 +255,20 @@ <DetectIdentifier attribute="Variable" context="#pop" /> </context> - <context name="TypeDeclaration" lineEndContext="#stay" attribute="Normal Text">+ <context name="TypeDeclaration" lineEndContext="#stay" attribute="Normal Text" fallthroughContext="#pop"> <keyword attribute="Keyword" context="#stay" String="keywords"/> <DetectChar attribute="Symbol" context="TypeParameters" char="<" /> <DetectChar attribute="Symbol" context="Parameters" char="(" /> <DetectChar attribute="Symbol" context="SuperTypes" char=":" /> <DetectChar attribute="Symbol" context="#pop" char="{" lookAhead="true" />++ <DetectIdentifier attribute="Normal Text" context="#stay"/>+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <IncludeRules context="FindComments"/> </context> - <context name="SuperTypes" lineEndContext="#stay" attribute="Normal Text">+ <context name="SuperTypes" lineEndContext="#stay" attribute="Normal Text" fallthroughContext="#pop"> <keyword attribute="Keyword" context="#pop#pop" String="keywords" lookAhead="true" /> <DetectChar attribute="Symbol" context="#stay" char="," />@@ -269,18 +277,21 @@ <DetectChar attribute="Symbol" context="TypeParameters" char="<" /> <DetectIdentifier attribute="Data Type" context="#stay"/>+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <IncludeRules context="FindComments"/> </context> - <context name="FunctionDeclaration" lineEndContext="#stay" attribute="Normal Text">+ <context name="FunctionDeclaration" lineEndContext="#stay" attribute="Normal Text" fallthroughContext="#pop"> <keyword attribute="Keyword" context="#stay" String="keywords"/> <DetectChar attribute="Symbol" context="#stay" char="." /> <DetectChar attribute="Symbol" context="Parameters" char="(" /> <DetectChar attribute="Symbol" context="TypeParameters" char="<" /> <DetectChar attribute="Symbol" context="TypeName" char=":" />-- <AnyChar attribute="Symbol" context="#pop" String="{=" lookAhead="true" />+ <AnyChar attribute="Normal Text" String="->[]?" /> <DetectIdentifier attribute="Function" context="#stay"/>+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <IncludeRules context="FindComments"/> </context> <context name="TypeParameters" lineEndContext="#stay" attribute="Normal Text">@@ -293,6 +304,8 @@ <DetectChar attribute="Symbol" context="TypeParameters" char="<" /> <DetectIdentifier attribute="Data Type" context="DataTypeSuffix"/>+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <IncludeRules context="FindComments"/> </context> <context name="DataTypeSuffix" lineEndContext="#pop" attribute="Normal Text" fallthroughContext="#pop"> <DetectChar attribute="Symbol" context="#pop" char="?"/>@@ -305,6 +318,8 @@ <DetectChar attribute="Symbol" context="Expression" char="=" /> <DetectIdentifier attribute="Variable" context="#stay"/> <DetectChar attribute="Symbol" context="#stay" char=","/>+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <IncludeRules context="FindComments"/> </context> <context name="TypeName" lineEndContext="#stay" attribute="Normal Text">@@ -339,8 +354,7 @@ <DetectChar context="String" char=""" lookAhead="1"/> <DetectChar context="Char" char="'" lookAhead="1"/> - <Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>- <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/>+ <IncludeRules context="FindComments"/> <DetectIdentifier attribute="Normal Text"/> </context>@@ -357,12 +371,14 @@ <context attribute="Comment" lineEndContext="#pop" name="CommentSingleLine"> <DetectSpaces /> <IncludeRules context="##Comments"/>+ <DetectIdentifier /> </context> <context attribute="Comment" lineEndContext="#stay" name="CommentMultiline"> <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/> <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/> <DetectSpaces /> <IncludeRules context="##Comments"/>+ <DetectIdentifier /> </context> </contexts>
xml/xml.xml view
@@ -6,7 +6,7 @@ <!ENTITY name "(?![0-9])[\w_:][\w.:_-]*"> <!ENTITY entref "&(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);"> ]>-<language name="XML" version="20" kateversion="5.0" section="Markup" extensions="*.page;*.docbook;*.xml;*ui.rc;*.daml;*.rdf;*.rss;*.xspf;*.xsd;*.svg;*.ui;*.kcfg;*.qrc;*.wsdl;*.scxml;*.xbel;*.dae;*.sch;*.brd" mimetype="text/xml;text/book;text/daml;text/rdf;application/rss+xml;application/xspf+xml;image/svg+xml;application/x-designer;application/x-xbel;application/xml;application/scxml+xml;application/vnd.oasis.opendocument.text-flat-xml;application/vnd.oasis.opendocument.graphics-flat-xml;application/vnd.oasis.opendocument.presentation-flat-xml;application/vnd.oasis.opendocument.spreadsheet-flat-xml;application/gpx+xml" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">+<language name="XML" version="22" kateversion="5.0" section="Markup" extensions="*.page;*.docbook;*.xml;*ui.rc;*.daml;*.rdf;*.rss;*.xspf;*.xsd;*.svg;*.ui;*.kcfg;*.qrc;*.wsdl;*.scxml;*.xbel;*.dae;*.sch;*.brd;*.fb2" mimetype="text/xml;text/book;text/daml;text/rdf;application/rss+xml;application/xspf+xml;image/svg+xml;application/x-designer;application/x-xbel;application/xml;application/scxml+xml;application/vnd.oasis.opendocument.text-flat-xml;application/vnd.oasis.opendocument.graphics-flat-xml;application/vnd.oasis.opendocument.presentation-flat-xml;application/vnd.oasis.opendocument.spreadsheet-flat-xml;application/gpx+xml;application/x-fictionbook+xml" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL"> <highlighting> <contexts>@@ -99,6 +99,7 @@ </context> <context name="Doctype Markupdecl VariableName" attribute="Other Text" lineEndContext="#pop!Doctype Markupdecl" fallthrough="true" fallthroughContext="#pop!Doctype Markupdecl"> <DetectSpaces />+ <DetectChar attribute="Doctype Symbols" char="%"/> <RegExpr attribute="Doctype Name" context="#pop!Doctype Markupdecl" String="&name;" /> </context> <context name="Doctype Markupdecl" attribute="Other Text" lineEndContext="#stay">
xml/yaml.xml view
@@ -53,8 +53,8 @@ <!-- Modifications (YAML 1.2), values & support for literal/folded style: Nibaldo González S. <nibgonz@gmail.com> These modifications are under the MIT license. //-->-<language name="YAML" alternativeNames="YML" version="12" kateversion="5.0" section="Markup"- extensions="*.yaml;*.yml" mimetype="text/yaml" priority="9"+<language name="YAML" alternativeNames="YML" version="13" kateversion="5.0" section="Markup"+ extensions="*.yaml;*.yml;.clang-format;.clang-tidy" mimetype="text/yaml" priority="9" author="Dr Orlovsky MA (dr.orlovsky@gmail.com), Nibaldo González (nibgonz@gmail.com)" license="LGPL"> <highlighting> <contexts>
xml/zig.xml view
@@ -7,7 +7,7 @@ <!ENTITY exp_float "(?:[eE][+-]?&dec_int;)"> <!ENTITY exp_hexfloat "(?:[pP][-+]?&dec_int;)"> ]>-<language name="Zig" section="Sources" version="2" kateversion="5.62" indenter="cstyle" extensions="*.zig" mimetype="text/x-zig" priority="1" author="Waqar Ahmed (waqar.17a@gmail.com)" license="MIT">+<language name="Zig" section="Sources" version="3" kateversion="5.62" indenter="cstyle" extensions="*.zig" mimetype="text/x-zig" priority="1" author="Waqar Ahmed (waqar.17a@gmail.com)" license="MIT"> <highlighting> <list name="keywords"> <item>addrspace</item>@@ -268,6 +268,7 @@ <DetectChar attribute="Decimal" context="#pop!SuffixNumber" char="0"/> </context> <context name="SuffixNumber" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">+ <StringDetect attribute="Symbol" String=".." context="#pop"/> <!-- in `[0..a]` --> <AnyChar attribute="Error" String=".0123456789" context="#pop"/> <DetectIdentifier attribute="Error" context="#pop"/> </context>
xml/zsh.xml view
@@ -69,16 +69,22 @@ <!ENTITY arithmetic_as_subshell "\(((?:[^`'"()$]++|\$\{[^`'"(){}$]+\}|\$(?=[^{`'"()])|&bq_string;|\((?1)(?:[)]|(?=['"])))++)(?:[)](?=$|[^)])|["'])"> - <!ENTITY unary_operators "-[abcdefghknoprstuvwxzLOGNS]&eos;">- <!ENTITY binary_operators "(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)&eos;">+ <!ENTITY unary_operators "-[abcdefghknoprstuvwxzLOGNS](?=\\?$|[ &tab;])">+ <!ENTITY binary_operators "(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)(?=\\?$|[ &tab;])"> <!ENTITY dblbracket_close "\]\](?=($|[ &tab;;|&)]))"> <!ENTITY int "(?:[0-9]++[_0-9]*+)"> <!ENTITY exp "(?:[eE][-+]?∫)"> ]>-<language name="Zsh" version="32" kateversion="5.79" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT"> +<!--+https://zsh.sourceforge.io/releases.html+current: 5.9+-->++<language name="Zsh" version="34" kateversion="5.79" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">+ <highlighting> <list name="keywords"> <item>continue</item>@@ -1030,7 +1036,7 @@ <DetectSpaces attribute="String SingleQ"/> <DetectIdentifier attribute="String SingleQ"/> <DetectChar attribute="String SingleQ" context="#pop" char="'"/>- <RegExpr attribute="String Escape" context="#stay" String="\\(?:[abefnrtv\\']|[0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)"/>+ <RegExpr attribute="String Escape" context="#stay" String="\\(?:[abeEfnrtv\\']|[0-7]{1,3}|x[A-Fa-f0-9]{1,2}|u[A-Fa-f0-9]{1,4}|U[A-Fa-f0-9]{1,8}|c.)?"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="FindWord">@@ -1546,13 +1552,19 @@ <DetectChar attribute="Normal Text" context="#pop!ExprBracketValueRecBrace" char="{"/> </context> - <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2" fallthroughContext="ExprBracketValue">+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2" fallthroughContext="#pop!ExprBracketParam2_Value">+ <LineContinue attribute="Escape" context="SkipSpaces"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2_Value" fallthroughContext="ExprBracketValue"> <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam3"/> <AnyChar context="TestMaybeBinary" String="-=!" lookAhead="1"/> <IncludeRules context="FindExprBracketEnd"/> </context> - <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3" fallthroughContext="ExprBracketValue">+ <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3" fallthroughContext="#pop!ExprBracketParam3_Value">+ <LineContinue attribute="Escape" context="SkipSpaces"/>+ </context>+ <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3_Value" fallthroughContext="ExprBracketValue"> <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketFinal"/> <IncludeRules context="FindExprBracketEnd"/> </context>@@ -1576,7 +1588,11 @@ <RegExpr attribute="Expression" context="#pop" String="&binary_operators;"/> </context> + <context attribute="Normal Text" lineEndContext="#pop" name="SkipSpaces" fallthroughContext="#pop">+ <DetectSpaces context="#pop"/>+ </context> + <!-- ExprDblBracket consumes an expression till ]] --> <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket" fallthroughContext="#pop!ExprDblBracketNot"> <DetectSpaces attribute="Normal Text" context="#stay"/>@@ -1672,6 +1688,7 @@ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2" fallthroughContext="#pop!ExprDblBracketParam2_2"> <DetectSpaces attribute="Normal Text" context="#stay"/> <DetectChar attribute="Comment" context="Comment" char="#"/>+ <LineContinue attribute="Escape"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2_2" fallthroughContext="ExprDblBracketValuePattern"> <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>@@ -1689,8 +1706,7 @@ </context> <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3" fallthroughContext="#pop!ExprDblBracketParam3_2">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Comment" context="Comment" char="#"/>+ <IncludeRules context="ExprDblBracketParam2"/> </context> <context attribute="Normal Text" lineEndContext="#pop!ExprDblBracketFinal" name="ExprDblBracketParam3_2" fallthroughContext="ExprDblBracketValuePattern"> <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>