/*
* Copyright (c) 2012 Sam Harwell, Tunnel Vision Laboratories LLC
* All rights reserved.
*
* The source code of this document is proprietary work, and is not licensed for
* distribution. For information about licensing, contact Sam Harwell at:
* sam@tunnelvisionlabs.com
*/
package org.antlr.works.editor.grammar.experimental;
import org.antlr.v4.runtime.Dependents;
import org.antlr.v4.runtime.RuleDependencies;
import org.antlr.v4.runtime.RuleDependency;
import org.antlr.v4.runtime.TokenStream;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.antlr.works.editor.grammar.experimental.generated.AbstractGrammarParser;
import org.antlr.works.editor.grammar.experimental.generated.AbstractGrammarParser.OptionValueContext;
import org.antlr.works.editor.grammar.experimental.generated.AbstractGrammarParser.QidContext;
import org.netbeans.api.annotations.common.NullAllowed;
/**
*
* @author Sam Harwell
*/
public class GrammarParser extends AbstractGrammarParser {
public GrammarParser(TokenStream input) {
super(input);
}
@RuleDependencies({
@RuleDependency(recognizer=GrammarParser.class, rule=GrammarParser.RULE_optionValue, version=0, dependents=Dependents.PARENTS),
@RuleDependency(recognizer=GrammarParser.class, rule=GrammarParser.RULE_qid, version=1, dependents=Dependents.DESCENDANTS),
})
public static String getOptionValue(@NullAllowed OptionValueContext ctx) {
if (ctx == null) {
return null;
}
QidContext qid = ctx.qid();
if (qid != null) {
return qid.getText();
}
TerminalNode node = ctx.INT();
if (node != null) {
return node.getSymbol().getText();
}
node = ctx.STAR();
if (node != null) {
return node.getSymbol().getText();
}
node = ctx.STRING_LITERAL();
if (node != null) {
String result = node.getSymbol().getText();
result = result.substring(0, result.length() - 1);
result = result.replace("\\\"", "\"");
return result;
}
return null;
}
}