Skip to content

wrong calculate #14

@mnj2kk

Description

@mnj2kk

@yegor256, i fixed regex for left part of a rule:
^([a-z.]+)\d?(([^)]+))$.
For this eo code:

  seq2 > @
    5.div
      x
    seq2 > @
      nop
      nop

debug:

<?xml version="1.0" encoding="UTF-8"?>\n
<o expected="\perp"\n
   line="4"\n
   name="test"\n
   original-name="test"\n
   pos="0">\n
   <o line="4" name="x" pos="1">\n
      <opts>\n
         <r f=".div" pos="2" tau="3">\n
            <r f="org.eolang.seq2" pos="1" tau="2"/>\n
         </r>\n
      </opts>\n
   </o>\n
   <o base="org.eolang.seq2" line="5" name="@" pos="2">\n
      <o base=".div" line="6">\n
         <o base="org.eolang.int" data="int" line="6" pos="4">5</o>\n
         <o base="x" line="7" pos="6" ref="4"/>\n
      </o>\n
      <o base="org.eolang.seq2" line="8" name="@" pos="4">\n
         <o base="org.eolang.nop" line="9" pos="6"/>\n
         <o base="org.eolang.nop" line="10" pos="6"/>\n
      </o>\n
      <o data="5" line="6" name="κ-5-6"/>\n
   </o>\n
   <o data="5" line="6" name="κ-5-6">\n
      <opts>\n
         <r f=".div" pos="1" tau="3">\n
            <r f="org.eolang.seq2" pos="1" tau="2"/>\n
         </r>\n
      </opts>\n
   </o>\n
</o>\n
<EOF>
[DEBUG] com.yegor256.xsline.StLogged: Shift #4 via 'calculate' produced:
<?xml version="1.0" encoding="UTF-8"?>\n
<o expected="\perp"\n
   line="4"\n
   name="test"\n
   original-name="test"\n
   pos="0">\n
   <o line="4" name="x" pos="1">\n
      <opts>\n
         <opt m=".div(org.eolang.seq2(\perp)[1]=NONE)[2]" x="1">{𝜏3:1=1} {𝜏2:1=1}</opt>\n
      </opts>\n
   </o>\n
   <o base="org.eolang.seq2" line="5" name="@" pos="2">\n
      <o base=".div" line="6">\n
         <o base="org.eolang.int" data="int" line="6" pos="4">5</o>\n
         <o base="x" line="7" pos="6" ref="4"/>\n
      </o>\n
      <o base="org.eolang.seq2" line="8" name="@" pos="4">\n
         <o base="org.eolang.nop" line="9" pos="6"/>\n
         <o base="org.eolang.nop" line="10" pos="6"/>\n
      </o>\n
      <o data="5" line="6" name="κ-5-6"/>\n
   </o>\n
   <o data="5" line="6" name="κ-5-6">\n
      <opts>\n
         <opt m=".div(org.eolang.seq2(\perp)[1]=NONE)[1]" x="NONE">{𝜏3:1=1} {𝜏2:1=1}</opt>\n
      </opts>\n
   </o>\n
</o>\n
<EOF>

If replace seq2 with foo, then debug is:

[DEBUG] com.yegor256.xsline.StLogged: Shift #3 via 'reverses' produced:
<?xml version="1.0" encoding="UTF-8"?>\n
<o expected="\perp"\n
   line="4"\n
   name="test"\n
   original-name="test"\n
   pos="0">\n
   <o line="4" name="x" pos="1">\n
      <opts>\n
         <r f=".div" pos="2" tau="3">\n
            <r f="org.eolang.foo" pos="1" tau="2"/>\n
         </r>\n
      </opts>\n
   </o>\n
   <o base="org.eolang.foo" line="5" name="@" pos="2">\n
      <o base=".div" line="6">\n
         <o base="org.eolang.int" data="int" line="6" pos="4">5</o>\n
         <o base="x" line="7" pos="6" ref="4"/>\n
      </o>\n
      <o base="org.eolang.foo" line="8" name="@" pos="4">\n
         <o base="org.eolang.nop" line="9" pos="6"/>\n
         <o base="org.eolang.nop" line="10" pos="6"/>\n
      </o>\n
      <o data="5" line="6" name="κ-5-6"/>\n
   </o>\n
   <o data="5" line="6" name="κ-5-6">\n
      <opts>\n
         <r f=".div" pos="1" tau="3">\n
            <r f="org.eolang.foo" pos="1" tau="2"/>\n
         </r>\n
      </opts>\n
   </o>\n
</o>\n
<EOF>
[DEBUG] com.yegor256.xsline.StLogged: Shift #4 via 'calculate' produced:
<?xml version="1.0" encoding="UTF-8"?>\n
<o expected="\perp"\n
   line="4"\n
   name="test"\n
   original-name="test"\n
   pos="0">\n
   <o line="4" name="x" pos="1">\n
      <opts>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\any)[2]" x="\any">{𝜏3:1=1} {𝜏2:3=1}</opt>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\perp)[2]" x="\perp">{𝜏3:3=1} {𝜏2:3=2}</opt>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\perp)[2]" x="\any">{𝜏3:3=2} {𝜏2:3=2}</opt>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\perp)[2]" x="0">{𝜏3:3=3} {𝜏2:3=2}</opt>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\perp)[2]" x="\perp">{𝜏3:3=1} {𝜏2:3=3}</opt>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\perp)[2]" x="\any">{𝜏3:3=2} {𝜏2:3=3}</opt>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\perp)[2]" x="0">{𝜏3:3=3} {𝜏2:3=3}</opt>\n
      </opts>\n
   </o>\n
   <o base="org.eolang.foo" line="5" name="@" pos="2">\n
      <o base=".div" line="6">\n
         <o base="org.eolang.int" data="int" line="6" pos="4">5</o>\n
         <o base="x" line="7" pos="6" ref="4"/>\n
      </o>\n
      <o base="org.eolang.foo" line="8" name="@" pos="4">\n
         <o base="org.eolang.nop" line="9" pos="6"/>\n
         <o base="org.eolang.nop" line="10" pos="6"/>\n
      </o>\n
      <o data="5" line="6" name="κ-5-6"/>\n
   </o>\n
   <o data="5" line="6" name="κ-5-6">\n
      <opts>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\any)[1]" x="\any">{𝜏3:1=1} {𝜏2:3=1}</opt>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\perp)[1]" x="\any">{𝜏3:3=1} {𝜏2:3=2}</opt>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\perp)[1]" x="\perp">{𝜏3:3=2} {𝜏2:3=2}</opt>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\perp)[1]" x="\any">{𝜏3:3=3} {𝜏2:3=2}</opt>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\perp)[1]" x="\any">{𝜏3:3=1} {𝜏2:3=3}</opt>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\perp)[1]" x="\perp">{𝜏3:3=2} {𝜏2:3=3}</opt>\n
         <opt m=".div(org.eolang.foo(\perp)[1]=\perp)[1]" x="\any">{𝜏3:3=3} {𝜏2:3=3}</opt>\n
      </opts>\n
   </o>\n
</o>\n
<EOF>

Can you help because I can't understand why this is happening.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions