soartech/jsoar

default interpreter doesn't like ;# on last line of rule

marinier opened this issue · 1 comments

This rule works fine in csoar and the jsoar tcl interpreter, but throws an exception in jsoar with the default interpreter:

sp {test
(state ^superstate nil)
-->
( ^test true)} ;# a comment

Note that the ; is required for this to be valid tcl. The exception is:

SEVERE: unknown:1: Expected sp body, got [sp, test
(state ^superstate nil)
-->
( ^test true), ;#, a, comment]
org.jsoar.kernel.SoarException: unknown:1: Expected sp body, got [sp, test
(state ^superstate nil)
-->
( ^test true), ;#, a, comment]
at org.jsoar.kernel.commands.SpCommand.execute(SpCommand.java:35)
at org.jsoar.util.commands.DefaultInterpreter.executeParsedCommand(DefaultInterpreter.java:203)
at org.jsoar.util.commands.DefaultInterpreter.eval(DefaultInterpreter.java:192)
at org.jsoar.util.commands.DefaultInterpreter.evalAndClose(DefaultInterpreter.java:163)
at org.jsoar.util.commands.DefaultInterpreter.eval(DefaultInterpreter.java:108)
at org.jsoar.debugger.ProductionEditView$7.call(ProductionEditView.java:204)
at org.jsoar.debugger.ProductionEditView$7.call(ProductionEditView.java:1)
at org.jsoar.runtime.ThreadedAgent$6.run(ThreadedAgent.java:476)
at org.jsoar.runtime.ThreadedAgent$AgentThread.run(ThreadedAgent.java:584)

The default interpreter was missing support for semicolons in general.

Fixed this, and some other semicolon bugs, in 9ef28ba (in semicolon-patch branch).