1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.commons.jexl3.parser;
18
19 import org.apache.commons.jexl3.JexlException;
20 import org.apache.commons.jexl3.JexlFeatures;
21 import org.apache.commons.jexl3.JexlInfo;
22 import org.apache.commons.jexl3.internal.Scope;
23
24 /**
25 * The interface that produces a JEXL script AST from a source.
26 * @since 3.5.0
27 */
28 public interface JexlScriptParser {
29 /**
30 * Parses a script or expression.
31 *
32 * @param info information structure
33 * @param features the set of parsing features
34 * @param src the expression to parse
35 * @param scope the script frame
36 * @return the parsed tree
37 * @throws JexlException if any error occurred during parsing
38 */
39 ASTJexlScript parse(final JexlInfo info, final JexlFeatures features, final String src, final Scope scope);
40
41 /**
42 * Parses an embedded JXLT script or expression, an interpolation expression.
43 *
44 * @param info information structure
45 * @param features the set of parsing features
46 * @param src the expression to parse
47 * @param scope the script frame
48 * @return the parsed tree
49 * @throws JexlException if any error occurred during parsing
50 */
51 default ASTJexlScript jxltParse(final JexlInfo info, final JexlFeatures features, final String src, final Scope scope) {
52 return parse(info, features, src, scope);
53 }
54
55 }