Skip to content

Fix issue #16893 - "exec" instruction crashes Scilab

Cédric DELAMARRE requested to merge SciCed/scilab:fix-issue-16893 into 6.1

Issue

Fixed issue #16893 (closed) - Scilab crashes when printing the following expression.

minimal.sce (two lines)

1;//
;
exec minimal.sce

Description

Manage expressionLineBreak in the recursiveExpression and remove the recurring call of expressionLineBreak to avoid seeing the whole script as one recursiveExpression.
The problem was that the last column of the comment was set to the last column of the last semicolumn, so the comment exp has a start bigger than the end.

Rules

Without the fix

--- RULES ---
|_./ program : expressions
  |_./ expressions : recursiveExpression 
    |_./ recursiveExpression : recursiveExpression expression expressionLineBreak <-- one recursiveExpression with recursive expressionLineBreak 
      |_./ expressionLineBreak : expressionLineBreak SEMI 
        |_./ expressionLineBreak : EOL 
      |_./ expression : COMMENT 
      |_./ recursiveExpression : expression expressionLineBreak 
        |_./ expressionLineBreak : SEMI 
        |_./ expression : variable 
          |_./ variable : 1 

With the fix

--- RULES ---
|_./ program : expressions
  |_./ expressions : recursiveExpression 
    |_./ recursiveExpression : recursiveExpression expressionLineBreak              <-- second line ";"
      |_./ expressionLineBreak : SEMI 
      |_./ recursiveExpression : recursiveExpression expression expressionLineBreak <-- first line "1;//(eol)"
        |_./ expressionLineBreak : EOL 
        |_./ expression : COMMENT 
        |_./ recursiveExpression : expression expressionLineBreak 
          |_./ expressionLineBreak : SEMI 
          |_./ expression : variable 
            |_./ variable : 1 

how to get grammar rules (Linux)

  • uncomment #define DEBUG_RULES in parsescilab.yy
  • add --enable-build-parser to the configure

Merge request reports