Fix issue #16893 - "exec" instruction crashes Scilab
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 theconfigure