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

org.pustefixframework.webservices.json.JSONParser.jj Maven / Gradle / Ivy

There is a newer version: 0.23.0
Show newest version
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 - 2024 Weber Informatics LLC | Privacy Policy