////////////////////////////////////////////////////////////////////////////////
//
//  Licensed to the Apache Software Foundation (ASF) under one or more
//  contributor license agreements.  See the NOTICE file distributed with
//  this work for additional information regarding copyright ownership.
//  The ASF licenses this file to You under the Apache License, Version 2.0
//  (the "License"); you may not use this file except in compliance with
//  the License.  You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
Metadata // output token type name
EOF=1
TOKEN_NUMBER=4
TOKEN_EQUALS=5
TOKEN_ID=6
TOKEN_VALUE=7
TOKEN_STRING=8
TOKEN_EVENT_KEYWORD = 9
TOKEN_EFFECT_KEYWORD = 10
TOKEN_STYLE_KEYWORD = 11
TOKEN_ICONFILE_KEYWORD = 12
TOKEN_ARRAYELEMENTTYPE_KEYWORD = 13
TOKEN_DEFAULTPROPERTY_KEYWORD = 14
TOKEN_BINDABLE_KEYWORD = 15
TOKEN_INSTANCETYPE_KEYWORD = 16
TOKEN_NONCOMMITTINGCHANGE_KEYWORD = 17
TOKEN_EMBED_KEYWORD = 18
TOKEN_INSPECTABLE_KEYWORD = 19
TOKEN_NAME = 20
TOKEN_OPEN_PAREN = 21
TOKEN_CLOSE_PAREN = 22
TOKEN_OPEN_BRACE = 23
TOKEN_CLOSE_BRACE = 24
TOKEN_UNKNOWN_KEYWORD = 25
TOKEN_ATTR_NAME = 26
TOKEN_ATTR_EVENT = 27
TOKEN_ATTR_FORMAT = 28
TOKEN_ATTR_TYPE = 29
TOKEN_ATTR_ARRAY_TYPE = 30
TOKEN_ATTR_INHERITS = 31
TOKEN_ATTR_ENUM = 32
TOKEN_ATTR_UNKNOWN = 33
TOKEN_ATTR_ENV = 34
TOKEN_ATTR_VERBOSE = 35
TOKEN_ATTR_CATEGORY = 36
TOKEN_ATTR_VARIABLE = 37
TOKEN_ATTR_DEFAULT_VALUE = 38
HIDDEN_TOKEN_NEWLINE=45
HIDDEN_TOKEN_LETTER=46
HIDDEN_TOKEN_DIGIT=47
HIDDEN_TOKEN_HEX_DIGIT=48
HIDDEN_TOKEN_ID_FIRST=49
TOKEN_ATTR_STATES=50
TOKEN_ATTR_IMPLEMENTATION=51
TOKEN_ACCESSIBILITY_KEYWORD=52
TOKEN_STATES_KEYWORD=53
TOKEN_SKIN_STATES_KEYWORD=54
TOKEN_ASDOC_COMMENT = 55
TOKEN_HOST_COMPONENT_KEYWORD = 56
TOKEN_RESOURCEBUNDLE_KEYWORD = 59
TOKEN_ATTR_OPERATOR_NS_QUALIFIER = 62