private List<String> tokenize(String symbol) { ANTLRInputStream input = new ANTLRInputStream(symbol); FEEL_1_1Lexer lexer = new FEEL_1_1Lexer( input ); List<String> tokens = new ArrayList<>( ); for (Token token = lexer.nextToken(); token.getType() != Token.EOF; token = lexer.nextToken()) { tokens.add( token.getText() ); } return tokens; }
@Override public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { switch (ruleIndex) { case 78: return JavaLetter_sempred((RuleContext)_localctx, predIndex); case 79: return JavaLetterOrDigit_sempred((RuleContext)_localctx, predIndex); } return true; } private boolean JavaLetter_sempred(RuleContext _localctx, int predIndex) {
public static FEEL_1_1Parser parse(FEELEventListenersManager eventsManager, String source, Map<String, Type> inputVariableTypes, Map<String, Object> inputVariables, Collection<FEELFunction> additionalFunctions, List<FEELProfile> profiles) { ANTLRInputStream input = new ANTLRInputStream(source); FEEL_1_1Lexer lexer = new FEEL_1_1Lexer( input ); CommonTokenStream tokens = new CommonTokenStream( lexer ); FEEL_1_1Parser parser = new FEEL_1_1Parser( tokens ); ParserHelper parserHelper = new ParserHelper(eventsManager); additionalFunctions.forEach(f -> parserHelper.getSymbolTable().getBuiltInScope().define(f.getSymbol())); profiles.stream().filter(FEELv12Profile.class::isInstance).forEach(dc -> { parserHelper.setFeatDMN12EnhancedForLoopEnabled(true); parserHelper.setFeatDMN12weekday(true); }); parser.setHelper(parserHelper); parser.setErrorHandler( new FEELErrorHandler() ); parser.removeErrorListeners(); // removes the error listener that prints to the console parser.addErrorListener( new FEELParserErrorListener( eventsManager ) ); // pre-loads the parser with symbols defineVariables( inputVariableTypes, inputVariables, parser ); return parser; }
public static List<FEELEvent> checkVariableName( String source ) { if( source == null || source.isEmpty() ) { return Collections.singletonList( new SyntaxErrorEvent( FEELEvent.Severity.ERROR, Msg.createMessage( Msg.INVALID_VARIABLE_NAME_EMPTY ), null, 0, 0, null ) ); } ANTLRInputStream input = new ANTLRInputStream(source); FEEL_1_1Lexer lexer = new FEEL_1_1Lexer( input ); CommonTokenStream tokens = new CommonTokenStream( lexer ); FEEL_1_1Parser parser = new FEEL_1_1Parser( tokens ); parser.setHelper( new ParserHelper() ); parser.setErrorHandler( new FEELErrorHandler() ); FEELParserErrorListener errorChecker = new FEELParserErrorListener( null ); parser.removeErrorListeners(); // removes the error listener that prints to the console parser.addErrorListener( errorChecker ); FEEL_1_1Parser.NameDefinitionContext nameDef = parser.nameDefinition(); if( ! errorChecker.hasErrors() && nameDef != null && source.trim().equals( parser.getHelper().getOriginalText( nameDef ) ) ) { return Collections.emptyList(); } return errorChecker.getErrors(); }