1c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount/* 21143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount [The "BSD licence"] 31143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount Copyright (c) 2013 Terence Parr, Sam Harwell 41143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount All rights reserved. 51143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount Redistribution and use in source and binary forms, with or without 61143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount modification, are permitted provided that the following conditions 71143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount are met: 81143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount 1. Redistributions of source code must retain the above copyright 91143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount notice, this list of conditions and the following disclaimer. 101143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount 2. Redistributions in binary form must reproduce the above copyright 111143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount notice, this list of conditions and the following disclaimer in the 121143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount documentation and/or other materials provided with the distribution. 131143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount 3. The name of the author may not be used to endorse or promote products 141143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount derived from this software without specific prior written permission. 151143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 161143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 171143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 181143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 191143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 201143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 211143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 221143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 231143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 241143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 251143e9f52ceb27b1fe0b4733845b7a3550bfa6f4George Mount*/ 26c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountgrammar BindingExpression; 27c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 28c09acd410cdf8399b43f5e4a77313337a0c9a178George MountbindingSyntax 296047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar : expression defaults? # RootExpr 306047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar | lambdaExpression # RootLambda 31c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 32c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 33c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountdefaults 34c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : ',' 'default' '=' constantValue 35c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 366047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar 37c09acd410cdf8399b43f5e4a77313337a0c9a178George MountconstantValue 38c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : literal 39c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | ResourceReference 40c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | identifier 41c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 42c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 436047998943beebd81e0ae1068df39c0cbee38628Yigit BoyarlambdaExpression 446047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar : args=lambdaParameters '->' expr=expression 456047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar ; 466047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar 476047998943beebd81e0ae1068df39c0cbee38628Yigit BoyarlambdaParameters 486047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar : Identifier # SingleLambdaParameter 496047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar | '(' params=inferredFormalParameterList? ')' #LambdaParameterList 506047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar ; 516047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar 526047998943beebd81e0ae1068df39c0cbee38628Yigit BoyarinferredFormalParameterList 536047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar : Identifier (',' Identifier)* 546047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar ; 556047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar 56c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountexpression 57c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '(' expression ')' # Grouping 58c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// this isn't allowed yet. 59c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// | THIS # Primary 60c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | literal # Primary 616047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar | VoidLiteral # Primary 62c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | identifier # Primary 63c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | classExtraction # Primary 64ae7cb82316e351c488ee3b9c7226602321f34301George Mount | resources # Resource 65d071769a3dc21fa36b55eb727d1f54474fb76b00George Mount// | typeArguments (explicitGenericInvocationSuffix | 'this' arguments) # GenericCall 66c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | expression '.' Identifier # DotOp 67c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount | expression '::' Identifier # FunctionRef 68c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// | expression '.' 'this' # ThisReference 69d071769a3dc21fa36b55eb727d1f54474fb76b00George Mount// | expression '.' explicitGenericInvocation # ExplicitGenericInvocationOp 70c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | expression '[' expression ']' # BracketOp 71d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar | target=expression '.' methodName=Identifier '(' args=expressionList? ')' # MethodInvocation 72c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | '(' type ')' expression # CastOp 73d071769a3dc21fa36b55eb727d1f54474fb76b00George Mount | op=('+'|'-') expression # UnaryOp 74d071769a3dc21fa36b55eb727d1f54474fb76b00George Mount | op=('~'|'!') expression # UnaryOp 7535e303ef39a4fe83175b69486a6bbd444ef6ccd5Yigit Boyar | left=expression op=('*'|'/'|'%') right=expression # MathOp 7635e303ef39a4fe83175b69486a6bbd444ef6ccd5Yigit Boyar | left=expression op=('+'|'-') right=expression # MathOp 7735e303ef39a4fe83175b69486a6bbd444ef6ccd5Yigit Boyar | left=expression op=('<<' | '>>>' | '>>') right=expression # BitShiftOp 7835e303ef39a4fe83175b69486a6bbd444ef6ccd5Yigit Boyar | left=expression op=('<=' | '>=' | '>' | '<') right=expression # ComparisonOp 79c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | expression 'instanceof' type # InstanceOfOp 8035e303ef39a4fe83175b69486a6bbd444ef6ccd5Yigit Boyar | left=expression op=('==' | '!=') right=expression # ComparisonOp 8135e303ef39a4fe83175b69486a6bbd444ef6ccd5Yigit Boyar | left=expression op='&' right=expression # BinaryOp 8235e303ef39a4fe83175b69486a6bbd444ef6ccd5Yigit Boyar | left=expression op='^' right=expression # BinaryOp 8335e303ef39a4fe83175b69486a6bbd444ef6ccd5Yigit Boyar | left=expression op='|' right=expression # BinaryOp 8435e303ef39a4fe83175b69486a6bbd444ef6ccd5Yigit Boyar | left=expression op='&&' right=expression # AndOrOp 8535e303ef39a4fe83175b69486a6bbd444ef6ccd5Yigit Boyar | left=expression op='||' right=expression # AndOrOp 868d89ffbe003c2b51522e56ae64b48d5398c9837bGeorge Mount | <assoc=right>left=expression op='?' iftrue=expression ':' iffalse=expression # TernaryOp 8735e303ef39a4fe83175b69486a6bbd444ef6ccd5Yigit Boyar | left=expression op='??' right=expression # QuestionQuestionOp 88c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 89c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 90c09acd410cdf8399b43f5e4a77313337a0c9a178George MountTHIS 91c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : 'this' 92c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 93c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 94c09acd410cdf8399b43f5e4a77313337a0c9a178George MountclassExtraction 95c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : type '.' 'class' 96c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 97c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 98c09acd410cdf8399b43f5e4a77313337a0c9a178George MountexpressionList 99c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : expression (',' expression)* 100c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 101c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 102c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountliteral 103c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : javaLiteral 104c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | stringLiteral 105c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 106c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 107c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountidentifier 108c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : Identifier 109c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 110c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 111c09acd410cdf8399b43f5e4a77313337a0c9a178George MountjavaLiteral 112c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : IntegerLiteral 113c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | FloatingPointLiteral 114c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | BooleanLiteral 115c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | NullLiteral 116c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | CharacterLiteral 117c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 118c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 1196047998943beebd81e0ae1068df39c0cbee38628Yigit BoyarVoidLiteral 1206047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar : 'Void' 1216047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar | 'void' 1226047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar | '¯\\_(ツ)_/¯' 1236047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar ; 1246047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar 125c09acd410cdf8399b43f5e4a77313337a0c9a178George MountstringLiteral 126c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : SingleQuoteString 127c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | DoubleQuoteString 128c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 129c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 130c09acd410cdf8399b43f5e4a77313337a0c9a178George MountexplicitGenericInvocation 131c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : typeArguments explicitGenericInvocationSuffix 132c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 133c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 134c09acd410cdf8399b43f5e4a77313337a0c9a178George MounttypeArguments 135c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '<' type (',' type)* '>' 136c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 137c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 138c09acd410cdf8399b43f5e4a77313337a0c9a178George Mounttype 139c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : classOrInterfaceType ('[' ']')* 140c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | primitiveType ('[' ']')* 141c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 142c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 143c09acd410cdf8399b43f5e4a77313337a0c9a178George MountexplicitGenericInvocationSuffix 144c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : Identifier arguments 145c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 146c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 147c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountarguments 148c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '(' expressionList? ')' 149c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 150c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 151c09acd410cdf8399b43f5e4a77313337a0c9a178George MountclassOrInterfaceType 152c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : identifier typeArguments? ('.' Identifier typeArguments? )* 153c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 154c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 155c09acd410cdf8399b43f5e4a77313337a0c9a178George MountprimitiveType 156c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : 'boolean' 157c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'char' 158c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'byte' 159c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'short' 160c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'int' 161c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'long' 162c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'float' 163c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'double' 164c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 165c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 166ae7cb82316e351c488ee3b9c7226602321f34301George Mountresources 167ae7cb82316e351c488ee3b9c7226602321f34301George Mount : ResourceReference resourceParameters? 168ae7cb82316e351c488ee3b9c7226602321f34301George Mount ; 169ae7cb82316e351c488ee3b9c7226602321f34301George Mount 170ae7cb82316e351c488ee3b9c7226602321f34301George MountresourceParameters 171ae7cb82316e351c488ee3b9c7226602321f34301George Mount : '(' expressionList ')' 172ae7cb82316e351c488ee3b9c7226602321f34301George Mount ; 173ae7cb82316e351c488ee3b9c7226602321f34301George Mount 174c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// LEXER 175c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 176c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// §3.10.1 Integer Literals 177c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 178c09acd410cdf8399b43f5e4a77313337a0c9a178George MountIntegerLiteral 179c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : DecimalIntegerLiteral 180c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | HexIntegerLiteral 181c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | OctalIntegerLiteral 182c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | BinaryIntegerLiteral 183c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 184c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 185c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 186c09acd410cdf8399b43f5e4a77313337a0c9a178George MountDecimalIntegerLiteral 187c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : DecimalNumeral IntegerTypeSuffix? 188c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 189c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 190c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 191c09acd410cdf8399b43f5e4a77313337a0c9a178George MountHexIntegerLiteral 192c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : HexNumeral IntegerTypeSuffix? 193c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 194c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 195c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 196c09acd410cdf8399b43f5e4a77313337a0c9a178George MountOctalIntegerLiteral 197c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : OctalNumeral IntegerTypeSuffix? 198c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 199c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 200c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 201c09acd410cdf8399b43f5e4a77313337a0c9a178George MountBinaryIntegerLiteral 202c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : BinaryNumeral IntegerTypeSuffix? 203c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 204c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 205c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 206c09acd410cdf8399b43f5e4a77313337a0c9a178George MountIntegerTypeSuffix 207c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : [lL] 208c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 209c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 210c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 211c09acd410cdf8399b43f5e4a77313337a0c9a178George MountDecimalNumeral 212c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '0' 213c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | NonZeroDigit (Digits? | Underscores Digits) 214c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 215c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 216c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 217c09acd410cdf8399b43f5e4a77313337a0c9a178George MountDigits 218c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : Digit (DigitOrUnderscore* Digit)? 219c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 220c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 221c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 222c09acd410cdf8399b43f5e4a77313337a0c9a178George MountDigit 223c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '0' 224c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | NonZeroDigit 225c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 226c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 227c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 228c09acd410cdf8399b43f5e4a77313337a0c9a178George MountNonZeroDigit 229c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : [1-9] 230c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 231c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 232c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 233c09acd410cdf8399b43f5e4a77313337a0c9a178George MountDigitOrUnderscore 234c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : Digit 235c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | '_' 236c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 237c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 238c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 239c09acd410cdf8399b43f5e4a77313337a0c9a178George MountUnderscores 240c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '_'+ 241c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 242c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 243c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 244c09acd410cdf8399b43f5e4a77313337a0c9a178George MountHexNumeral 245c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '0' [xX] HexDigits 246c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 247c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 248c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 249c09acd410cdf8399b43f5e4a77313337a0c9a178George MountHexDigits 250c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : HexDigit (HexDigitOrUnderscore* HexDigit)? 251c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 252c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 253c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 254c09acd410cdf8399b43f5e4a77313337a0c9a178George MountHexDigit 255c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : [0-9a-fA-F] 256c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 257c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 258c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 259c09acd410cdf8399b43f5e4a77313337a0c9a178George MountHexDigitOrUnderscore 260c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : HexDigit 261c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | '_' 262c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 263c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 264c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 265c09acd410cdf8399b43f5e4a77313337a0c9a178George MountOctalNumeral 266c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '0' Underscores? OctalDigits 267c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 268c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 269c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 270c09acd410cdf8399b43f5e4a77313337a0c9a178George MountOctalDigits 271c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : OctalDigit (OctalDigitOrUnderscore* OctalDigit)? 272c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 273c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 274c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 275c09acd410cdf8399b43f5e4a77313337a0c9a178George MountOctalDigit 276c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : [0-7] 277c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 278c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 279c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 280c09acd410cdf8399b43f5e4a77313337a0c9a178George MountOctalDigitOrUnderscore 281c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : OctalDigit 282c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | '_' 283c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 284c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 285c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 286c09acd410cdf8399b43f5e4a77313337a0c9a178George MountBinaryNumeral 287c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '0' [bB] BinaryDigits 288c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 289c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 290c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 291c09acd410cdf8399b43f5e4a77313337a0c9a178George MountBinaryDigits 292c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : BinaryDigit (BinaryDigitOrUnderscore* BinaryDigit)? 293c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 294c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 295c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 296c09acd410cdf8399b43f5e4a77313337a0c9a178George MountBinaryDigit 297c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : [01] 298c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 299c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 300c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 301c09acd410cdf8399b43f5e4a77313337a0c9a178George MountBinaryDigitOrUnderscore 302c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : BinaryDigit 303c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | '_' 304c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 305c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 306c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// §3.10.2 Floating-Point Literals 307c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 308c09acd410cdf8399b43f5e4a77313337a0c9a178George MountFloatingPointLiteral 309c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : DecimalFloatingPointLiteral 310c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | HexadecimalFloatingPointLiteral 311c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 312c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 313c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 314c09acd410cdf8399b43f5e4a77313337a0c9a178George MountDecimalFloatingPointLiteral 315c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : Digits '.' Digits? ExponentPart? FloatTypeSuffix? 316c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | '.' Digits ExponentPart? FloatTypeSuffix? 317c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | Digits ExponentPart FloatTypeSuffix? 318c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | Digits FloatTypeSuffix 319c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 320c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 321c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 322c09acd410cdf8399b43f5e4a77313337a0c9a178George MountExponentPart 323c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : ExponentIndicator SignedInteger 324c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 325c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 326c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 327c09acd410cdf8399b43f5e4a77313337a0c9a178George MountExponentIndicator 328c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : [eE] 329c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 330c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 331c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 332c09acd410cdf8399b43f5e4a77313337a0c9a178George MountSignedInteger 333c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : Sign? Digits 334c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 335c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 336c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 337c09acd410cdf8399b43f5e4a77313337a0c9a178George MountSign 338c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : [+-] 339c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 340c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 341c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 342c09acd410cdf8399b43f5e4a77313337a0c9a178George MountFloatTypeSuffix 343c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : [fFdD] 344c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 345c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 346c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 347c09acd410cdf8399b43f5e4a77313337a0c9a178George MountHexadecimalFloatingPointLiteral 348c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : HexSignificand BinaryExponent FloatTypeSuffix? 349c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 350c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 351c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 352c09acd410cdf8399b43f5e4a77313337a0c9a178George MountHexSignificand 353c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : HexNumeral '.'? 354c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | '0' [xX] HexDigits? '.' HexDigits 355c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 356c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 357c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 358c09acd410cdf8399b43f5e4a77313337a0c9a178George MountBinaryExponent 359c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : BinaryExponentIndicator SignedInteger 360c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 361c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 362c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 363c09acd410cdf8399b43f5e4a77313337a0c9a178George MountBinaryExponentIndicator 364c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : [pP] 365c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 366c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 367c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// §3.10.3 Boolean Literals 368c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 369c09acd410cdf8399b43f5e4a77313337a0c9a178George MountBooleanLiteral 370c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : 'true' 371c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'false' 372c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 373c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 374c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// §3.10.4 Character Literals 375c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 376c09acd410cdf8399b43f5e4a77313337a0c9a178George MountCharacterLiteral 377c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '\'' SingleCharacter '\'' 378c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | '\'' EscapeSequence '\'' 379c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 380c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 381c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 382c09acd410cdf8399b43f5e4a77313337a0c9a178George MountSingleCharacter 383c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : ~['\\] 384c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 385c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// §3.10.5 String Literals 386c09acd410cdf8399b43f5e4a77313337a0c9a178George MountSingleQuoteString 3877920e17f7b501d5792e7e3250e9dbb69eca86adeGeorge Mount : '`' SingleQuoteStringCharacter* '`' 388c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 389c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 390c09acd410cdf8399b43f5e4a77313337a0c9a178George MountDoubleQuoteString 391c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '"' StringCharacters? '"' 392c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 393c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 394c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 395c09acd410cdf8399b43f5e4a77313337a0c9a178George MountStringCharacters 396c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : StringCharacter+ 397c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 398c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 399c09acd410cdf8399b43f5e4a77313337a0c9a178George MountStringCharacter 400c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : ~["\\] 401c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | EscapeSequence 402c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 403c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 404c09acd410cdf8399b43f5e4a77313337a0c9a178George MountSingleQuoteStringCharacter 405c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : ~[`\\] 406c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | EscapeSequence 407c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 408c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 409c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// §3.10.6 Escape Sequences for Character and String Literals 410c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 411c09acd410cdf8399b43f5e4a77313337a0c9a178George MountEscapeSequence 412c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '\\' [btnfr"'`\\] 413c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | OctalEscape 414c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | UnicodeEscape 415c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 416c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 417c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 418c09acd410cdf8399b43f5e4a77313337a0c9a178George MountOctalEscape 419c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '\\' OctalDigit 420c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | '\\' OctalDigit OctalDigit 421c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | '\\' ZeroToThree OctalDigit OctalDigit 422c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 423c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 424c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 425c09acd410cdf8399b43f5e4a77313337a0c9a178George MountUnicodeEscape 426c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : '\\' 'u' HexDigit HexDigit HexDigit HexDigit 427c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 428c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 429c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 430c09acd410cdf8399b43f5e4a77313337a0c9a178George MountZeroToThree 431c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : [0-3] 432c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 433c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 434c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// §3.10.7 The Null Literal 435c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 436c09acd410cdf8399b43f5e4a77313337a0c9a178George MountNullLiteral 437c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : 'null' 438c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 439c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 440c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// §3.8 Identifiers (must appear after all keywords in the grammar) 441c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 442c09acd410cdf8399b43f5e4a77313337a0c9a178George MountIdentifier 443c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : JavaLetter JavaLetterOrDigit* 444c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 445c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 446c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 447c09acd410cdf8399b43f5e4a77313337a0c9a178George MountJavaLetter 448c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : [a-zA-Z$_] // these are the "java letters" below 0xFF 449c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | // covers all characters above 0xFF which are not a surrogate 450c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ~[\u0000-\u00FF\uD800-\uDBFF] 451c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount {Character.isJavaIdentifierStart(_input.LA(-1))}? 452c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF 453c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount [\uD800-\uDBFF] [\uDC00-\uDFFF] 454c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount {Character.isJavaIdentifierStart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)))}? 455c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 456c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 457c09acd410cdf8399b43f5e4a77313337a0c9a178George Mountfragment 458c09acd410cdf8399b43f5e4a77313337a0c9a178George MountJavaLetterOrDigit 459c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : [a-zA-Z0-9$_] // these are the "java letters or digits" below 0xFF 460c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | // covers all characters above 0xFF which are not a surrogate 461c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ~[\u0000-\u00FF\uD800-\uDBFF] 462c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount {Character.isJavaIdentifierPart(_input.LA(-1))}? 463c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF 464c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount [\uD800-\uDBFF] [\uDC00-\uDFFF] 465c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount {Character.isJavaIdentifierPart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)))}? 466c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 467c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 468c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// 469c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// Whitespace and comments 470c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// 471c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 472c09acd410cdf8399b43f5e4a77313337a0c9a178George MountWS : [ \t\r\n\u000C]+ -> skip 473c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 474c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 475c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// 476c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// Resource references 477c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount// 478c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 479c09acd410cdf8399b43f5e4a77313337a0c9a178George MountResourceReference 480ae7cb82316e351c488ee3b9c7226602321f34301George Mount : '@' (PackageName ':')? ResourceType '/' Identifier 481c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 482c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 483c09acd410cdf8399b43f5e4a77313337a0c9a178George MountPackageName 484c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : 'android' 485c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | Identifier 486c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 487c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount 488c09acd410cdf8399b43f5e4a77313337a0c9a178George MountResourceType 489c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount : 'anim' 490c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'animator' 491c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'bool' 492c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'color' 493c752a5f795baf6df435ef60881316cb748df407cGeorge Mount | 'colorStateList' 494c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'dimen' 495c752a5f795baf6df435ef60881316cb748df407cGeorge Mount | 'dimenOffset' 496c752a5f795baf6df435ef60881316cb748df407cGeorge Mount | 'dimenSize' 497c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'drawable' 498c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'fraction' 499c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'id' 500c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'integer' 501c752a5f795baf6df435ef60881316cb748df407cGeorge Mount | 'intArray' 502c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'interpolator' 503c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'layout' 504c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'plurals' 505c752a5f795baf6df435ef60881316cb748df407cGeorge Mount | 'stateListAnimator' 506c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'string' 507c752a5f795baf6df435ef60881316cb748df407cGeorge Mount | 'stringArray' 508c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount | 'transition' 509c752a5f795baf6df435ef60881316cb748df407cGeorge Mount | 'typedArray' 510c09acd410cdf8399b43f5e4a77313337a0c9a178George Mount ; 511