nitlang / nit

Nit language
http://nitlanguage.org
Apache License 2.0
239 stars 65 forks source link

Parse error with ranges and arrays #187

Closed Morriar closed 10 years ago

Morriar commented 10 years ago
var range = [1..args[0]]
var range = [1..args[0][

Both statements raise a syntax error yet semantically correct

Syntax error: unexpected literal value '0'.
    var range = [1..args[0][
                         ^

Is this a parser limitation or a bug in the grammar?

privat commented 10 years ago

En fonction du point de vu, ca peut etre l'un ou l'autre (ou les deux). La grammaire qui traiterait correctement ces deux cas n'est pas LR1. Donc on fait au mieux.

La grammaire de Nit implémentée demande de protéger l'élément de droite avec des parenthèses.

var range = [1..(args[0])]

Le second pb c'est que je vois pas trop comment avoir un meilleur message d'erreur avec sablecc3

Morriar commented 10 years ago

Ok je vois le point.

Peut-être analyser les messages d'erreurs de sablecc3 et les reformuler... ou attendre sablecc4.