Jump to content

JSON: Difference between revisions

2,046 bytes added ,  12 years ago
No edit summary
Line 6:
 
=={{header|ANTLR}}==
[[File:ANTLRJson.png|left|ANTLR]]
[[File:ANTLRObject.png|left|ANTLR]]
[[File:ANTLRPair.png|left|ANTLR]]
[[File:ANTLRString.png|left|ANTLR]]
[[File:ANTLRValue.png|left|ANTLR]]
[[File:ANTLRNumber.png|left|ANTLR]]
[[File:ANTLRKeyword.png|left|ANTLR]]
[[File:ANTLRArray.png|left|ANTLR]]
<br clear=both>
 
===Java===
<lang java>
//
// Parse JSON
//
// Nigel Galloway - April 27th., 2012
//
grammar JSON ;
@members {
String Indent = "";
}
Number : (('0')|('-'? ('1'..'9') ('0'..'9')*)) ('.' ('0'..'9')+)? (('e'|'E') ('+'|'-')? ('0'..'9')+)?;
WS : (' ' | '\t' | '\r' |'\n') {skip();};
Tz : ' ' .. '!' | '#' .. '[' | ']' .. '~';
Control : '\\' ('"'|'\\'|'/'|'b'|'f'|'n'|'r'|'t'|UCode);
UCode : 'u' ('0'..'9'|'a'..'f'|'A'..'F') ('0'..'9'|'a'..'f'|'A'..'F') ('0'..'9'|'a'..'f'|'A'..'F') ('0'..'9'|'a'..'f'|'A'..'F');
Keyword : 'true' | 'false' | 'null';
String : '"' (Control? Tz)* '"';
json : WS* object WS*;
object : '{' {System.out.println(Indent + "{Object}"); Indent += " ";} (pair (',' pair*)*)? '}' {Indent = Indent.substring(4);};
pair : WS* e = String WS* {System.out.println(Indent + "{Property}\t" + $e.text);} ':' WS* value;
value : Number {System.out.println(Indent + "{Number} \t" + $Number.text);}
| object
| String {System.out.println(Indent + "{String} \t" + $String.text);}
| Keyword {System.out.println(Indent + "{Keyword} \t" + $Keyword.text);}
| array;
array : '[' {System.out.println(Indent + "Array"); Indent += " ";}WS* (value WS* (',' WS* value WS*)*)? ']' {Indent = Indent.substring(4);};
</lang>
Produces:
<pre>
>java Test
{
"Nigel"
:
-110.2e-13
,
"Fred"
:
{
"Joe"
:
[3,true,"Nigel"]
}
"Harry"
:
[23,"Hello"]
}
^Z
{Object}
{Property} "Nigel"
{Number} -110.2e-13
{Property} "Fred"
{Object}
{Property} "Joe"
Array
{Number} 3
{Keyword} true
{String} "Nigel"
{Property} "Harry"
Array
{Number} 23
{String} "Hello"
</pre>
 
=={{header|C++}}==
2,172

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.