
org.jnario.spec.parser.CustomSpecParser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.jnario.standalone Show documentation
Show all versions of org.jnario.standalone Show documentation
The required libraries to execute Jnario specifications without Eclipse.
The newest version!
package org.jnario.spec.parser;
import java.io.Reader;
import org.antlr.runtime.CharStream;
import org.antlr.runtime.TokenSource;
import org.eclipse.xtend.core.parser.ReaderCharStream;
import org.eclipse.xtend.core.parser.antlr.internal.FlexerFactory;
import org.eclipse.xtext.ParserRule;
import org.eclipse.xtext.RuleCall;
import org.eclipse.xtext.nodemodel.impl.NodeModelBuilder;
import org.eclipse.xtext.parser.IParseResult;
import org.jnario.spec.parser.antlr.SpecParser;
import com.google.inject.Inject;
public class CustomSpecParser extends SpecParser {
@Inject
private FlexerFactory flexerFactory;
@Override
protected TokenSource createLexer(CharStream stream) {
if (stream instanceof ReaderCharStream) {
Reader reader = ((ReaderCharStream) stream).getReader();
return flexerFactory.createTokenSource(reader);
}
throw new IllegalArgumentException(stream.getClass().getName());
}
@Override
public IParseResult parse(ParserRule rule, Reader reader) {
IParseResult parseResult = parse(rule.getName(), new ReaderCharStream(reader));
return parseResult;
}
@Override
public IParseResult doParse(Reader reader) {
return parse(getDefaultRuleName(), new ReaderCharStream(reader));
}
@Override
public IParseResult parse(RuleCall ruleCall, Reader reader, int initialLookAhead) {
NodeModelBuilder builder = createNodeModelBuilder();
builder.setForcedFirstGrammarElement(ruleCall);
IParseResult parseResult = doParse(ruleCall.getRule().getName(), new ReaderCharStream(reader), builder, initialLookAhead);
return parseResult;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy