Skip to content

error when $eval with regex #88

@sergeevik

Description

@sergeevik

simple test, must no throw exception

  @Test
  public void testEvalRegex() {
    var expression = Jsonata.jsonata("$eval('/^test.*$/')");
    expression.evaluate(null);
    // expect no exception
  }

but get error

com.dashjoin.jsonata.JException: Syntax error in expression passed to Object eval: "null"

	at com.dashjoin.jsonata/com.dashjoin.jsonata.Functions.functionEval(Functions.java:2395)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at com.dashjoin.jsonata/com.dashjoin.jsonata.Functions.call(Functions.java:2191)
	at com.dashjoin.jsonata/com.dashjoin.jsonata.Jsonata$JFunction.call(Jsonata.java:2211)
	at com.dashjoin.jsonata/com.dashjoin.jsonata.Jsonata.applyInner(Jsonata.java:1740)
	at com.dashjoin.jsonata/com.dashjoin.jsonata.Jsonata.apply(Jsonata.java:1672)
	at com.dashjoin.jsonata/com.dashjoin.jsonata.Jsonata.evaluateFunction(Jsonata.java:1642)
	at com.dashjoin.jsonata/com.dashjoin.jsonata.Jsonata._evaluate(Jsonata.java:191)
	at com.dashjoin.jsonata/com.dashjoin.jsonata.Jsonata.evaluate(Jsonata.java:131)
	at com.dashjoin.jsonata/com.dashjoin.jsonata.Jsonata.evaluate(Jsonata.java:2583)
	at com.dashjoin.jsonata/com.dashjoin.jsonata.Jsonata.evaluate(Jsonata.java:2544)
	at com.dashjoin.jsonata/com.dashjoin.jsonata.CustomFunctionTest.testEvalRegex(CustomFunctionTest.java:92)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

In jsonata online https://try.jsonata.org/cn07pHjgg

Image

problem maybe in token parser
Tokenizer.java row ~ 174 where method
Token next(boolean prefix) {

error init in 202 row return create("regex", scanRegex());
when exec scanRegex position == length, method ignore while and exec throw new JException("S0302", position);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions