/*
* Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. 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.
*/
package org.apache.synapse.util.streaming_xpath.compiler;
import org.antlr.runtime.ANTLRStringStream;
import org.antlr.runtime.CommonTokenStream;
import org.antlr.runtime.RecognitionException;
import org.antlr.runtime.tree.CommonTree;
import org.antlr.runtime.tree.CommonTreeNodeStream;
import org.apache.synapse.util.streaming_xpath.custom.StreamingParser;
public class StreamingXPATHCompiler {
/**
* This will create the Custom XPATH Parser Components for a given XPATH. This will Use the Antlr Grammar XPATH1.0 for this process.
*
* @param source is the String for XPATH Expression
* @return A Custom XPATH Parser Component Chain
* @throws RecognitionException
*/
public static StreamingParser parse(String source) throws RecognitionException {
XPath1Lexer lexer = new XPath1Lexer();
lexer.setCharStream(new ANTLRStringStream(source));
CommonTokenStream tokens = new CommonTokenStream(lexer);
XPath1Parser parser = new XPath1Parser(tokens);
org.apache.synapse.util.streaming_xpath.compiler.XPath1Parser.xpath_return r = parser.xpath();
CommonTree t = (CommonTree) r.getTree();
CommonTreeNodeStream nodes = new CommonTreeNodeStream(t);
nodes.setTokenStream(tokens);
XPath1Walker walker = new XPath1Walker(nodes);
walker.xpath=source;
return walker.xpath();
}
}