From: <ct...@us...> - 2013-04-22 11:24:00
|
Revision: 1950 http://sourceforge.net/p/colorer/svn/1950 Author: ctapmex Date: 2013-04-22 11:23:56 +0000 (Mon, 22 Apr 2013) Log Message: ----------- Major update to D scheme Modified Paths: -------------- trunk/schemes/hrc/changelog trunk/schemes/hrc/hrc/CHANGELOG trunk/schemes/hrc/hrc/base/d.hrc trunk/schemes/hrc/hrc/base/d2-phobos.ent.hrc trunk/schemes/hrc/hrc/proto.hrc trunk/schemes/hrc/hrc/proto.hrc.far trunk/schemes/hrc/test/_valid/other/d-sample.d.html trunk/schemes/hrc/test/_valid/other/mediawiki.mw.html trunk/schemes/hrc/test/other/d-sample.d Added Paths: ----------- trunk/schemes/hrc/hrc/misc/ddoc.hrc Modified: trunk/schemes/hrc/changelog =================================================================== --- trunk/schemes/hrc/changelog 2013-04-22 09:50:39 UTC (rev 1949) +++ trunk/schemes/hrc/changelog 2013-04-22 11:23:56 UTC (rev 1950) @@ -1,5 +1,9 @@ $Revision$ $Author$ $Date$ + - доработка D + +#Revision: 1948 + #Author: ctapmex Date: 2013-04-22 15:44:54 +0600 (Пн, 22 апр 2013) - ActionScript: Fix/improve outlining, regexp/comments #Revision: 1947 Modified: trunk/schemes/hrc/hrc/CHANGELOG =================================================================== --- trunk/schemes/hrc/hrc/CHANGELOG 2013-04-22 09:50:39 UTC (rev 1949) +++ trunk/schemes/hrc/hrc/CHANGELOG 2013-04-22 11:23:56 UTC (rev 1950) @@ -2,6 +2,7 @@ New: - ASASM (ActionScript 3 assembler, RABCDAsm variant) from Vladimir Panteleev - MediaWiki syntax from Vladimir Panteleev + - Major update to D scheme (Vladimir Panteleev) Fixed: - jscript: added keywords (Vladimir Panteleev) - ActionScript: Fix/improve outlining, regexp/comments (Vladimir Panteleev) Modified: trunk/schemes/hrc/hrc/base/d.hrc =================================================================== --- trunk/schemes/hrc/hrc/base/d.hrc 2013-04-22 09:50:39 UTC (rev 1949) +++ trunk/schemes/hrc/hrc/base/d.hrc 2013-04-22 11:23:56 UTC (rev 1950) @@ -10,7 +10,7 @@ xsi:schemaLocation="http://colorer.sf.net/2003/hrc http://colorer.sf.net/2003/hrc.xsd" > -<type name="d"> +<type name='d'> <annotation><documentation> D syntax description </documentation><contributors><![CDATA[ @@ -18,26 +18,20 @@ Vladimir Panteleev <the...@gm...> ]]></contributors> <appinfo><todo> - - Fix delegate outlines (how?) - - Figure out highlighting of properties + No known issues. </todo></appinfo> </annotation> <region name='comment' parent='def:Comment'/> -<region name='comment.quote' parent='comment'/> +<region name='comment.delim' parent='comment'/> <region name='ddoc' parent='def:CommentDoc'/> -<region name='ddoc.quote' parent='ddoc'/> -<region name='ddoc.sectiontitle' parent='def:String'/> -<region name='ddoc.macro' parent='ddoc'/> -<region name='ddoc.macro.symbol' parent='def:Comment'/> -<region name='ddoc.macro.quote' parent='def:Comment'/> -<region name='ddoc.example' parent='def:Text'/> -<region name='ddoc.example.quote' parent='ddoc'/> +<region name='ddoc.delim' parent='ddoc'/> +<region name='ddoc.keyword' parent='def:Comment'/> <region name='char.esc' parent='c:StringEscape'/> <region name='char' parent='c:Character'/> <region name='string' parent='def:String'/> -<region name='string.quote' parent='def:StringEdge'/> +<region name='string.delim' parent='def:StringEdge'/> <region name='string.pref' parent='regexp:SpecArea'/> <region name='string.format' parent='def:VarStrong'/> <region name='string.token' parent='def:Text'/> @@ -86,10 +80,10 @@ <region name='module.out' parent='java:PackageOutline'/> <region name='import.out' parent='java:ImportOutline'/> <region name='class.out' parent='cpp:ClassOutline'/> -<region name='struct.out' parent="c:StructOutline"/> -<region name='tpl.out' parent="struct.out"/> +<region name='struct.out' parent='c:StructOutline'/> +<region name='tpl.out' parent='struct.out'/> <region name='iface.out' parent='class.out'/> -<region name='enum.out' parent="c:EnumOutline"/> +<region name='enum.out' parent='c:EnumOutline'/> <region name='version.out' parent='out'/> <region name='fun.out' parent='c:FuncOutline'/> @@ -114,32 +108,37 @@ <inherit scheme='def:Comment'/> </scheme> +<entity name='ddoc.lead' value='(^|~)\s*(?{ddoc.delim}[*+]\s*)?'/> + +<scheme name='ddoc.lead'> + <regexp match='/^\s*([*+]|\/{3,})/' region1='ddoc.delim'/> +</scheme> + <scheme name='ddoc.content'> - <inherit scheme='comment.content'/> - <regexp match='/^\s*\S+:/' region='ddoc.sectiontitle'/> - <block scheme='ddoc.content' region='ddoc'> - <start match='/(\()/' region1='def:PairStart'/> - <end match='/(\))/' region1='def:PairEnd'/> - </block> - <block scheme='ddoc.content' region='ddoc.macro'> - <start match='/(\$\()(\w+)/' region0='ddoc.macro.quote' region1='def:PairStart' region2='ddoc.macro.symbol'/> - <end match='/(\))/' region0='ddoc.macro.quote' region1='def:PairEnd'/> - </block> - <block scheme='d.lang' region='ddoc.example'> - <start match='/(^-{3,}$)/' region0='ddoc.example.quote' region1='def:PairStart'/> - <end match='/(^-{3,}$)/' region0='ddoc.example.quote' region1='def:PairEnd'/> - </block> + <inherit scheme='ddoc:content'> + <virtual scheme='ddoc:lead' subst-scheme='ddoc.lead'/> + </inherit> </scheme> +<scheme name='ddoc.rec'> + <inherit scheme='ddoc'/> + <inherit scheme='comment.rec.block'/> +</scheme> +<scheme name='ddoc'> + <regexp match='/~\s*ditto\b/' region='ddoc.keyword'/> + <regexp match='/%ddoc.lead;\m\w+:/' region='ddoc:sectiontitle'/> + <inherit scheme='ddoc.content'/> +</scheme> + <scheme name='comment.rec.block'> <block scheme='ddoc.rec' region='ddoc'> - <start match='/(\/\+\+)/' region0='ddoc.quote' region1='def:PairStart'/> - <end match='/(\+\/)/' region0='ddoc.quote' region1='def:PairEnd'/> + <start match='/(\/\+{2,})/' region0='ddoc.delim' region1='def:PairStart'/> + <end match='/(\++\/)/' region0='ddoc.delim' region1='def:PairEnd'/> </block> <block scheme='comment.rec' region='comment'> - <start match='/(\/\+)/' region0='comment.quote' region1='def:PairStart'/> - <end match='/(\+\/)/' region0='comment.quote' region1='def:PairEnd'/> + <start match='/(\/\+)/' region0='comment.delim' region1='def:PairStart'/> + <end match='/(\+\/)/' region0='comment.delim' region1='def:PairEnd'/> </block> </scheme> @@ -148,27 +147,22 @@ <inherit scheme='comment.rec.block'/> </scheme> -<scheme name='ddoc.rec'> - <inherit scheme='ddoc.content'/> - <inherit scheme='comment.rec.block'/> -</scheme> - <scheme name='comment'> <block start='/(\/\/\/)/' end='/$/' - scheme='ddoc.content' region='ddoc' region00='ddoc.quote' + scheme='ddoc' region='ddoc' region00='ddoc.delim' /> - <block scheme='ddoc.content' region='ddoc'> - <start match='/(\/\*\*)/' region0='ddoc.quote' region1='def:PairStart'/> - <end match='/(\*\/)/' region0='ddoc.quote' region1='def:PairEnd'/> + <block scheme='ddoc' region='ddoc'> + <start match='/(\/\*{2,})/' region0='ddoc.delim' region1='def:PairStart'/> + <end match='/(\*+\/)/' region0='ddoc.delim' region1='def:PairEnd'/> </block> <inherit scheme='comment.rec.block'/> <block start='/(\/\/)/' end='/$/' - scheme='comment.content' region='comment' region00='comment.quote' + scheme='comment.content' region='comment' region00='comment.delim' /> <block scheme='comment.content' region='comment'> - <start match='/(\/\*)/' region0='comment.quote' region1='def:PairStart'/> - <end match='/(\*\/)/' region0='comment.quote' region1='def:PairEnd'/> + <start match='/(\/\*)/' region0='comment.delim' region1='def:PairStart'/> + <end match='/(\*\/)/' region0='comment.delim' region1='def:PairEnd'/> </block> <inherit scheme='comment.rec.block'/> </scheme> @@ -183,7 +177,7 @@ <inherit scheme='error.strong'/> </scheme> -<scheme name='char.quote'> +<scheme name='char.delim'> <block start='/(\\)&\M\w+;/' end='/~\w+\m;/' scheme='char.entity' region='xml:CharRef' region01='char.esc' @@ -197,28 +191,32 @@ </scheme> <scheme name='char.content'> - <inherit scheme='char.quote'/> + <inherit scheme='char.delim'/> <inherit scheme='error.strong'/> </scheme> <scheme name='char'> - <regexp match="/(')([^'\\])(')/" region='string.quote' + <regexp match="/(')([^'\\])(')/" region='string.delim' region1='def:PairStart' region2='string' region3='def:PairEnd' /> <block scheme='char.content' region='string'> - <start match="/(')\M\\/" region0='string.quote' region1='def:PairStart'/> - <end match="/(')/" region0='string.quote' region1='def:PairEnd'/> + <start match="/(')\M\\/" region0='string.delim' region1='def:PairStart'/> + <end match="/(')/" region0='string.delim' region1='def:PairEnd'/> </block> - <inherit scheme='char.quote'/> + <inherit scheme='char.delim'/> </scheme> <scheme name='string.format' if='format-str'> <regexp match='/\%{2}/' region='char.esc'/> - <regexp match='/\%[\-+#0 ]?(\d+|\*)?(\.(\d+|\*)?)?[sbdoxXeEfFgGaA]/' region='string.format'/> + <regexp match='/\%[\-+#0 ]?(\d+|\*)?(\.(\d+|\*)?)?[sbdoxXeEfFgGaA|]/' region='string.format'/> + <block start='/(\%\()/' end='/(\%\))/' scheme='string.format' + region00='string.format' region01='def:PairStart' + region10='string.format' region11='def:PairEnd' + /> </scheme> <scheme name='string.content'> - <inherit scheme='char.quote'/> + <inherit scheme='char.delim'/> <inherit scheme='string.format'/> </scheme> @@ -230,79 +228,93 @@ <scheme name='string.all'> <block scheme='def:empty' region='string'> <start match='/(r)(")/' - region0='string.quote' region1='string.pref' region2='def:PairStart' + region0='string.delim' region1='string.pref' region2='def:PairStart' /> - <end match='/(")%str.post;/' region0='string.quote' region1='def:PairEnd'/> + <end match='/(")%str.post;/' region0='string.delim' region1='def:PairEnd'/> </block> <block scheme='def:empty' region='string'> - <start match='/(`)/' region0='string.quote' region1='def:PairStart'/> - <end match='/(`)%str.post;/' region0='string.quote' region1='def:PairEnd'/> + <start match='/(`)/' region0='string.delim' region1='def:PairStart'/> + <end match='/(`)%str.post;/' region0='string.delim' region1='def:PairEnd'/> </block> <block scheme='string.hex' region='string'> <start match='/(x)(")/' - region0='string.quote' region1='string.pref' region2='def:PairStart' + region0='string.delim' region1='string.pref' region2='def:PairStart' /> - <end match='/(")%str.post;/' region0='string.quote' region1='def:PairEnd'/> + <end match='/(")%str.post;/' region0='string.delim' region1='def:PairEnd'/> </block> <inherit scheme='string.all.d2'/> <block scheme='string.content' region='string'> - <start match='/(")/' region0='string.quote' region1='def:PairStart'/> - <end match='/(")%str.post;/' region0='string.quote' region1='def:PairEnd'/> + <start match='/(")/' region0='string.delim' region1='def:PairStart'/> + <end match='/(")%str.post;/' region0='string.delim' region1='def:PairEnd'/> </block> </scheme> -<scheme name='string.all.d2' if='d2'> +<scheme name='string.all.d2.nest'> <block scheme='d.lang' region='string.token'> <start match='/((q)\{)/' - region0='string.quote' region1='def:PairStart' region2='string.pref' + region0='string.delim' region1='def:PairStart' region2='string.pref' /> - <end match='/(\})/' region0='string.quote' region1='def:PairEnd'/> + <end match='/(\})/' region0='string.delim' region1='def:PairEnd'/> </block> +</scheme> +<scheme name='string.all.d2.flat'> + <regexp match='/((q)\{)/' + region0='string.delim' region2='string.pref'/> + <regexp match='/(\})/' region0='string.delim'/> +</scheme> + +<scheme name='nest.paren' ><block scheme='nest.paren' start='/\(/' end='/\)/' region00='def:PairStart' region10='def:PairEnd'/></scheme> +<scheme name='nest.bracket'><block scheme='nest.bracket' start='/\[/' end='/\]/' region00='def:PairStart' region10='def:PairEnd'/></scheme> +<scheme name='nest.brace' ><block scheme='nest.brace' start='/\{/' end='/\}/' region00='def:PairStart' region10='def:PairEnd'/></scheme> +<scheme name='nest.angular'><block scheme='nest.angular' start='/</' end='/>/' region00='def:PairStart' region10='def:PairEnd'/></scheme> + +<scheme name='string.all.d2' if='d2'> + <inherit scheme='string.all.d2.nest' /> + <block scheme='def:empty' region='string.delimited'> <start match='/(q)("(%id;))$/' - region0='string.quote' region1='string.pref' region2='def:PairStart' region3='string.delimited.name' + region0='string.delim' region1='string.pref' region2='def:PairStart' region3='string.delimited.name' /> - <end match='/^((\y3)")/' region0='string.quote' region1='def:PairEnd' region2='string.delimited.name'/> + <end match='/^((\y3)")/' region0='string.delim' region1='def:PairEnd' region2='string.delimited.name'/> </block> - <!-- TODO: implement nesting --> - <block scheme='def:empty' region='string.delimited'> + <block scheme='nest.paren' region='string.delimited'> <start match='/(q)("(\())/' - region0='string.quote' region1='string.pref' region2='def:PairStart' region3='string.delimited.name' + region0='string.delim' region1='string.pref' region2='def:PairStart' region3='string.delimited.name' /> - <end match='/((\))")/' region0='string.quote' region1='def:PairEnd' region2='string.delimited.name'/> + <end match='/((\))")/' region0='string.delim' region1='def:PairEnd' region2='string.delimited.name'/> </block> - <block scheme='def:empty' region='string.delimited'> + <block scheme='nest.bracket' region='string.delimited'> <start match='/(q)("(\[))/' - region0='string.quote' region1='string.pref' region2='def:PairStart' region3='string.delimited.name' + region0='string.delim' region1='string.pref' region2='def:PairStart' region3='string.delimited.name' /> - <end match='/((\])")/' region0='string.quote' region1='def:PairEnd' region2='string.delimited.name'/> + <end match='/((\])")/' region0='string.delim' region1='def:PairEnd' region2='string.delimited.name'/> </block> - <block scheme='def:empty' region='string.delimited'> + <block scheme='nest.brace' region='string.delimited'> <start match='/(q)("(\{))/' - region0='string.quote' region1='string.pref' region2='def:PairStart' region3='string.delimited.name' + region0='string.delim' region1='string.pref' region2='def:PairStart' region3='string.delimited.name' /> - <end match='/((\})")/' region0='string.quote' region1='def:PairEnd' region2='string.delimited.name'/> + <end match='/((\})")/' region0='string.delim' region1='def:PairEnd' region2='string.delimited.name'/> </block> - <block scheme='def:empty' region='string.delimited'> - <start match='/(q)("(<))/' - region0='string.quote' region1='string.pref' region2='def:PairStart' region3='string.delimited.name' + <block scheme='nest.angular' region='string.delimited'> + <start match='/(q)("(\<))/' + region0='string.delim' region1='string.pref' region2='def:PairStart' region3='string.delimited.name' /> - <end match='/((>)")/' region0='string.quote' region1='def:PairEnd' region2='string.delimited.name'/> + <end match='/((\>)")/' region0='string.delim' region1='def:PairEnd' region2='string.delimited.name'/> </block> <block scheme='def:empty' region='string.delimited'> <start match='/(q)("(\S))/' - region0='string.quote' region1='string.pref' region2='def:PairStart' region3='string.delimited.name' + region0='string.delim' region1='string.pref' region2='def:PairStart' region3='string.delimited.name' /> - <end match='/((\y3)")/' region0='string.quote' region1='def:PairEnd' region2='string.delimited.name'/> + <end match='/((\y3)")/' region0='string.delim' region1='def:PairEnd' region2='string.delimited.name'/> </block> </scheme> @@ -314,72 +326,89 @@ <!-- literal --> -<entity name='int.post' value='(?{postfix}[LUlu]{0,2})'/> -<entity name='float.post' value='(?{postfix}[fFL]i|[fFL]|i)'/> +<!-- Numeric literal grammar, according to http://www.d-programming-language.org/lex.html and http://www.digitalmars.com/d/1.0/lex.html --> -<entity name='hexd' value='[\dA-Fa-f_]'/> +<!--entity name='DecimalDigit' value='(0|%NonZeroDigit;|_)'/--> +<entity name='DecimalDigit' value='[0-9_]'/> +<entity name='DecimalDigits' value='%DecimalDigit;+'/> +<entity name='BinaryDigit' value='[01_]'/> +<entity name='BinaryDigits' value='%BinaryDigit;+'/> +<entity name='OctalDigit' value='[0-7_]'/> +<entity name='OctalDigits' value='%OctalDigit;+'/> +<!--entity name='HexDigit' value='(%DecimalDigit;|a|b|c|d|e|f|A|B|C|D|E|F)'/--> +<entity name='HexDigit' value='[0-9a-fA-F_]'/> +<entity name='HexDigits' value='%HexDigit;+'/> +<entity name='NonZeroDigit' value='[1-9]'/> +<!--entity name='DecimalInteger' value='(0|%NonZeroDigit;|%NonZeroDigit;%DecimalDigits;)'/--> +<entity name='DecimalInteger' value='(0|%NonZeroDigit;%DecimalDigit;*)'/> +<entity name='BinaryInteger' value='(0(?{prefix}[bB])%BinaryDigits;)'/> +<entity name='OctalInteger' value='(0%OctalDigits;)'/> +<entity name='HexadecimalInteger' value='(0(?{prefix}[xX])%HexDigits;)'/> +<!--entity name='IntegerSuffix' value='(?{postfix}(L|u|U|Lu|LU|uL|UL))'/--> +<entity name='IntegerSuffix' value='(?{postfix}L[uU]?|[uU]L?)'/> +<entity name='Integer' value='(%DecimalInteger;|%BinaryInteger;|%OctalInteger;|%HexadecimalInteger;)'/> +<!--entity name='IntegerLiteral' value='(%Integer;%IntegerSuffix;?)'/--> +<entity name='LeadingDecimal' value='(%DecimalInteger;|0%DecimalDigits;)'/> +<entity name='FloatSuffix' value='[fF]'/> +<!--entity name='RealSuffix' value='L'/--> +<entity name='PrecisionSuffix' value='[fFL]'/> +<entity name='ImaginarySuffix' value='i'/> +<!--entity name='Suffix' value='(%FloatSuffix;|%RealSuffix;|%ImaginarySuffix;|%FloatSuffix;%ImaginarySuffix;|%RealSuffix;%ImaginarySuffix;)'/--> +<entity name='SuffixOpt' value='(%PrecisionSuffix;?%ImaginarySuffix;?)'/> +<entity name='HexExponent' value='((?{suffix}[pP][\+\-]?)%DecimalDigits;)'/> +<entity name='HexPrefix' value='(0(?{prefix}[xX]))'/> +<!--entity name='HexFloat' value='(%HexPrefix;%HexDigits;\.%HexDigits;%HexExponent;|%HexPrefix;\.%HexDigits;%HexExponent;|%HexPrefix;%HexDigits;%HexExponent;)'/--> +<entity name='HexFloat' value='(%HexPrefix;((%HexDigits;?\.)?%HexDigits;)%HexExponent;)'/> +<entity name='DecimalExponent' value='((?{suffix}[eE][\+\-]?)%DecimalDigits;)'/> +<!--entity name='DecimalFloat' value='(%LeadingDecimal;\.|%LeadingDecimal;\.%DecimalDigits;|%DecimalDigits;\.%DecimalDigits;%DecimalExponent;|\.%DecimalInteger;|\.%DecimalInteger;%DecimalExponent;|%LeadingDecimal;%DecimalExponent;)'/--> +<entity name='DecimalFloat' value='(%LeadingDecimal;\.%DecimalDigits;?|%DecimalDigits;\.%DecimalDigits;%DecimalExponent;|\.%DecimalInteger;%DecimalExponent;?|%LeadingDecimal;%DecimalExponent;)'/> +<entity name='Float' value='(%DecimalFloat;|%HexFloat;)'/> +<!--entity name='FloatLiteral' value='(%Float;|%Float;%Suffix;|%Integer;%ImaginarySuffix;|%Integer;%FloatSuffix;%ImaginarySuffix;|%Integer;%RealSuffix;%ImaginarySuffix;)'/--> +<!-- spec bug: http://d.puremagic.com/issues/show_bug.cgi?id=9958 --> +<entity name='FloatLiteral' value='(%Float;(?{postfix}%SuffixOpt;)|%Integer;(?{postfix}%PrecisionSuffix;?%ImaginarySuffix;)|%DecimalInteger;(?{postfix}%FloatSuffix;))'/> + +<scheme name='literal.int.octal.d1' unless='d2'> + <regexp match='/\b%OctalInteger;%IntegerSuffix;?\b/' region='def:NumberOct'/> +</scheme> + +<scheme name='literal.int.octal.d2' if='d2'> + <!-- octal literals are deprecated - only allow cases when decimal and octal values are the same --> + <regexp match='/\b0+[1-7]%IntegerSuffix;?\b/' region='def:NumberDec'/> +</scheme> + <scheme name='literal.int'> - <regexp match='/\b0%int.post;\b/' region='def:NumberDec'/> - <regexp match='/\b[1-9][\d_]*%int.post;\b/' region='def:NumberDec'/> - <regexp match='/\b(0)[1-70_]+%int.post;\b/' region='def:NumberOct' region1='prefix'/> - <regexp match='/\b0(b)[10_]+%int.post;\b/i' region='def:NumberBin' region1='prefix'/> - <regexp match='/\b0(x)%hexd;+%int.post;\b/i' region='def:NumberHex' region1='prefix'/> + <regexp match='/\b%DecimalInteger;%IntegerSuffix;?\b/' region='def:NumberDec'/> + <regexp match='/\b%BinaryInteger;%IntegerSuffix;?\b/' region='def:NumberBin'/> + <inherit scheme='literal.int.octal.d1'/> + <inherit scheme='literal.int.octal.d2'/> + <regexp match='/\b%HexadecimalInteger;%IntegerSuffix;?\b/' region='def:NumberHex'/> </scheme> -<entity name='float.exp' value='(?{}(?{suffix}[eE][\-+]?)\d[\d_]*)'/> -<entity name='float.exh' value='(?{}(?{suffix}[pP][\-+]?)\d[\d_]*)'/> - <scheme name='literal.float'> - <regexp - match='/(\b\d[\d_]*\.[\d_]*|\.\d+)%float.exp;?%float.post;?\b/' - region0='def:NumberFloat' - /> - <regexp - match='/\b0(x)(%hexd;+*\.%hexd;*|\.%hexd;+)%float.exh;?%float.post;?\b/i' - region0='def:NumberFloat' region1='prefix' - /> - - <regexp match='/\b([1-9][\d_]*|0_*)(%float.exp;|%float.post;|%float.exp;%float.post;)\b/i' - region0='def:NumberFloat' - /> - <regexp match='/\b0(x)(%hexd;+)(%float.exh;|%float.post;|%float.exh;%float.post;)\b/i' - region0='def:NumberFloat' region1='prefix' - /> - - <!-- - <regexp - match='/\w?~1(\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eE][\+\-]?)\d[\d_]*%float.post;\b/' - region0='def:NumberFloat' region3='suffix' - /> - <regexp - match='/\w?~1(\d[\d_]*\.[\d_]*|\.\d[\d_]*)%float.post;\w?!/' - region0='def:NumberFloat' - /> - - <regexp - match='/\b0([xX])[\dA-Fa-f_]*(\.[\dA-Fa-f_]*)?([pP][\+\-]?)\d[\d_]*%float.post;\b/' - region0='def:NumberFloat' region1='prefix' region3='suffix' - />--> + <regexp match='/\b%FloatLiteral;\b/' region='def:NumberFloat'/> </scheme> <scheme name='literal.bool'> <keywords region='key.bool'> <word name='true'/> <word name='false'/> - <word name='null'/> </keywords> </scheme> +<scheme name='literal.error'> + <regexp match='/\b\d+/' region='def:Error'/> +</scheme> + <scheme name='literal'> <inherit scheme='literal.float'/> <inherit scheme='literal.int'/> <inherit scheme='literal.bool'/> - <regexp match='/\b\d+/' region='def:Error'/> + <inherit scheme='literal.error'/> </scheme> -<scheme name='op'> +<scheme name='op.nest'> <block scheme='d.expr'> <start match='/(\?)/' region0='symb.struct' region1='def:PairStart' @@ -388,8 +417,21 @@ region0='symb.struct' region1='def:PairEnd' /> </block> - - + + <!-- __traits --> + <block scheme='decl.attr.traits'> + <start match='/\b__traits\s*((\())/' + region0='key' region1='symb' region2='def:PairStart' + /> + <end match='/((\)))\s*:?/' + region0='label.mark' region1='symb' region2='def:PairEnd' + /> + </block> +</scheme> + +<scheme name='op'> + <inherit scheme='op.nest' /> + <keywords region='symb.op'> <symb name='/'/> <symb name='/='/> @@ -455,6 +497,33 @@ <inherit scheme='type'/> </scheme> +<scheme name='type.nest'> + <block scheme='type.arr'> + <start match='/(\[)/' + region0='symb' region1='def:PairStart' + /> + <end match='/(\])/' + region0='symb' region1='def:PairEnd' + /> + </block> + <block scheme='type'> + <start match='/(\()/' + region0='symb' region1='def:PairStart' + /> + <end match='/(\))/' + region0='symb' region1='def:PairEnd' + /> + </block> + <block scheme='d.expr'> + <start match='/\b(function|delegate|typeof)\s*((\())/' + region1='key' region2='symb' region3='def:PairStart' + /> + <end match='/((\)))/' + region1='symb' region2='def:PairEnd' + /> + </block> +</scheme> + <scheme name='type'> <keywords region='key.type'> <word name='void'/> @@ -498,31 +567,11 @@ <keywords region='symb'> <symb name='*'/> + <symb name='!'/> + <symb name='.'/> </keywords> - <block scheme='type.arr'> - <start match='/(\[)/' - region0='symb' region1='def:PairStart' - /> - <end match='/(\])/' - region0='symb' region1='def:PairEnd' - /> - </block> - <block scheme='type'> - <start match='/(\()/' - region0='symb' region1='def:PairStart' - /> - <end match='/(\))/' - region0='symb' region1='def:PairEnd' - /> - </block> - <block scheme='d.expr'> - <start match='/\b(function|delegate|typeof)\s*((\())/' - region1='key' region2='symb' region3='def:PairStart' - /> - <end match='/((\)))/' - region1='symb' region2='def:PairEnd' - /> - </block> + + <inherit scheme='type.nest'/> <keywords region='key.type'> <word name='typedef'/> @@ -542,6 +591,7 @@ <scheme name='type.d2' if='d2'> <keywords region='key.type'> + <word name='const'/> <word name='immutable'/> </keywords> </scheme> @@ -584,7 +634,7 @@ <scheme name='tpl.fun.proxy'> <block scheme='decl.class.tpl'> <start match='/(\()/' region0='symb.tpl' region1='def:PairStart' /> - <end match='/(\))/' region0='symb.tpl' region1='def:PairEnd' /> + <end match='/(\))/' region0='symb.tpl' region1='def:PairEnd' /> </block> <inherit scheme='keys'/> </scheme> @@ -592,7 +642,7 @@ <scheme name='tpl.tpl.proxy'> <block scheme='d.expr'> <start match='/(!\()/' region0='symb.tpl' region1='def:PairStart' /> - <end match='/(\))/' region0='symb.tpl' region1='def:PairEnd' /> + <end match='/(\))/' region0='symb.tpl' region1='def:PairEnd' /> </block> <inherit scheme='keys'/> </scheme> @@ -631,6 +681,7 @@ <word name='D'/> <word name='Windows'/> <word name='Pascal'/> + <word name='System'/> </keywords> <inherit scheme='error'/> </scheme> @@ -641,8 +692,8 @@ </scheme> <scheme name='decl.attr.pragma'> - <regexp match='/~\s*(msg|lib)\b/' region='decl'/> - <inherit scheme='d.expr'/> <!-- !!!!!!!!!!!! --> + <regexp match='/~\s*(msg|lib|startaddress)\b/' region='decl'/> + <inherit scheme='d.expr'/> </scheme> <scheme name='decl.attr.vd'> @@ -650,7 +701,47 @@ <inherit scheme='decl.attr.align'/> </scheme> +<scheme name='decl.attr.traits'> + <regexp region='decl'> + / ~ \s* ( isAbstractClass + | isArithmetic + | isAssociativeArray + | isFinalClass + | isPOD + | isNested + | isFloating + | isIntegral + | isScalar + | isStaticArray + | isUnsigned + | isVirtualFunction + | isVirtualMethod + | isAbstractFunction + | isFinalFunction + | isStaticFunction + | isRef + | isOut + | isLazy + | hasMember + | identifier + | getAttributes + | getMember + | getOverloads + | getProtection + | getVirtualFunctions + | getVirtualMethods + | parent + | classInstanceSize + | allMembers + | derivedMembers + | isSame + | compiles + )\b/x + </regexp> + <inherit scheme='d.expr'/> +</scheme> + <scheme name='decl.attr'> <!-- extern --> @@ -732,6 +823,7 @@ | shared | immutable | __gshared + | __traits )\b\s*(:)?/x</regexp> <regexp region1='key' region3='label.mark'> /(@ ( property @@ -757,17 +849,8 @@ <scheme name='decl.class.tpl'> - <inherit scheme='type'/> - <inherit scheme='literal'/> - <keywords region='symb'> - <symb name=','/> - <symb name=':' region='symb.struct'/> - <symb name='='/> - <symb name='...'/> - </keywords> + <inherit scheme='d.expr'/> <inherit scheme='tpl.tpl'/> - <inherit scheme='comment'/> - <inherit scheme='keys'/> </scheme> <scheme name='decl.class'> @@ -776,13 +859,13 @@ <start match='/\b(class)\s+\M(%id;(\s*\(.+?(\)|$))?)/' region1='key' region2='class.out' /> - <end match='/(:)|\{?=/' region1='symb.struct'/> + <end match='/[:\{;]?=/'/> </block> <block scheme='decl.class.decl'> <start match='/\b(struct|union)\s+\M(%id;(\s*\(.+?(\)|$))?)/' region1='key' region2='struct.out' /> - <end match='/\{?=/'/> + <end match='/[\{;]?=/'/> </block> <block scheme='decl.class.decl'> <start match='/\b(template)\s+\M(%id;\s*\(.+?(\)|$))/' @@ -791,16 +874,16 @@ <end match='/\{?=/'/> </block> <block scheme='def:empty'> <!-- no templates --> - <start match='/\b(enum)\b\s*\M(%id;)?/' - region1='key' region2='enum.out' + <start match='/\b(enum)\b\s*(%id;|)\s*(%id;)/' + region1='key' region2='key.type' region3='enum.out' /> - <end match='/([:=])|\{?=/' region1='symb'/> + <end match='/[:=\{]?=/'/> </block> - <block scheme='def:empty'> <!-- no templates ?? --> + <block scheme='decl.class.decl'> <start match='/\b(interface)\b\s+\M(%id;)/' region1='key' region2='iface.out' /> - <end match='/(:)|\{?=/' region1='symb.struct'/> + <end match='/[:\{]?=/' region1='symb.struct'/> </block> @@ -810,7 +893,7 @@ <word name='struct'/> <word name='union'/> <word name='template'/> - <word name='emun'/> + <word name='enum'/> <word name='interface'/> </keywords> @@ -828,11 +911,11 @@ -<!-- decl.constr --> +<!-- Constructors --> <scheme name='decl.constr'> <block scheme='d.expr'> - <start match='/(\w?~1(\~?this|new|delete)\s*((\())\M.+?(\)|$))[^;]*$/' + <start match='/(\w?~1(\~?this|new|delete))\s*((\())\M.+?(\)|$)[^;]*$/' region1='fun.out' region2='key' region3='symb' region4='def:PairStart' /> @@ -850,9 +933,51 @@ </scheme> +<entity name='noparens' value='[^()]*' /> +<entity name='nestedparens3' value='(?:%noparens;(?:\(%noparens; \)%noparens;)*)' /> +<entity name='nestedparens2' value='(?:%noparens;(?:\(%nestedparens3;\)%noparens;)*)' /> +<entity name='nestedparens' value='(?:%noparens;(?:\(%nestedparens2;\)%noparens;)*)' /> + +<entity name='argument' value='%nestedparens;\s+\w+(\s*=\s*%nestedparens;)?' /> + <scheme name='decl.fun'> <!-- bug: this doesn't work correctly with delegates --> - <regexp match='/\M(?{fun.out}(\bout\b)?!%id;(\s*\([^\);]*?\)){1,2})[^;]*($|\{)/'/> + <regexp> + / + \M + ^ + \s* + ( + \S+ + \s+ + )+ + (?{fun.out} + (\bout\b)?! + %id; + ) + ( + \s* + \( + %nestedparens; + \) + )? + ( + \s* \( \s* + ( + %argument; + \s* , \s* + )* + ( + %argument; + \s* + )? + (\.\.\.)? + (\)|$) + ) + [^;?:\{,()]* + ($|\{) + /x + </regexp> <block scheme='tpl.fun.proxy'> <start match='/\M%id;\s*\([^\(\);]*?\)\s*\([^\);]*?\)[^;]*($|\{)/'/> @@ -921,9 +1046,9 @@ <!-- from Vladimir Panteleev's d.hrc --> <keywords region='key.fun.main'> - <word name="main"/> - <word name="WinMain"/> - <word name="DllMain"/> + <word name='main'/> + <word name='WinMain'/> + <word name='DllMain'/> </keywords> </scheme> @@ -949,15 +1074,23 @@ -<!-- statemen --> +<!-- statement --> <scheme name='asmcode'> <regexp match='/[\{;]/' region='symb.struct'/> <inherit scheme='comment'/> - <inherit scheme="asm:baseasm"/> + <inherit scheme='asm:baseasm'/> </scheme> +<scheme name='asmstart'> + <inherit scheme='comment'/> + <block start='/(\{)/' end='/\M((\}))/' scheme='asmcode' + region01='symb.struct' region11='symb.struct' + region00='def:PairStart' region12='def:PairEnd' /> + <inherit scheme='error'/> +</scheme> + <scheme name='d.statement'> <block scheme='d.expr'> <start match='/\b(for|foreach(_reverse)?|if|while|with|switch|catch|synchronized|assert|type(id|of)|sizeof)\s*((\())/' @@ -967,30 +1100,29 @@ region0='symb' region1='def:PairEnd' /> </block> - <regexp match="/\b(scope)(\()\s*(exit|success|failure)\s*(\))/" + <regexp match='/\b(scope)\s*(\()\s*(exit|success|failure)\s*(\))/' region0='symb' region1='key' region3='decl' region2='def:PairStart' region4='def:PairEnd' /> - <block start="/\b(asm)\s*?(\{|$)/" end="/(\})/" scheme="asmcode" - region01="key" region02="symb.struct" region10="symb.struct" - region00="def:PairStart" region11="def:PairEnd" + <block start='/\basm\b/' end='/\}/' scheme='asmstart' + region00='key' /> <!-- <block start='/\basm\b/' end='/\}?#1/' scheme='asm.content' region00='key' /> --> + <regexp match='/\b(goto(\s+(case|default))?!|continue|break)\s+(%id;)/' + region1='key' region4='label' + /> + <block scheme='d.expr' region='label.const'> - <start match='/\b(case|default)\b/' + <start match='/(\bgoto\s+)?~10\b(case|default)\b/' region1='key' region2='symb' region3='def:PairStart' /> <end match='/:/' region0='label.mark'/> </block> - <regexp match='/\b(goto(\s+(case|default))?!|continue|break)\s+(%id;)/' - region1='key' region4='label' - /> - <keywords region='key'> <word name='body'/> <word name='break'/> @@ -1038,18 +1170,23 @@ <start match='/(\{)/' region0='def:PairStart' region1='symb.struct'/> <start match='/(\})/' region0='def:PairEnd' region1='symb.struct'/> </block--> - <inherit scheme="def:PairedBrackets"> - <virtual scheme="def:PairedBrackets" subst-scheme="d.decldef"/> + + <inherit scheme='def:PairedBrackets'> + <virtual scheme='def:PairedBrackets' subst-scheme='d.decldef'/> </inherit> <inherit scheme='d.expr'/> </scheme> -<scheme name='d.expr'> - <inherit scheme="def:PairedBrackets"> - <virtual scheme="def:PairedBrackets" subst-scheme="d.expr"/> +<scheme name='d.expr.nest'> + <inherit scheme='def:PairedBrackets'> + <virtual scheme='def:PairedBrackets' subst-scheme='d.expr'/> </inherit> +</scheme> +<scheme name='d.expr'> + <inherit scheme='d.expr.nest'/> + <inherit scheme='comment'/> <inherit scheme='string'/> <inherit scheme='literal'/> @@ -1057,26 +1194,10 @@ <regexp match='/,/' region='symb'/> <regexp match='/:/' region='symb' priority='low'/> <regexp match='/\$/' region='symb'/> - <inherit scheme='keys'/> <inherit scheme='op'/> <inherit scheme='tpl'/> <inherit scheme='type'/> - <keywords region='key'> - <word name='static'/> - <word name='auto'/> - <word name='volatile'/> - <word name='in'/> - <word name='out'/> - <word name='inout'/> - <word name='lazy'/> - <word name='mixin'/> - <word name='scope'/> - <word name='ref'/> - - <!--word name='sizeof'/--> - <word name='typeid'/> - <word name='typeof'/> - </keywords> + <inherit scheme='keys'/> <inherit scheme='tokens.spec'/> <inherit scheme='tokens.bad'/> </scheme> @@ -1091,15 +1212,22 @@ <scheme name='tokens.spec'> <keywords region='key.spec'> + <!-- http://dlang.org/traits.html#specialkeywords --> <word name='__FILE__'/> + <word name='__MODULE__'/> <word name='__LINE__'/> + <word name='__FUNCTION__'/> + <word name='__PRETTY_FUNCTION__'/> + + <!-- http://dlang.org/traits.html#specialkeywords --> <word name='__DATE__'/> + <word name='__EOF__'/> <word name='__TIME__'/> <word name='__TIMESTAMP__'/> <word name='__VENDOR__'/> <word name='__VERSION__'/> </keywords> - <block start="/#/" end='/$/' scheme='tokens.spec.pre' region='c:Preproc'/> + <block start='/#/' end='/$/' scheme='tokens.spec.pre' region='c:Preproc'/> </scheme> @@ -1118,7 +1246,7 @@ </scheme> -<scheme name="d.lang"> +<scheme name='d.lang'> <inherit scheme='comment'/> <inherit scheme='module'/> <inherit scheme='d.decldef'/> @@ -1126,50 +1254,68 @@ <scheme name='d'> <inherit scheme='def:unixCommentFirstline'> - <virtual scheme="def:def" subst-scheme="d.lang"/> + <virtual scheme='def:def' subst-scheme='d.lang'/> </inherit> </scheme> +<scheme name='symb.flat'> + <keywords region='symb'> + <symb name='('/> + <symb name=')'/> + <symb name='['/> + <symb name=']'/> + <symb name='?'/> + <symb name=':'/> + <symb name='\'/> + </keywords> + <keywords region='symb.struct'> + <symb name='{'/> + <symb name='}'/> + </keywords> +</scheme> +<scheme name='d.flat'> + <annotation><documentation> + Simpler, error-tolerable variant which does not nest, for DDoc code / examples. + </documentation></annotation> + <!-- Round parens should be the only allowed block --> + <block start='/(\()/' end='/(\))/' scheme='d.flat' + region00='def:PairStart' region01='symb' + region10='def:PairEnd' region11='symb' + /> + + <inherit scheme='d.lang'> + <virtual scheme='def:PairedBrackets' subst-scheme='symb.flat' /> + <virtual scheme='d.expr.nest' subst-scheme='def:empty' /> + <virtual scheme='op.nest' subst-scheme='def:empty' /> + <virtual scheme='type.nest' subst-scheme='symb.flat' /> + <virtual scheme='string.all.d2.nest' subst-scheme='string.all.d2.flat' /> + <virtual scheme='tpl.tpl' subst-scheme='symb.flat' /> + <virtual scheme='d.statement' subst-scheme='def:empty' /> + <virtual scheme='literal.error' subst-scheme='def:DecNumber' /> + </inherit> + +</scheme> + +<!-- http://dlang.org/property.html --> +<entity name='d.property.common' value='init|sizeof|alignof|mangleof|stringof'/> +<entity name='d.property.integer' value='max|min'/> +<entity name='d.property.floating' value='infinity|nan|dig|epsilon|mant_dig|max_10_exp|max_exp|min_10_exp|min_exp|min_normal|re|im'/> +<entity name='d.property.class' value='classinfo'/> +<!-- http://dlang.org/arrays.html#array-properties --> +<entity name='d.property.array' value='length|ptr|dup|idup|reverse|sort'/> +<!-- http://dlang.org/hash-map.html --> +<entity name='d.property.assoc' value='keys|values|rehash'/> + <scheme name='d.property'> - <!-- disabled due to Colorer bug(?): + <!-- Use only common properties, to avoid false positives with custom types --> + <regexp match='/(\.)?#1(%d.property.common;)\b/' region='key.prop' /> - {foo!(bar).init} // } is not highlighted - - <regexp region='key.prop' region1='symb'> - /(\.)\s*(alignof - | dig - | dup - | epsilon - | idup - | im - | infinity - | init - | length - | mangleof - | mant_dig - | max - | max_10_exp - | max_exp - | min - | min_10_exp - | min_exp - | nan - | ptr - | re - | reverse - | sizeof - | sort - | stringof -+ )/x -+ </regexp> -+ --> <keywords region='key.var'> <word name='_argptr'/> <word name='_arguments'/> </keywords> - </scheme> @@ -1205,9 +1351,25 @@ &d1-tango; </scheme> +<scheme name='keys.d2' if='d2'> + <keywords region='key'> + <word name='__gshared'/> + <word name='__overloadset'/> + <word name='__traits'/> + <word name='__vector'/> + <word name='immutable'/> + <word name='nothrow'/> + <word name='pure'/> + <word name='shared'/> + </keywords> +</scheme> + <scheme name='keys'> <inherit scheme='keys.custom'/> + <inherit scheme='keys.d2'/> <keywords region='key'> + <word name='__argTypes'/> + <word name='__parameters'/> <word name='abstract'/> <word name='alias'/> <word name='align'/> @@ -1263,6 +1425,7 @@ <word name='is'/> <word name='lazy'/> <word name='long'/> + <word name='macro'/> <word name='mixin'/> <word name='module'/> <word name='new'/> @@ -1275,6 +1438,7 @@ <word name='protected'/> <word name='public'/> <word name='real'/> + <word name='ref'/> <word name='return'/> <word name='scope'/> <word name='short'/> Modified: trunk/schemes/hrc/hrc/base/d2-phobos.ent.hrc =================================================================== --- trunk/schemes/hrc/hrc/base/d2-phobos.ent.hrc 2013-04-22 09:50:39 UTC (rev 1949) +++ trunk/schemes/hrc/hrc/base/d2-phobos.ent.hrc 2013-04-22 11:23:56 UTC (rev 1950) @@ -1,22 +1,37 @@ <keywords region='key.lib.alias'> - <!-- core.exception --> - <word name='errorHandlerType'/> - <!-- core.runtime --> - <word name='ModuleUnitTester'/> - <word name='CollectHandler'/> - <word name='TraceHandler'/> - <word name='ExceptionHandler'/> + <!-- core.atomic --> + <word name='msync'/> + <!-- core.simd --> + <word name='void16'/> + <word name='double2'/> + <word name='float4'/> + <word name='byte16'/> + <word name='ubyte16'/> + <word name='short8'/> + <word name='ushort8'/> + <word name='int4'/> + <word name='uint4'/> + <word name='long2'/> + <word name='ulong2'/> + <word name='void32'/> + <word name='double4'/> + <word name='float8'/> + <word name='byte32'/> + <word name='ubyte32'/> + <word name='short16'/> + <word name='ushort16'/> + <word name='int8'/> + <word name='uint8'/> + <word name='long4'/> + <word name='ulong4'/> <!-- core.stdc.config --> <word name='c_long'/> <word name='c_ulong'/> - <!-- core.stdc.errno --> - <word name='errno'/> <!-- core.stdc.math --> <word name='float_t'/> <word name='double_t'/> <!-- core.stdc.signal --> <word name='sig_atomic_t'/> - <word name='sigfn_t'/> <!-- core.stdc.stdarg --> <word name='va_list'/> <!-- core.stdc.stddef --> @@ -73,11 +88,33 @@ <word name='wint_t'/> <!-- core.sys.windows.dbghelp --> <word name='TCHAR'/> + <word name='ReadProcessMemoryProc64'/> + <word name='FunctionTableAccessProc64'/> + <word name='GetModuleBaseProc64'/> + <word name='TranslateAddressProc64'/> + <word name='SymInitializeFunc'/> + <word name='SymCleanupFunc'/> + <word name='SymSetOptionsFunc'/> + <word name='SymGetOptionsFunc'/> + <word name='SymFunctionTableAccess64Func'/> + <word name='StackWalk64Func'/> + <word name='SymGetLineFromAddr64Func'/> + <word name='SymGetModuleBase64Func'/> + <word name='SymGetModuleInfo64Func'/> + <word name='SymGetSymFromAddr64Func'/> + <word name='UnDecorateSymbolNameFunc'/> + <word name='SymLoadModule64Func'/> + <word name='SymGetSearchPathFunc'/> + <word name='SymUnloadModule64Func'/> + <word name='PSYMBOL_REGISTERED_CALLBACK64'/> + <word name='SymRegisterCallback64Func'/> + <word name='ImagehlpApiVersionFunc'/> <!-- core.sys.windows.threadaux --> <word name='getTEB'/> <word name='getThreadStackBottom'/> <word name='OpenThreadHandle'/> <word name='enumProcessThreads'/> + <word name='impersonate_thread'/> <!-- core.sys.windows.windows --> <word name='ULONG'/> <word name='PULONG'/> @@ -86,24 +123,37 @@ <word name='UCHAR'/> <word name='PUCHAR'/> <word name='PSZ'/> - <word name='WCHAR'/> <word name='VOID'/> <word name='CHAR'/> <word name='SHORT'/> <word name='LONG'/> + <word name='LONGLONG'/> + <word name='ULONGLONG'/> + <word name='LPCH'/> <word name='LPSTR'/> + <word name='PCH'/> <word name='PSTR'/> + <word name='LPCCH'/> <word name='LPCSTR'/> + <word name='PCCH'/> <word name='PCSTR'/> + <word name='WCHAR'/> + <word name='LPWCH'/> + <word name='LPWSTR'/> + <word name='PWCH'/> + <word name='PWSTR'/> + <word name='LPCWCH'/> + <word name='LPCWSTR'/> + <word name='PCWCH'/> + <word name='PCWSTR'/> <word name='LPTCH'/> + <word name='LPTSTR'/> <word name='PTCH'/> <word name='PTSTR'/> - <word name='LPTSTR'/> + <word name='LPCTCH'/> + <word name='LPCTSTR'/> + <word name='PCTCH'/> <word name='PCTSTR'/> - <word name='LPCTSTR'/> - <word name='LPWSTR'/> - <word name='LPCWSTR'/> - <word name='PCWSTR'/> <word name='DWORD'/> <word name='DWORD64'/> <word name='BOOL'/> @@ -111,22 +161,23 @@ <word name='WORD'/> <word name='FLOAT'/> <word name='PFLOAT'/> + <word name='LPBOOL'/> <word name='PBOOL'/> - <word name='LPBOOL'/> + <word name='LPBYTE'/> <word name='PBYTE'/> - <word name='LPBYTE'/> + <word name='LPINT'/> <word name='PINT'/> - <word name='LPINT'/> + <word name='LPWORD'/> <word name='PWORD'/> - <word name='LPWORD'/> <word name='LPLONG'/> + <word name='LPDWORD'/> <word name='PDWORD'/> - <word name='LPDWORD'/> <word name='LPVOID'/> <word name='LPCVOID'/> <word name='INT'/> <word name='UINT'/> <word name='PUINT'/> + <word name='SIZE_T'/> <word name='INT_PTR'/> <word name='UINT_PTR'/> <word name='LONG_PTR'/> @@ -135,6 +186,8 @@ <word name='PUINT_PTR'/> <word name='PLONG_PTR'/> <word name='PULONG_PTR'/> + <word name='DWORD_PTR'/> + <word name='HANDLE'/> <word name='PVOID'/> <word name='HGLOBAL'/> <word name='HLOCAL'/> @@ -143,6 +196,7 @@ <word name='HINSTANCE'/> <word name='HMODULE'/> <word name='HWND'/> + <word name='PHANDLE'/> <word name='HGDIOBJ'/> <word name='HACCEL'/> <word name='HBITMAP'/> @@ -190,6 +244,8 @@ <word name='EDITWORDBREAKPROCA'/> <word name='EDITWORDBREAKPROCW'/> <word name='DRAWSTATEPROC'/> + <word name='PLARGE_INTEGER'/> + <word name='PULARGE_INTEGER'/> <word name='PSECURITY_ATTRIBUTES'/> <word name='LPSECURITY_ATTRIBUTES'/> <word name='PFILETIME'/> @@ -197,8 +253,12 @@ <word name='LIST_ENTRY'/> <word name='RTL_CRITICAL_SECTION_DEBUG'/> <word name='CRITICAL_SECTION'/> + <word name='LPWIN32_FILE_ATTRIBUTE_DATA'/> <word name='LPMEMORYSTATUS'/> <word name='PMEMORY_BASIC_INFORMATION'/> + <word name='PM128A'/> + <word name='PXMM_SAVE_AREA32'/> + <word name='LPSYSTEM_INFO'/> <word name='PRECT'/> <word name='NPRECT'/> <word name='LPRECT'/> @@ -261,20 +321,107 @@ <word name='PCONSOLE_SCREEN_BUFFER_INFO'/> <word name='PCONSOLE_CURSOR_INFO'/> <word name='PHANDLER_ROUTINE'/> + <word name='LPSTARTUPINFO'/> + <word name='LPSTARTUPINFO_W'/> + <word name='LPPROCESS_INFORMATION'/> <!-- core.thread --> - <word name='gc_atom'/> - <word name='btex_fptr'/> - <word name='thread_attach'/> - <word name='thread_detach'/> - <word name='scanAllThreadsFn'/> - <!-- core.vararg --> + <word name='getpid'/> + <word name='ScanAllThreadsFn'/> + <word name='ScanAllThreadsTypeFn'/> + <!-- core.time --> + <word name='weeks'/> + <word name='days'/> + <word name='hours'/> + <word name='minutes'/> + <word name='seconds'/> + <word name='msecs'/> + <word name='usecs'/> + <word name='hnsecs'/> + <word name='nsecs'/> + <!-- etc.c.curl --> + <word name='curl_off_t'/> + <word name='CURL'/> + <word name='curl_socket_t'/> + <word name='curl_progress_callback'/> + <word name='curl_write_callback'/> + <word name='curlfiletype'/> + <word name='curl_chunk_bgn_callback'/> + <word name='curl_chunk_end_callback'/> + <word name='curl_fnmatch_callback'/> + <word name='curl_seek_callback'/> + <word name='curl_read_callback'/> + <word name='curlsocktype'/> + <word name='curl_sockopt_callback'/> + <word name='curl_opensocket_callback'/> + <word name='curlioerr'/> + <word name='curliocmd'/> + <word name='curl_ioctl_callback'/> + <word name='curl_malloc_callback'/> + <word name='curl_free_callback'/> + <word name='curl_realloc_callback'/> + <word name='curl_strdup_callback'/> + <word name='curl_calloc_callback'/> + <word name='curl_infotype'/> + <word name='curl_debug_callback'/> + <word name='CURLcode'/> + <word name='curl_conv_callback'/> + <word name='curl_ssl_ctx_callback'/> + <word name='curl_proxytype'/> + <word name='curl_sshkeycallback'/> + <word name='curl_usessl'/> + <word name='curl_ftpccc'/> + <word name='curl_ftpauth'/> + <word name='curl_ftpcreatedir'/> + <word name='curl_ftpmethod'/> + <word name='LONG'/> + <word name='OBJECTPOINT'/> + <word name='FUNCTIONPOINT'/> + <word name='OFF_T'/> + <word name='CURLoption'/> + <word name='curl_TimeCond'/> + <word name='CURLformoption'/> + <word name='CURLFORMcode'/> + <word name='curl_formget_callback'/> + <word name='CURLINFO'/> + <word name='curl_closepolicy'/> + <word name='curl_lock_data'/> + <word name='curl_lock_access'/> + <word name='curl_lock_function'/> + <word name='curl_unlock_function'/> + <word name='CURLSH'/> + <word name='CURLSHcode'/> + <word name='CURLSHoption'/> + <word name='CURLversion'/> + <word name='curl_version_info_data'/> + <word name='CURLM'/> + <word name='CURLMcode'/> + <word name='CURLMSG'/> + <word name='fd_set'/> + <word name='CURL_SOCKET_TIMEOUT'/> + <word name='curl_socket_callback'/> + <word name='curl_multi_timer_callback'/> + <word name='CURLMoption'/> + <!-- etc.c.sqlite3 --> + <word name='sqlite3_int64'/> + <word name='sqlite3_uint64'/> + <word name='sqlite3_callback'/> + <word name='xDlSymReturn'/> + <word name='sqlite3_syscall_ptr'/> <word name='va_list'/> - <!-- gc.gc --> - <word name='gc_t'/> + <word name='sqlite3_destructor_type'/> + <word name='mapFunction'/> + <!-- etc.c.zlib --> + <word name='alloc_func'/> + <word name='free_func'/> + <word name='z_streamp'/> + <word name='gz_headerp'/> + <word name='in_func'/> + <word name='out_func'/> + <word name='gzFile'/> + <word name='z_off_t'/> <!-- gc.gcalloc --> <word name='pthread_t'/> <!-- gc.gcx --> - <word name='scanFn'/> <word name='gc_t'/> <word name='Bins'/> <!-- object --> @@ -291,69 +438,70 @@ <word name='TraceHandler'/> <word name='IMonitor'/> <word name='DEvent'/> + <word name='_dg_t'/> + <word name='_dg2_t'/> + <word name='clear'/> <!-- std.base64 --> <word name='Base64'/> <word name='Base64URL'/> - <!-- std.bind --> - <word name='NumericTypes'/> <!-- std.c.process --> <word name='stdfp'/> <!-- std.c.windows.com --> <word name='OLECHAR'/> <word name='LPOLESTR'/> <word name='LPCOLESTR'/> + <word name='COINIT'/> <word name='IID'/> <word name='CLSID'/> <!-- std.c.windows.winsock --> <word name='SOCKET'/> <word name='socklen_t'/> <word name='LPWSADATA'/> - <!-- std.conv --> - <word name='ConvError'/> - <word name='ConvOverflowError'/> - <!-- std.date --> - <word name='d_time'/> - <word name='TicksPerSecond'/> - <word name='TicksPerMs'/> - <word name='TicksPerMinute'/> - <word name='TicksPerHour'/> - <word name='TicksPerDay'/> - <word name='toString'/> + <word name='fd_set'/> + <word name='LPWSAOVERLAPPED'/> + <word name='LPWSAOVERLAPPED_COMPLETION_ROUTINE'/> + <!-- std.cpuid --> + <word name='vendor'/> + <word name='processor'/> + <word name='mmx'/> + <word name='fxsr'/> + <word name='sse'/> + <word name='sse2'/> + <word name='sse3'/> + <word name='ssse3'/> + <word name='amd3dnow'/> + <word name='amd3dnowExt'/> + <word name='amdMmx'/> + <word name='ia64'/> + <word name='amd64'/> + <word name='hyperThreading'/> + <word name='threadsPerCPU'/> + <word name='coresPerCPU'/> <!-- std.datetime --> - <word name='stds_indexOf'/> <word name='DateTimeException'/> + <word name='DosFileTime'/> + <!-- std.digest.crc --> + <word name='crcHexString'/> + <word name='CRC32Digest'/> + <!-- std.digest.md --> + <word name='MD5Digest'/> + <!-- std.digest.ripemd --> + <word name='RIPEMD160Digest'/> + <!-- std.digest.sha --> + <word name='SHA1Digest'/> <!-- std.encoding --> <word name='AsciiString'/> <word name='Latin1String'/> <word name='Windows1252String'/> - <!-- std.file --> - <word name='toMBSz'/> - <word name='isdir'/> - <word name='isfile'/> - <word name='listdir'/> - <word name='d_time'/> <!-- std.format --> - <word name='snprintf'/> - <!-- std.gregorian --> - <word name='GregYear'/> - <word name='GregMonth'/> - <word name='GregDay'/> - <word name='GregDayOfWeek'/> - <word name='GregDayOfYear'/> + <word name='FormatError'/> <!-- std.internal.math.biguintcore --> <word name='multibyteAdd'/> <word name='multibyteSub'/> - <word name='BIGHALFDIGIT'/> <!-- std.internal.math.biguintnoasm --> <word name='BigDigit'/> <!-- std.internal.math.biguintx86 --> <word name='BigDigit'/> - <!-- std.json --> - <word name='UTFStride'/> - <word name='toUnicode'/> - <!-- std.loader --> - <word name='boolean'/> - <word name='HModule_'/> <!-- std.math --> <word name='FP_ILOGB0'/> <word name='FP_ILOGBNAN'/> @@ -362,18 +510,10 @@ <word name='isnormal'/> <word name='issubnormal'/> <word name='isinf'/> - <!-- std.metastrings --> - <word name='ToString'/> - <word name='ParseUinteger'/> - <word name='ParseInteger'/> - <!-- std.numeric --> - <word name='lookup_t'/> - <!-- std.path --> - <word name='fcmp'/> - <word name='getBaseName'/> - <word name='getDirName'/> + <!-- std.net.curl --> + <word name='KeepTerminator'/> + <word name='CurlCode'/> <!-- std.process --> - <word name='LPWCH'/> <word name='P_WAIT'/> <word name='P_NOWAIT'/> <word name='getpid'/> @@ -390,14 +530,12 @@ <word name='Xorshift192'/> <word name='Xorshift'/> <word name='Random'/> - <!-- std.regexp --> - <word name='rchar'/> <!-- std.signals --> <word name='DisposeEvt'/> <!-- std.socket --> - <word name='_ctimeval'/> + <word name='timeval'/> + <word name='linger'/> <!-- std.stdio --> - <word name='fopen64'/> <word name='FPUTC'/> <word name='FPUTWC'/> <word name='FGETC'/> @@ -406,105 +544,44 @@ <word name='FUNLOCK'/> <word name='_setmode'/> <word name='fileno'/> + <word name='isStreamingDevice'/> <!-- std.traits --> <word name='hasLocalAliasing'/> <word name='hasRawLocalAliasing'/> <word name='hasLocalObjects'/> + <word name='pointerTarget'/> <!-- std.typetuple --> <word name='IndexOf'/> + <!-- std.utf --> + <word name='UtfException'/> <!-- std.variant --> <word name='Variant'/> - <!-- std.windows.iunknown --> - <word name='HRESULT'/> - <word name='IID'/> - <!-- std.xml --> - <word name='Err'/> </keywords> - <keywords region='key.lib.typedef'> - <!-- core.sys.windows.dbghelp --> - <word name='ReadProcessMemoryProc64'/> - <word name='FunctionTableAccessProc64'/> - <word name='GetModuleBaseProc64'/> - <word name='TranslateAddressProc64'/> - <word name='SymInitializeFunc'/> - <word name='SymCleanupFunc'/> - <word name='SymSetOptionsFunc'/> - <word name='SymGetOptionsFunc'/> - <word name='SymFunctionTableAccess64Func'/> - <word name='StackWalk64Func'/> - <word name='SymGetLineFromAddr64Func'/> - <word name='SymGetModuleBase64Func'/> - <word name='SymGetModuleInfo64Func'/> - <word name='SymGetSymFromAddr64Func'/> - <word name='UnDecorateSymbolNameFunc'/> - <word name='SymLoadModule64Func'/> - <word name='SymGetSearchPathFunc'/> - <word name='SymUnloadModule64Func'/> - <!-- core.sys.windows.stacktrace --> - <word name='UnhandeledExceptionFilterFunc'/> - <word name='CreateToolhelp32SnapshotFunc'/> - <word name='Module32FirstFunc'/> - <word name='Module32NextFunc'/> - <!-- core.sys.windows.windows --> - <word name='HANDLE'/> - <!-- object --> - <word name='_dg_t'/> - <word name='_dg2_t'/> - <!-- std.date --> - <word name='DosFileTime'/> - <!-- std.datetime --> - <word name='DosFileTime'/> - <!-- std.encoding --> - <word name='AsciiChar'/> - <word name='Latin1Char'/> - <word name='Windows1252Char'/> - <!-- std.loader --> - <word name='HXModule'/> - <!-- std.socket --> - <word name='socket_t'/> - <!-- std.string --> - <word name='StringException'/> - <!-- std.windows.registry --> - <word name='Reserved'/> - </keywords> - <keywords region='key.lib.template'> <!-- core.atomic --> - <word name='HeadUnshared'/> - <word name='atomicValueIsProperlyAligned'/> <word name='atomicOp'/> <word name='cas'/> - <word name='isHoistOp'/> - <word name='isSinkOp'/> - <word name='needsLoadBarrier'/> - <word name='needsStoreBarrier'/> <word name='atomicLoad'/> <word name='atomicStore'/> + <!-- core.simd --> + <word name='Vector'/> + <word name='pcmpeq'/> <!-- core.stdc.stdarg --> <word name='va_start'/> <word name='va_arg'/> - <!-- core.stdc.stdint --> - <word name='typify'/> <!-- core.time --> <word name='dur'/> <word name='convert'/> - <word name='hnsecsPer'/> - <word name='splitUnitsFromHNSecs'/> - <word name='getUnitsFromHNSecs'/> - <word name='removeUnitsFromHNSecs'/> - <word name='nextLargerTimeUnits'/> - <word name='TUnqual'/> - <!-- core.vararg --> - <word name='va_start'/> - <word name='va_arg'/> <!-- object --> - <word name='clear'/> + <word name='AssociativeArray'/> + <word name='destroy'/> <word name='_isStaticArray'/> <word name='capacity'/> <word name='reserve'/> <word name='assumeSafeAppend'/> <word name='_ArrayEq'/> + <word name='RTInfo'/> <!-- std.algorithm --> <word name='map'/> <word name='reduce'/> @@ -518,12 +595,15 @@ <word name='moveSome'/> <word name='swap'/> <word name='swapFront'/> + <word name='forward'/> <word name='splitter'/> <word name='joiner'/> <word name='uniq'/> + <word name='Group'/> <word name='group'/> <word name='find'/> <word name='simpleMindedFind'/> + <word name='BoyerMooreFinder'/> <word name='boyerMooreFinder'/> <word name='findSkip'/> <word name='findSplit'/> @@ -531,11 +611,13 @@ <word name='findSplitAfter'/> <word name='countUntil'/> <word name='indexOf'/> + <word name='Until'/> <word name='until'/> <word name='startsWith'/> <word name='skipOver'/> <word name='skipAll'/> <word name='endsWith'/> + <word name='commonPrefix'/> <word name='findAdjacent'/> <word name='findAmong'/> <word name='count'/> @@ -549,6 +631,7 @@ <word name='minCount'/> <word name='minPos'/> <word name='mismatch'/> + <word name='Levenshtein'/> <word name='levenshteinDistance'/> <word name='levenshteinDistanceAndPath'/> <word name='copy'/> @@ -558,12 +641,11 @@ <word name='remove'/> <word name='partition'/> <word name='isPartitioned'/> + <word name='partition3'/> <word name='topN'/> <word name='sort'/> - <word name='getPivot'/> - <word name='optimisticInsertionSort'/> + <word name='multiSort'/> <word name='swapAt'/> - <word name='sortImpl'/> <word name='schwartzSort'/> <word name='partialSort'/> <word name='completeSort'/> @@ -571,20 +653,33 @@ <word name='makeIndex'/> <word name='topNIndex'/> <word name='canFind'/> + <word name='any'/> + <word name='all'/> <word name='canFindSorted'/> <word name='lowerBound'/> <word name='upperBound'/> <word name='equalRange'/> <word name='topNCopy'/> + <word name='SetUnion'/> <word name='setUnion'/> + <word name='SetIntersection'/> <word name='setIntersection'/> + <word name='SetDifference'/> <word name='setDifference'/> + <word name='SetSymmetricDifference'/> <word name='setSymmetricDifference'/> + <word name='NWayUnion'/> <word name='nWayUnion'/> <word name='largestPartialIntersection'/> <word name='largestPartialIntersectionWeighted'/> + <word name='nextPermutation'/> + <word name='nextEvenPermutation'/> + <word name='cartesianProduct'/> <!-- std.array --> <word name='array'/> + <word name='assocArray'/> + <word name='uninitializedArray'/> + <word name='minimallyInitializedArray'/> <word name='empty'/> <word name='save'/> <word name='popFront'/> @@ -593,127 +688,126 @@ <word name='back'/> <word name='overlap'/> <word name='insertInPlace'/> - <word name='insert'/> <word name='sameHead'/> + <word name='sameTail'/> <word name='replicate'/> <word name='split'/> <word name='splitter'/> <word name='join'/> <word name='replace'/> + <word name='replaceInto'/> <word name='replaceInPlace'/> <word name='replaceFirst'/> <word name='replaceSlice'/> + <word name='Appender'/> + <word name='RefAppender'/> <word name='appender'/> + <word name='SimpleSlice'/> + <word name='SimpleSliceLvalue'/> <!-- std.base64 --> <word name='Base64Impl'/> - <!-- std.bind --> - <word name='isDynArg'/> - <word name='DynamicArrayType'/> - <word name='_assign'/> - <word name='tuple'/> - <word name='isTypeTuple'/> - <word name='minNumArgs_impl'/> - <word name='minNumArgs'/> - <word name='MBoundFunc'/> - <word name='DerefFunc'/> - <word name='bind'/> - <word name='bindAlias'/> - <word name='isBoundFunc'/> - <word name='dynArgTypes'/> - <word name='maxInt'/> - <word name='numDynArgs'/> - <word name='getDynArgTypes'/> - <word name='ExtractedBoundArgs'/> - <word name='extractBoundArgs'/> - <word name='getArgLen'/> - <word name='ContainsEmptySlotType'/> - <word name='ParamsPassMethodTuple_impl'/> - <word name='ParamsPassMethodTuple'/> - <word name='FuncReferenceParamsAsPointers_impl'/> - <word name='FuncReferenceParamsAsPointers'/> - <word name='PointerTuple'/> - <word name='ptrApply'/> <!-- std.bitmanip --> - <word name='createAccessors'/> - <word name='createStoreName'/> - <word name='createFields'/> <word name='bitfields'/> + <word name='swapEndian'/> + <word name='nativeToBigEndian'/> + <word name='bigEndianToNative'/> + <word name='nativeToLittleEndian'/> + <word name='littleEndianToNative'/> + <word name='peek'/> + <word name='read'/> + <word name='write'/> + <word name='append'/> + <!-- std.c.windows.winsock --> + <word name='fd_set_custom'/> <!-- std.complex --> <word name='complex'/> <word name='Complex'/> + <word name='abs'/> + <word name='arg'/> + <word name='conj'/> <word name='fromPolar'/> + <word name='sin'/> + <word name='cos'/> + <word name='sqrt'/> <!-- std.concurrency --> - <word name='hasLocalAliasing'/> - <word name='checkops'/> <word name='spawn'/> <word name='spawnLinked'/> - <word name='_spawn'/> <word name='send'/> <word name='prioritySend'/> - <word name='_send'/> <word name='receive'/> - <word name='receiveOnlyRet'/> <word name='receiveOnly'/> <word name='receiveTimeout'/> <!-- std.container --> + <word name='TotalContainer'/> <wor... [truncated message content] |