@Override public void exitVirtdataFlow(VirtDataParser.VirtdataFlowContext ctx) { model.addFlow(flows.pop()); flowContexts.pop(); }
public static VirtDataDSL.ParseResult parse(String input) { try { CodePointCharStream cstream = CharStreams.fromString(input); VirtDataLexer lexer = new VirtDataLexer(cstream); CommonTokenStream tokens = new CommonTokenStream(lexer); VirtDataParser parser = new VirtDataParser(tokens); VirtDataBuilder astListener = new VirtDataBuilder(); parser.addParseListener(astListener); VirtDataParser.VirtdataFlowContext virtdataFlowContext = parser.virtdataFlow(); logger.trace("parse tree: " + virtdataFlowContext.toStringTree(parser)); if (astListener.hasErrors()) { System.out.println(astListener.getErrorNodes()); } VirtDataAST ast = astListener.getModel(); List<VirtDataFlow> flows = ast.getFlows(); if (flows.size() > 1) { throw new RuntimeException("Only one flow expected here."); } if (astListener.hasErrors()) { throw new RuntimeException("Error parsing input '" + input + "'"); } return new ParseResult(flows.get(0)); } catch (Exception e) { logger.warn("Error while parsing flow:" + e.getMessage()); return new ParseResult(e); } }
public static VirtDataDSL.ParseResult parse(String input) { try { CodePointCharStream cstream = CharStreams.fromString(input); VirtDataLexer lexer = new VirtDataLexer(cstream); CommonTokenStream tokens = new CommonTokenStream(lexer); VirtDataParser parser = new VirtDataParser(tokens); VirtDataBuilder astListener = new VirtDataBuilder(); parser.addParseListener(astListener); VirtDataParser.VirtdataFlowContext virtdataFlowContext = parser.virtdataFlow(); logger.trace("parse tree: " + virtdataFlowContext.toStringTree(parser)); if (astListener.hasErrors()) { System.out.println(astListener.getErrorNodes()); } VirtDataAST ast = astListener.getModel(); List<VirtDataFlow> flows = ast.getFlows(); if (flows.size() > 1) { throw new RuntimeException("Only one flow expected here."); } if (astListener.hasErrors()) { throw new RuntimeException("Error parsing input '" + input + "'"); } return new ParseResult(flows.get(0)); } catch (Exception e) { logger.warn("Error while parsing flow:" + e.getMessage()); return new ParseResult(e); } }
@Override public void exitVirtdataFlow(VirtDataParser.VirtdataFlowContext ctx) { model.addFlow(flows.pop()); flowContexts.pop(); }