use of org.antlr.v4.runtime.Lexer in project beetl2.0 by javamonkey.
the class DefaultTemplateEngine method createProgram.
@Override
public Program createProgram(Resource resource, Reader reader, Map<Integer, String> textMap, String cr, GroupTemplate gt) {
ANTLRInputStream input;
try {
input = new ANTLRInputStream(reader);
} catch (IOException e) {
// 不可能发生
throw new RuntimeException(e);
}
BeetlLexer lexer = new BeetlLexer(input);
lexer.removeErrorListeners();
lexer.addErrorListener(syntaxError);
CommonTokenStream tokens = new CommonTokenStream(lexer);
BeetlParser parser = new BeetlParser(tokens);
// 测试代码
parser.setErrorHandler(antlrErrorStrategy);
//
ProgContext tree = parser.prog();
// begin parsing at init rule
AntlrProgramBuilder pb = getAntlrBuilder(gt);
ProgramMetaData data = pb.build(tree);
Program program = new Program();
program.metaData = data;
program.res = resource;
program.rs = resource;
program.gt = gt;
program.metaData.staticTextArray = new Object[textMap.size()];
program.metaData.lineSeparator = cr;
int i = 0;
Configuration conf = gt.getConf();
String charset = conf.getCharset();
boolean byteOut = conf.isDirectByteOutput();
for (Entry<Integer, String> entry : textMap.entrySet()) {
if (byteOut) {
try {
program.metaData.staticTextArray[i++] = entry.getValue().getBytes(charset);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
} else {
program.metaData.staticTextArray[i++] = entry.getValue().toCharArray();
}
}
return program;
}
use of org.antlr.v4.runtime.Lexer in project bmoth by hhu-stups.
the class Parser method parseLTLFormula.
private LtlStartContext parseLTLFormula(String inputString) throws ParseErrorException {
CodePointCharStream fromString = CharStreams.fromString(inputString);
final BMoThLexer lexer = new BMoThLexer(fromString);
lexer.pushMode(BMoThLexer.LTL_MODE);
// create a buffer of tokens pulled from the lexer
CommonTokenStream tokens = new CommonTokenStream(lexer);
BMoThParser parser = new BMoThParser(tokens);
parser.removeErrorListeners();
ErrorListener errorListener = new ErrorListener();
parser.addErrorListener(errorListener);
try {
return parser.ltlStart();
} catch (VisitorException e) {
final Logger logger = Logger.getLogger(getClass().getName());
logger.log(Level.SEVERE, PARSE_ERROR, e);
throw e.getParseErrorException();
}
}
use of org.antlr.v4.runtime.Lexer in project ihmc-pub-sub by ihmcrobotics.
the class IDLGenerator method execute.
/**
* Generate java classes from an IDL file
*
* @param idlFile IDL file to parse
* @param packageName Target package (IDL Module gets added to this)
* @param targetDirectory Directory to save the generated files in. The whole package structure is generated in this directory
* @throws IOException
*/
public static void execute(File idlFile, String packageName, File targetDirectory, List<File> includePath) throws IOException {
String idlFilename = idlFile.getAbsolutePath();
Field field;
try {
field = TemplateManager.class.getDeclaredField("m_loaderDirectories");
field.setAccessible(true);
field.set(null, "us/ihmc/idl/templates");
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
throw new RuntimeException("API changed, fixme", e);
}
String onlyFileName = Util.getIDLFileNameOnly(idlFilename);
IDLContext context = new IDLContext(onlyFileName, idlFilename, new ArrayList<>());
context.setPackage(packageName);
TypeCode.javapackage = context.isIsPackageEmpty() ? "" : (context.getPackage() + ".");
// Create default @default annotation.
AnnotationDeclaration defaultAnnotation = context.createAnnotationDeclaration("defaultValue", null);
defaultAnnotation.addMember(new AnnotationMember("value", new PrimitiveTypeCode(TypeCode.KIND_STRING), ""));
// Create default @Key annotation.
AnnotationDeclaration keyann = context.createAnnotationDeclaration("Key", null);
keyann.addMember(new AnnotationMember("value", new PrimitiveTypeCode(TypeCode.KIND_BOOLEAN), "true"));
// Create default @Topic annotation.
AnnotationDeclaration topicann = context.createAnnotationDeclaration("Topic", null);
topicann.addMember(new AnnotationMember("value", new PrimitiveTypeCode(TypeCode.KIND_BOOLEAN), "true"));
AnnotationDeclaration abstractann = context.createAnnotationDeclaration("Abstract", null);
abstractann.addMember(new AnnotationMember("type", new PrimitiveTypeCode(TypeCode.KIND_STRING), "java.lang.Object"));
abstractann.addMember(new AnnotationMember("impl", new PrimitiveTypeCode(TypeCode.KIND_STRING), ""));
AnnotationDeclaration typecode = context.createAnnotationDeclaration("TypeCode", null);
typecode.addMember(new AnnotationMember("type", new PrimitiveTypeCode(TypeCode.KIND_BOOLEAN), "INVALID_TYPE_CODE"));
// Create template manager
TemplateManager tmanager = new TemplateManager("FastCdrCommon:Common");
// Create main template
TemplateGroup maintemplates = tmanager.createTemplateGroup("main");
maintemplates.setAttribute("ctx", context);
if (idlFile.exists()) {
Reader reader = createPreProcessedInputStream(idlFile, includePath);
ANTLRInputStream input = new ANTLRInputStream(reader);
IDLLexer lexer = new IDLLexer(input);
lexer.setContext(context);
CommonTokenStream tokens = new CommonTokenStream(lexer);
// printTokenStream(tokens);
IDLParser parser = new IDLParser(tokens);
// Pass the filename without the extension
parser.specification(context, tmanager, maintemplates);
File packageDir = new File(targetDirectory, context.getPackageDir());
if (packageDir.isDirectory() || packageDir.mkdirs()) {
TypesGenerator gen = new TypesGenerator(tmanager, true);
if (!gen.generate(context, packageDir.getPath() + "/", context.getPackage(), null)) {
throw new IOException("Cannot create Java files");
}
} else {
throw new IOException("Cannot create output dir " + packageDir);
}
} else {
throw new IOException("The File " + idlFilename + " was not found.");
}
}
use of org.antlr.v4.runtime.Lexer in project titan.EclipsePlug-ins by eclipse.
the class ASN1Analyzer method parse.
@Override
public void parse(final IFile file, final String code) throws FileNotFoundException {
Reader reader = null;
if (code != null) {
reader = new StringReader(code);
} else if (file != null) {
try {
reader = new BufferedReader(new InputStreamReader(file.getContents(), file.getCharset()));
} catch (Exception e) {
ErrorReporter.logExceptionStackTrace("Could not get the contents of `" + file.getName() + "'", e);
return;
}
} else {
return;
}
final CharStream charStream = new UnbufferedCharStream(reader);
final Asn1Lexer lexer = new Asn1Lexer(charStream);
lexer.setTokenFactory(new TokenWithIndexAndSubTokensFactory(true));
lexer.setActualFile(file);
lexerListener = new ASN1Listener();
// remove ConsoleErrorListener
lexer.removeErrorListeners();
lexer.addErrorListener(lexerListener);
final ModuleLevelTokenStreamTracker tracker = new ModuleLevelTokenStreamTracker(lexer);
tracker.discard(Asn1Lexer.WS);
tracker.discard(Asn1Lexer.MULTILINECOMMENT);
tracker.discard(Asn1Lexer.SINGLELINECOMMENT);
tracker.setActualFile(file);
final Asn1Parser parser = new Asn1Parser(tracker);
parser.setProject(file.getProject());
parser.setActualFile(file);
parser.setBuildParseTree(false);
parserListener = new ASN1Listener(parser);
// remove ConsoleErrorListener
parser.removeErrorListeners();
parser.addErrorListener(parserListener);
parser.pr_ASN1ModuleDefinition();
actualAsn1Module = parser.getModule();
warnings = parser.getWarnings();
unsupportedConstructs = parser.getUnsupportedConstructs();
try {
reader.close();
} catch (IOException e) {
}
}
use of org.antlr.v4.runtime.Lexer in project titan.EclipsePlug-ins by eclipse.
the class TTCN3ReferenceAnalyzer method parse.
/**
* @return the parsed reference or null if the text can not form a reference
*/
public Reference parse(final IFile file, final String code, final boolean reportErrors, final int aLine, final int aOffset) {
Reference reference = null;
Reader reader = new StringReader(code);
CharStream charStream = new UnbufferedCharStream(reader);
Ttcn3Lexer lexer = new Ttcn3Lexer(charStream);
lexer.setTokenFactory(new CommonTokenFactory(true));
lexer.initRootInterval(code.length());
lexer.removeErrorListeners();
final CommonTokenStream tokenStream = new CommonTokenStream(lexer);
Ttcn3Parser parser = new Ttcn3Parser(tokenStream);
ParserUtilities.setBuildParseTree(parser);
lexer.setActualFile(file);
parser.setActualFile(file);
parser.setProject(file.getProject());
parser.setLine(aLine);
parser.setOffset(aOffset);
parser.removeErrorListeners();
final Pr_UnifiedReferenceParserContext root = parser.pr_UnifiedReferenceParser();
ParserUtilities.logParseTree(root, parser);
reference = root.reference;
return reference;
}
Aggregations