
org.pustefixframework.webservices.json.JSONParser.jj Maven / Gradle / Ivy
options {
STATIC = false;
UNICODE_INPUT = true;
}
PARSER_BEGIN(JSONParser)
package org.pustefixframework.webservices.json.parser;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.StringReader;
import java.io.Reader;
import java.util.Stack;
import org.pustefixframework.webservices.json.*;
public class JSONParser {
Object jsonValue;
String memberName;
public static void main(String[] args) {
try {
String query=args[0];
query=load(new File(query),"UTF-8");
JSONParser parser=new JSONParser(new StringReader(query));
Object val=parser.getJSONValue();
System.out.println(ParserUtils.javaToJson(val));
} catch(Exception x) {
x.printStackTrace();
}
}
public Object getJSONValue() throws Exception {
if(jsonValue==null) {
value();
}
return jsonValue;
}
public static String load(File file,String encoding) throws IOException {
FileInputStream fis=new FileInputStream(file);
InputStreamReader reader=new InputStreamReader(fis,encoding);
StringBuffer strBuf=new StringBuffer();
char[] buffer=new char[4096];
int i=0;
try {
while((i=reader.read(buffer))!=-1) strBuf.append(buffer,0,i);
} finally {
fis.close();
}
return strBuf.toString();
}
}
PARSER_END(JSONParser)
SKIP :
{
" "
| "\t"
| "\r"
| "\n"
| "\f"
}
TOKEN:
{
|
|
|
|
|
|
|
|
}
TOKEN:
{
)
)
)*
"\""
>
| <#HEX: ["0"-"9","a"-"f","A"-"F"] >
|
|
}
void value():
{
Token valueToken;
}
{
object()
| array()
| valueToken= {jsonValue=ParserUtils.jsonToJava(valueToken.image);}
| valueToken= { jsonValue=ParserUtils.parseNumber(valueToken.image);}
| { jsonValue=Boolean.TRUE; }
| { jsonValue=Boolean.FALSE; }
| { jsonValue=null; }
| valueToken= { jsonValue=ParserUtils.parseDate(valueToken.image);}
}
void member():
{
Token memberNameToken;
}
{
memberNameToken= value()
{memberName=ParserUtils.jsonToJava(memberNameToken.image);}
}
void object() :
{
JSONObject jsonObject;
}
{
{jsonObject=new JSONObject();}
member() {jsonObject.putMember(memberName,jsonValue);} ( member() {jsonObject.putMember(memberName,jsonValue);} )*
{jsonValue=jsonObject;}
}
void array():
{
JSONArray jsonArray;
}
{
{jsonArray=new JSONArray();}
(value() {jsonArray.add(jsonValue);} ( value() {jsonArray.add(jsonValue);} )*)?
{jsonValue=jsonArray;}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy