Uploaded image for project: 'Drools'
  1. Drools
  2. DROOLS-768

DSL parse error on isolated dot

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 6.3.0.Beta1
    • 6.0.1.Final
    • core engine
    • None
    • Hide

      1) create a DSL file rule.dsl :
      [when][]on recoit une simple evt

      {evtName}={evtName}

      :SimpleEvent()
      [when][]et un simple evt 2

      {evtName2} avec le meme {attribute} que {evtName}={evtName2}

      :SimpleEvent2(

      {attribute}=={evtName}.{attribute}

      )
      [then][]youpi=System.out.println("that works");

      2) create a DSLR file rule.dslr :

      import fr.edf.distribution.modele.SimpleEvent
      import fr.edf.distribution.modele.SimpleEvent2

      declare SimpleEvent
      @role( fact )
      end

      declare SimpleEvent2
      @role( fact )
      end

      expander "rule.dsl"

      rule "RG_CORR_RECOK_OK"
      when
      on recoit une simple evt $evt
      et un simple evt 2 $evt2 avec le meme code que $evt
      then
      youpi
      end

      3) Result :
      text=DSL parser error], Message [id=2, level=ERROR, path=rule.dslr, line=3, column=0
      text=[3] Unable to expand: et un simple evt 2 $evt2 avec le meme code que $evt], Message [id=3, level=ERROR, path=rule.dslr, line=2, column=0
      text=[2] No mapping entries for expanding: youpi], Message [id=4, level=ERROR, path=rule.dslr, line=2, column=0
      text=[2] Unable to expand: youpi], Message [id=5, level=ERROR, path=rule.dslr, line=19, column=0
      text=[ERR 102] Line 19:11 mismatched input 'un' in rule "RG_CORR_RECOK_OK"]]

      4) If I change the condition :
      [when][]et un simple evt 2

      {evtName2} avec le meme {attribute} que {evtName}={evtName2}

      :SimpleEvent2(

      {attribute}=={evtName}.{attribute}

      )
      with :
      [when][]et un simple evt 2

      {evtName2} avec le meme {attribute} que {evtName}={evtName2}

      :SimpleEvent2(

      {attribute}=={attribute}

      )
      or
      [when][]et un simple evt 2

      {evtName2} avec le meme {attribute} que {evtName}={evtName2}

      :SimpleEvent2(

      {attribute}==$evt.{attribute}

      )

      That's not producing the error. DSL are not working fine when the "dot character" is after "}".

      Kind regards

      Show
      1) create a DSL file rule.dsl : [when] []on recoit une simple evt {evtName}={evtName} :SimpleEvent() [when] []et un simple evt 2 {evtName2} avec le meme {attribute} que {evtName}={evtName2} :SimpleEvent2( {attribute}=={evtName}.{attribute} ) [then] []youpi=System.out.println("that works"); 2) create a DSLR file rule.dslr : import fr.edf.distribution.modele.SimpleEvent import fr.edf.distribution.modele.SimpleEvent2 declare SimpleEvent @role( fact ) end declare SimpleEvent2 @role( fact ) end expander "rule.dsl" rule "RG_CORR_RECOK_OK" when on recoit une simple evt $evt et un simple evt 2 $evt2 avec le meme code que $evt then youpi end 3) Result : text=DSL parser error], Message [id=2, level=ERROR, path=rule.dslr, line=3, column=0 text= [3] Unable to expand: et un simple evt 2 $evt2 avec le meme code que $evt], Message [id=3, level=ERROR, path=rule.dslr, line=2, column=0 text= [2] No mapping entries for expanding: youpi], Message [id=4, level=ERROR, path=rule.dslr, line=2, column=0 text= [2] Unable to expand: youpi], Message [id=5, level=ERROR, path=rule.dslr, line=19, column=0 text= [ERR 102] Line 19:11 mismatched input 'un' in rule "RG_CORR_RECOK_OK"]] 4) If I change the condition : [when] []et un simple evt 2 {evtName2} avec le meme {attribute} que {evtName}={evtName2} :SimpleEvent2( {attribute}=={evtName}.{attribute} ) with : [when] []et un simple evt 2 {evtName2} avec le meme {attribute} que {evtName}={evtName2} :SimpleEvent2( {attribute}=={attribute} ) or [when] []et un simple evt 2 {evtName2} avec le meme {attribute} que {evtName}={evtName2} :SimpleEvent2( {attribute}==$evt.{attribute} ) That's not producing the error. DSL are not working fine when the "dot character" is after "}". Kind regards

      Hello,

      I've a problem parsing DSL files when containing an "isolated dot" on version
      <drools.version>6.0.3-redhat-7</drools.version>
      <drools.core.patch.version>BZ-1165207</drools.core.patch.version>
      <drools.reteoo.patch.version>BZ-1165207</drools.reteoo.patch.version>

            mfusco@redhat.com Mario Fusco
            balnoi_medved Christophe Dame (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: