legacy 5.x syntax deserves to be abandonned

classic Classic list List threaded Threaded
3 messages Options
mottelet mottelet
Reply | Threaded
Open this post in threaded view
|

legacy 5.x syntax deserves to be abandonned

Hello,

While fixing

http://bugzilla.scilab.org/show_bug.cgi?id=15623
http://bugzilla.scilab.org/show_bug.cgi?id=15624

I discovered that gross syntax errors such as

max(,), max(1,) mean(,)...

are not trapped by the parser. As a consequence, tokens of type
internalType:ScilabVoid are given to the gateway in the input arguments.

There are a lot of scilab functions which do not correctly handle this.
For example,

max(1,) and atan(1,) crash Scilab

max(,), gives a message about a missing overloading function for
ScilabVoid type.

Why such an dumb syntax has been kept as valid in Scilab 6 ? Does even
somebody remember if there exist some legacy code needing this ?

There is a potentially huge number of gateways to be fixed because of
this too permissive syntax.

However, all problems can be fixed by yanking lines 661:666 in
parseScilab.yy (666: Number of the Beast).

S.

--
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet

_______________________________________________
dev mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/dev
mottelet mottelet
Reply | Threaded
Open this post in threaded view
|

Re: legacy 5.x syntax deserves to be abandonned

Le 22/06/2018 à 10:28, Stéphane Mottelet a écrit :

> Hello,
>
> While fixing
>
> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/bugzilla.scilab.org/show_bug.cgi?id=15623 
>
> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/bugzilla.scilab.org/show_bug.cgi?id=15624 
>
>
> I discovered that gross syntax errors such as
>
> max(,), max(1,) mean(,)...
>
> are not trapped by the parser. As a consequence, tokens of type
> internalType:ScilabVoid are given to the gateway in the input arguments.
>
> There are a lot of scilab functions which do not correctly handle
> this. For example,
>
> max(1,) and atan(1,) crash Scilab
>
> max(,), gives a message about a missing overloading function for
> ScilabVoid type.
>
> Why such an dumb syntax has been kept as valid in Scilab 6 ? Does even
> somebody remember if there exist some legacy code needing this ?
>
> There is a potentially huge number of gateways to be fixed because of
> this too permissive syntax.
>
> However, all problems can be fixed by yanking lines 661:666 in
> parseScilab.yy (666: Number of the Beast).
>
> S.
>
Here are the error messages after the fix in parseScilab.yy:

--> max(,)
max(,)
      ^
Error: syntax error, unexpected ","

--> max(1,)
max(1,)
       ^^
Error: syntax error, unexpected )

S.

--
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet

_______________________________________________
dev mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/dev
mottelet mottelet
Reply | Threaded
Open this post in threaded view
|

Re: legacy 5.x syntax deserves to be abandonned

In reply to this post by mottelet

The following (fixed) bug

http://bugzilla.scilab.org/10279

shows that such a syntax was considered as an error, but only for user-defined functions. (it has not been fixed at the parser level). I don't see any reason why the syntax should be accepted for built-in functions.

S.

Quoting Stéphane Mottelet <[hidden email]>:

Hello,

While fixing

https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/bugzilla.scilab.org/show_bug.cgi?id=15623
https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/bugzilla.scilab.org/show_bug.cgi?id=15624

I discovered that gross syntax errors such as

max(,), max(1,) mean(,)...

are not trapped by the parser. As a consequence, tokens of type internalType:ScilabVoid are given to the gateway in the input arguments.

There are a lot of scilab functions which do not correctly handle this. For example,

max(1,) and atan(1,) crash Scilab

max(,), gives a message about a missing overloading function for ScilabVoid type.

Why such an dumb syntax has been kept as valid in Scilab 6 ? Does even somebody remember if there exist some legacy code needing this ?

There is a potentially huge number of gateways to be fixed because of this too permissive syntax.

However, all problems can be fixed by yanking lines 661:666 in parseScilab.yy (666: Number of the Beast).

S.

--
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/www.utc.fr/~mottelet

_______________________________________________
dev mailing list
[hidden email].<a href="orghttps://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/dev" target="_blank">orghttps://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/dev




_______________________________________________
dev mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/dev