Search in sources :

Example 41 with Lexer

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;
}
Also used : CommonTokenStream(org.antlr.v4.runtime.CommonTokenStream) Program(org.beetl.core.statement.Program) Configuration(org.beetl.core.Configuration) UnsupportedEncodingException(java.io.UnsupportedEncodingException) IOException(java.io.IOException) BeetlLexer(org.beetl.core.parser.BeetlLexer) BeetlParser(org.beetl.core.parser.BeetlParser) ProgContext(org.beetl.core.parser.BeetlParser.ProgContext) ProgramMetaData(org.beetl.core.statement.ProgramMetaData) ANTLRInputStream(org.antlr.v4.runtime.ANTLRInputStream) AntlrProgramBuilder(org.beetl.core.AntlrProgramBuilder)

Example 42 with Lexer

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();
    }
}
Also used : CommonTokenStream(org.antlr.v4.runtime.CommonTokenStream) BMoThParser(de.bmoth.antlr.BMoThParser) VisitorException(de.bmoth.parser.ErrorListener.VisitorException) Logger(java.util.logging.Logger) BMoThLexer(de.bmoth.antlr.BMoThLexer) CodePointCharStream(org.antlr.v4.runtime.CodePointCharStream)

Example 43 with Lexer

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.");
    }
}
Also used : CommonTokenStream(org.antlr.v4.runtime.CommonTokenStream) Reader(java.io.Reader) CppReader(org.anarres.cpp.CppReader) BufferedReader(java.io.BufferedReader) IOException(java.io.IOException) AnnotationMember(com.eprosima.idl.parser.tree.AnnotationMember) IDLParser(com.eprosima.idl.parser.grammar.IDLParser) PrimitiveTypeCode(com.eprosima.idl.parser.typecode.PrimitiveTypeCode) Field(java.lang.reflect.Field) TemplateGroup(com.eprosima.idl.generator.manager.TemplateGroup) AnnotationDeclaration(com.eprosima.idl.parser.tree.AnnotationDeclaration) IDLLexer(com.eprosima.idl.parser.grammar.IDLLexer) TemplateManager(com.eprosima.idl.generator.manager.TemplateManager) File(java.io.File) ANTLRInputStream(org.antlr.v4.runtime.ANTLRInputStream)

Example 44 with Lexer

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) {
    }
}
Also used : InputStreamReader(java.io.InputStreamReader) Reader(java.io.Reader) InputStreamReader(java.io.InputStreamReader) StringReader(java.io.StringReader) BufferedReader(java.io.BufferedReader) IOException(java.io.IOException) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException) CharStream(org.antlr.v4.runtime.CharStream) UnbufferedCharStream(org.antlr.v4.runtime.UnbufferedCharStream) StringReader(java.io.StringReader) BufferedReader(java.io.BufferedReader) UnbufferedCharStream(org.antlr.v4.runtime.UnbufferedCharStream)

Example 45 with Lexer

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;
}
Also used : CommonTokenStream(org.antlr.v4.runtime.CommonTokenStream) CommonTokenFactory(org.antlr.v4.runtime.CommonTokenFactory) Pr_UnifiedReferenceParserContext(org.eclipse.titan.designer.parsers.ttcn3parser.Ttcn3Parser.Pr_UnifiedReferenceParserContext) Reference(org.eclipse.titan.designer.AST.Reference) StringReader(java.io.StringReader) StringReader(java.io.StringReader) Reader(java.io.Reader) UnbufferedCharStream(org.antlr.v4.runtime.UnbufferedCharStream) CharStream(org.antlr.v4.runtime.CharStream) UnbufferedCharStream(org.antlr.v4.runtime.UnbufferedCharStream)

Aggregations

Test (org.junit.Test)427 LexerGrammar (org.antlr.v4.tool.LexerGrammar)407 CommonTokenStream (org.antlr.v4.runtime.CommonTokenStream)279 ANTLRInputStream (org.antlr.v4.runtime.ANTLRInputStream)143 Grammar (org.antlr.v4.tool.Grammar)125 LexerInterpreter (org.antlr.v4.runtime.LexerInterpreter)108 CharStream (org.antlr.v4.runtime.CharStream)103 ParseTree (org.antlr.v4.runtime.tree.ParseTree)91 TokenStreamRewriter (org.antlr.v4.runtime.TokenStreamRewriter)86 ATN (org.antlr.v4.runtime.atn.ATN)56 IOException (java.io.IOException)45 BaseJavaTest (org.antlr.v4.test.runtime.java.BaseJavaTest)43 Token (org.antlr.v4.runtime.Token)41 ParseTreeWalker (org.antlr.v4.runtime.tree.ParseTreeWalker)39 ArrayList (java.util.ArrayList)37 RecognitionException (org.antlr.v4.runtime.RecognitionException)26 StringReader (java.io.StringReader)23 ParserRuleContext (org.antlr.v4.runtime.ParserRuleContext)23 TokenStream (org.antlr.v4.runtime.TokenStream)23 Lexer (org.antlr.v4.runtime.Lexer)22