Details
Description
I've embedded a GroovySh console inside a server and using it works fine except when i try to parse multiline strings like:
a='''Hello
World'''
in the console it will fail as soon as i hit enter
console:000> a='''Hello
ERROR org.apache.groovy.parser.antlr4.GroovySyntaxError:
Unexpected character: '\''
and it will point to the third quote on line 1
On the server side i get this exception:
DEBUG [org.apache.groovy.groovysh.CommandsMultiCompleter] Refreshing the completer list DEBUG [org.apache.groovy.groovysh.InteractiveShellRunner] Running DEBUG [org.apache.groovy.groovysh.InteractiveShellRunner] Read line: a='''Hello DEBUG [org.apache.groovy.groovysh.antlr4.RelaxedParser] Parsing: a='''Hello DEBUG [org.apache.groovy.groovysh.InteractiveShellRunner] Work failed: org.apache.groovy.parser.antlr4.GroovySyntaxError: Unexpected character: '\'' org.apache.groovy.parser.antlr4.GroovySyntaxError: Unexpected character: '\'' at org.apache.groovy.parser.antlr4.SyntaxErrorReportable.throwSyntaxError(SyntaxErrorReportable.java:64) at org.apache.groovy.parser.antlr4.SyntaxErrorReportable.require(SyntaxErrorReportable.java:38) at org.apache.groovy.parser.antlr4.SyntaxErrorReportable.require(SyntaxErrorReportable.java:31) at org.apache.groovy.parser.antlr4.GroovyLexer.UNEXPECTED_CHAR_action(GroovyLexer.java:589) at org.apache.groovy.parser.antlr4.GroovyLexer.action(GroovyLexer.java:468) at groovyjarjarantlr4.v4.runtime.atn.LexerCustomAction.execute(LexerCustomAction.java:98) at groovyjarjarantlr4.v4.runtime.atn.LexerActionExecutor.execute(LexerActionExecutor.java:172) at groovyjarjarantlr4.v4.runtime.atn.LexerATNSimulator.accept(LexerATNSimulator.java:361) at groovyjarjarantlr4.v4.runtime.atn.LexerATNSimulator.failOrAccept(LexerATNSimulator.java:294) at groovyjarjarantlr4.v4.runtime.atn.LexerATNSimulator.execATN(LexerATNSimulator.java:229) at groovyjarjarantlr4.v4.runtime.atn.LexerATNSimulator.match(LexerATNSimulator.java:116) at groovyjarjarantlr4.v4.runtime.Lexer.nextToken(Lexer.java:142) at groovyjarjarantlr4.v4.runtime.BufferedTokenStream.fetch(BufferedTokenStream.java:170) at groovyjarjarantlr4.v4.runtime.BufferedTokenStream.fill(BufferedTokenStream.java:488) at groovyjarjarantlr4.v4.runtime.BufferedTokenStream$fill.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130) at org.apache.groovy.groovysh.antlr4.RelaxedParser.parse(RelaxedParser.groovy:50) at org.apache.groovy.groovysh.Parsing$parse.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139) at org.apache.groovy.groovysh.Parser.parse(Parser.groovy:67) at org.apache.groovy.groovysh.Parser$parse.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139) at org.apache.groovy.groovysh.Groovysh.execute(Groovysh.groovy:190) at org.apache.groovy.groovysh.Shell.leftShift(Shell.groovy:121) at org.apache.groovy.groovysh.Shell$leftShift$0.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139) at org.apache.groovy.groovysh.ShellRunner.work(ShellRunner.groovy:93) at org.apache.groovy.groovysh.InteractiveShellRunner.super$2$work(InteractiveShellRunner.groovy) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1268) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:144) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:164) at org.apache.groovy.groovysh.InteractiveShellRunner.work(InteractiveShellRunner.groovy:157) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:193) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:61) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:176) at org.apache.groovy.groovysh.ShellRunner.run(ShellRunner.groovy:57) at org.apache.groovy.groovysh.InteractiveShellRunner.super$2$run(InteractiveShellRunner.groovy) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1268) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:144) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:164) at org.apache.groovy.groovysh.InteractiveShellRunner.run(InteractiveShellRunner.groovy:116) at java_lang_Runnable$run.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130) at org.apache.groovy.groovysh.Groovysh.run(Groovysh.groovy:658) at pilot.server.console.GroovyShellCommand.lambda$start$0(GroovyShellCommand.java:112)
I have discussed this over Slack with paulk and he was able to reproduce this error. He commented that slashy strings works (and they do)
a=/Hello World/
and that the issue may be related to this fix: https://github.com/apache/groovy/commit/c28da4be
not been updated in GroovySh.
You can check the whole conversation over slack (thread) here:
https://groovy-community.slack.com/archives/C2NEFCM55/p1657102392749539
Attachments
Issue Links
- links to