blob: bd5b25048ffbd4e00d2d3acf09234e0a1cfe80ef [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF 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.
*/
/*
* Main.java
*
* Created on January 19, 2005, 2:18 PM
*/
package org.apache.geode.cache.query.internal.parse;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringReader;
import antlr.LLkParser;
import antlr.ParserSharedInputState;
import antlr.TokenBuffer;
import antlr.TokenStream;
import antlr.collections.AST;
import antlr.debug.misc.ASTFrame;
public class UtilParser extends LLkParser {
public UtilParser(int k_) {
super(k_);
}
public UtilParser(ParserSharedInputState state, int k_) {
super(state, k_);
}
public UtilParser(TokenBuffer tokenBuf, int k_) {
super(tokenBuf, k_);
}
public UtilParser(TokenStream lexer, int k_) {
super(lexer, k_);
}
/**
* Parse a query string. Gets the string from stdin unless cmd line has a string in it that
* doesn't start with "-", in which case it parses that string instead. A cmd line arg that starts
* with "-f" causes out put to be put into a GUI tree widget thingy; otherwise, the output is a
* LISP-like string to stdout
*/
public static void main(String[] args) throws Exception {
boolean useFrame = false;
Reader reader = new InputStreamReader(System.in);
if (args.length > 0 && args[0].startsWith("-f"))
useFrame = true;
for (int i = 0; i < args.length; i++) {
if (!args[i].startsWith("-")) {
reader = new StringReader(args[i]);
System.out.println("Parsing: \"" + args[i] + "\"");
break;
}
}
OQLLexer lexer = new OQLLexer(reader);
OQLParser parser = new OQLParser(lexer);
// by default use Unsupported AST class, overridden for supported
// operators in the grammer proper
parser.setASTNodeClass("org.apache.geode.cache.query.internal.parse.ASTUnsupported");
parser.queryProgram();
AST t = parser.getAST();
if (useFrame) {
ASTFrame frame = new ASTFrame("OQL Example", t);
frame.setVisible(true);
} else {
if (t == null) {
System.out.println("AST is NULL");
} else {
System.out.println(t.toStringTree());
}
}
}
}