3

ExpressionEvaluatorライブラリのクラスの単純な使用例を考えてみましょうJanino。つまり、次のように式のパラメータを推測するために使用する場合です。

public static String[] getParameters(String expression) { // Suppress exceptions
    try {
        return ExpressionEvaluator.guessParameterNames(
                new Scanner(null, new StringReader(expression)));
    } catch (Exception e) {
    }

    return null;
}

上記は、私が使用した任意のタイプの式(非常にあいまいなものを含む)で非常にうまく機能しますが(100%)、パラメーターのいずれかが大文字で始まる場合は省略されます.

たとえば、式

aVar + Another

aVar上記のメソッドに渡された場合、1 つのパラメーター ( ) のみが生成されますが、他のパラメーター ( Another) は無視されます。

この動作の説明はありますか (たとえば、大文字で始まる変数はクラス名と見なされます)?

最も重要なことは、説明されている動作を何らかの方法でバイパスできるか (たとえば、何らかの構成オプションを介して) ことです。


アップデート

どうやら制限はより一般的で、大文字で始まるすべてのパラメーターに影響します。これは、 JANINO-151で説明され、関連するディスカッションで言及されているように、Janinoの既知の制限 (または機能)です。

実際、 Janino ExpressionEvaluator クラスguessParameterNames()のメソッドのソース コードはこれを裏付けています。

4

0 に答える 0