All Downloads are FREE. Search and download functionalities are using the official Maven repository.

1234.xson.1.1.source-code.JSON.g4 Maven / Gradle / Ivy

grammar JSON;

/*
定义JSON的语法结构
使用antlr的java生成器,自动生成lexer和parser的相关代码。

引用:
《The Definitive ANTLR 4 Reference》第6.2章 《Parse Json》。
*/

json : object   #JsonObject
     	| array     #JsonArray
     ;
/*
JsonObject的结构
JsonObject由若干对Key-Pair组成,它们用逗号分隔。
空的JsonObject就是{}.
*/
object :
           	'{' pair (',' pair)* '}'
           	| '{' '}'
          ;
/*
定义JSON 名称/值对的结构,
也就是
key:value.
这里的STRING注意是 : '"' (ESC | ~["\\])* '"' ;
也就是带有引号的任意字符串。

"firstName" : "John"
*/
pair : STRING ':' value;

array :
     	'[' value (',' value)* ']'
     	| '[' ']'
     ;
/*
Json 值.
Json 值可以是:
    数字(整数或浮点数)
    字符串(在双引号中)
    逻辑值(true 或 false)
    数组(在方括号中)
    对象(在花括号中)
    null
*/
value :
	STRING      #String
	| NUMBER    #NUMBER
	| object    #ObjectValue
	| array     #ArrayValue
	| 'true'    #BOOLEANTRUE
	| 'false'   #BOOLEANFALSE
	| 'null'    #NULL
	;
STRING : '"' (ESC | ~["])* '"' ;
fragment  ESC : '\\' (["\\/bfnrt] | UNICODE);
fragment UNICODE : 'u' HEX HEX HEX HEX;
fragment HEX : [0-9a-fA-F];
NUMBER : '-'? INT '.' INT EXP?
	| '-'? INT EXP
	| '-'? INT
	;
fragment INT : '0'| [1-9][0-9]*;
fragment EXP : [Ee] [+\-]? INT;

WS : (' '|'\t'|'\r'|'\n')+ -> skip ;




© 2015 - 2025 Weber Informatics LLC | Privacy Policy