| /* |
| * 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. |
| */ |
| |
| grammar Agtype; |
| |
| agType |
| : agValue EOF |
| ; |
| |
| agValue |
| : value typeAnnotation? |
| ; |
| |
| value |
| : STRING #StringValue |
| | INTEGER #IntegerValue |
| | floatLiteral #FloatValue |
| | 'true' #TrueBoolean |
| | 'false' #FalseBoolean |
| | 'null' #NullValue |
| | obj #ObjectValue |
| | array #ArrayValue |
| ; |
| |
| obj |
| : '{' pair (',' pair)* '}' |
| | '{' '}' |
| ; |
| |
| pair |
| : STRING ':' agValue |
| ; |
| |
| array |
| : '[' agValue (',' agValue)* ']' |
| | '[' ']' |
| ; |
| |
| typeAnnotation |
| : '::' IDENT |
| ; |
| |
| IDENT |
| : [A-Z_a-z][$0-9A-Z_a-z]* |
| ; |
| |
| STRING |
| : '"' (ESC | SAFECODEPOINT)* '"' |
| ; |
| |
| fragment ESC |
| : '\\' (["\\/bfnrt] | UNICODE) |
| ; |
| |
| fragment UNICODE |
| : 'u' HEX HEX HEX HEX |
| ; |
| |
| fragment HEX |
| : [0-9a-fA-F] |
| ; |
| |
| fragment SAFECODEPOINT |
| : ~ ["\\\u0000-\u001F] |
| ; |
| |
| INTEGER |
| : '-'? INT |
| ; |
| |
| fragment INT |
| : '0' | [1-9] [0-9]* |
| ; |
| |
| floatLiteral |
| : RegularFloat |
| | ExponentFloat |
| | '-'? 'Infinity' |
| | 'NaN' |
| ; |
| |
| RegularFloat |
| : '-'? INT DECIMAL |
| ; |
| |
| ExponentFloat |
| : '-'? INT DECIMAL? SCIENTIFIC |
| ; |
| |
| fragment DECIMAL |
| : '.' [0-9]+ |
| ; |
| |
| fragment SCIENTIFIC |
| : [Ee][+-]? [0-9]+ |
| ; |
| |
| WS |
| : [ \t\n\r] + -> skip |
| ; |