Parsing error when parsing "embedded" CPT in Leapp

Issue #12 closed
Former user created an issue

Originally reported on Google Code with ID 12

Consider the following CPT example in Leapp;

x = ?:(1/3)
y = ?:(1/4)
z1 = ?! ( ~x & ~y -> ?:(1/5),
          ~x &  y -> ?:(1/7),
           x & ~y -> ?:(1/2),
           x &  y -> ?:(1/2))

Notice that z1 is independent of y when x is true (i.e. "context-specific Independence").

The following refactoring

z4 = ?! ( ~x -> ?! ( ~y -> ?:(1/5),
                      y -> ?:(1/7)),
           x -> ?:(1/2))

is not correctly parsed by Leapp, which reports

Python error: too many values to unpack (expected 2)

After activating the debug mode of Leapp, the following trace is displayed:

Traceback (most recent call last):
  File "/Users/admin/Documents/lea2/leapp_console.py", line 108, in startCmdLoop
    self.execLeappTranslatorMultilineStatement(rMultilineStatement)
  File "/Users/admin/Documents/lea2/leapp_console.py", line 71, in execLeappTranslatorMultilineStatement
    pMultilineStatement = LeappTranslator.getTarget00(rMultilineStatement)
  File "/Users/admin/Documents/lea2/leapp_translator.py", line 107, in getTarget00
    pStatementLines.append(identStr+LeappTranslator.getTarget0(unindentedLeaStatementLine))
  File "/Users/admin/Documents/lea2/leapp_translator.py", line 143, in getTarget0
    return headTarget + LeappTranslator.getTarget0b(sourceFragment) + tailTarget
  File "/Users/admin/Documents/lea2/leapp_translator.py", line 151, in getTarget0b
    target = LeappTranslator.getTarget1(sourceFragment)
  File "/Users/admin/Documents/lea2/leapp_translator.py", line 189, in getTarget1
    unstringedTargetFragment = LeappTranslator.getTarget(unstringedFragment)
  File "/Users/admin/Documents/lea2/leapp_translator.py", line 266, in getTarget
    targetFragment = LeappTranslator.parse(targetFragment,'?!' ,'(',')','Lea.buildCPT(*(%s,))',LeappTranslator.treatCPTExpression)
  File "/Users/admin/Documents/lea2/leapp_translator.py", line 364, in parse
    body = treatFunc(body)
  File "/Users/admin/Documents/lea2/leapp_translator.py", line 258, in treatCPTExpression
    newCPTExpression = ','.join('(%s,%s)'%(f(condExpr),distribExpr) for (condExpr,distribExpr)
in cptItems)
  File "/Users/admin/Documents/lea2/leapp_translator.py", line 258, in <genexpr>
    newCPTExpression = ','.join('(%s,%s)'%(f(condExpr),distribExpr) for (condExpr,distribExpr)
in cptItems)
ValueError: too many values to unpack (expected 2)

Reported by pde@n-side.com on 2015-03-14 14:04:27

Comments (2)

  1. Former user Account Deleted
    Corrected in Lea 2.1.1
    

    Reported by pde@n-side.com on 2015-03-18 00:18:00 - Status changed: Verified

  2. Log in to comment