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