# 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.


keywordNotAllowed='${keyword}' \u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093
classDefinitionNotAllowed=\u30af\u30e9\u30b9\u5b9a\u7fa9\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093
expressionNotSupported=\u5f0f\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
functionDefinitionNotAllowed=\u95a2\u6570\u5b9a\u7fa9\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093
interfaceDefinitionNotAllowed=\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u5b9a\u7fa9\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093
labelsNotAllowed=\u30e9\u30d9\u30eb\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093
literalObjectsNotSupported=\u30ea\u30c6\u30e9\u30eb\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
nullPointerException=null \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u53c2\u7167\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u307e\u305f\u306f\u30e1\u30bd\u30c3\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093
StatementListNodeWIthMoreThanOneItem=StatementListNode \u306b\u8907\u6570\u306e\u30a2\u30a4\u30c6\u30e0\u304c\u3042\u308a\u307e\u3059\u304b\uff1f
typeNotExpected=\u30bf\u30a4\u30d7\u306f\u4e0d\u8981\u3067\u3059
unrecognizedBinaryOperator=\u8a8d\u8b58\u3067\u304d\u306a\u3044 2 \u9805\u6f14\u7b97\u5b50
unrecognizedUnaryOperator=\u8a8d\u8b58\u3067\u304d\u306a\u3044\u5358\u9805\u6f14\u7b97\u5b50
unsupportedExpression=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u5f0f
whatIsDocCommentNode=DocCommentNode \u306e\u6b63\u4f53\u304c\u4e0d\u660e\u3067\u3059
whatIsMetaDataNode=MetaDataNode \u306e\u6b63\u4f53\u304c\u4e0d\u660e\u3067\u3059
xmlLiteralsNotSupported=XML \u30ea\u30c6\u30e9\u30eb\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
binaryProgramNodeUnexpected=BinaryProgramNode \u306f\u4e88\u671f\u3055\u308c\u3066\u3044\u307e\u305b\u3093
noSuchVariable = \u6b21\u306e\u5909\u6570\u306f\u3042\u308a\u307e\u305b\u3093 : ${arg2}
typeError = \u30bf\u30a4\u30d7\u30a8\u30e9\u30fc
