grammar: remove no before comma in idlist

Signed-off-by: Jean Privat <jean@pryen.org>
grammar: remove useless production expr_final

Signed-off-by: Jean Privat <jean@pryen.org>
ast: kill AProxyExpr

Signed-off-by: Jean Privat <jean@pryen.org>
lib/standard: improve documentation of `Float::to_s`

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
debugger: Removed module Breakpoint, moved Breakpoint class to debugger module

Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
debugger: Added help/bad_command functions

Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
debugger: Simplified names and integrate bad_command/help functions

Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

Conflicts:
	src/interpreter/debugger.nit
interpreter: do the varargization in the ANodes

Signed-off-by: Jean Privat <jean@pryen.org>
interpreter: remove useless methods `*call_without_varargs`

since varargs is now done at the AST level.

Signed-off-by: Jean Privat <jean@pryen.org>
compiler: do the varargization in the ANodes

Signed-off-by: Jean Privat <jean@pryen.org>
global_compiler: remove useless methods since varargisation is done at the AST level

Signed-off-by: Jean Privat <jean@pryen.org>
src: remove two TODO that are done/unneeded

Signed-off-by: Jean Privat <jean@pryen.org>
grammar: minus and once do not need nopar variants

Signed-off-by: Jean Privat <jean@pryen.org>
brainfuck: Added a simple Brainfuck interpreter

Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
file: Fix `join_path` to handle paths ending with a slash.

Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
typing+engines: handle reverse-vararg: passing an array as-is.

Signed-off-by: Jean Privat <jean@pryen.org>
tests: add base_vararg3.nit

Signed-off-by: Jean Privat <jean@pryen.org>
Merge: Better varargs

since their introduction in Nit, varargs had a quick and dirty implementation.
They where implemented with a complex path in the low-level parts of engine instead being implemented at  the AST level as it should be: varargs is more a syntactic sugar than something else.

Thus this PR changes the implementation of varargs in the engines.
This rationalize the `varargize` methods and simplify the code for low-level part (and also solve some bugs)

Additionally, the reverse-vararg, already accepted by the parser but unused until now, is implemented.
The principle it to pass an array where a vararg is expected.
Because of static ambiguities, the array passed as-is must be annotated with an ellipsis (`...`).

~~~nit
fun foo (xs: Object...) do print x.join("-")
foo(1,2,3) # prints "1-2-3"
var a = [1,2,3]
foo(a...) # prints "1-2-3"
foo(a) # pass `[a]`, a new array with a single element `a`, to foo, thus prints "123"
foo(1...) # Static Type Error: expected Array[Object], got Int.
~~~

Still, I think that error messages should be improved (cf. #98) but this seems to need some additional work in the error infrastructure.

A remaining question is what is the best acceptable type passed.
In the proposed implementation, the reverse-vararg must be a compatible Array (so a Sequence or a List are not accepted) and is given as is to the real method, that is allowed to modify it.
Should we change the type on a vararg to be a Sequence, a SequenceRead, of even a simple Collection ?

Pull-Request: #827
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Merge: src: remove two TODO that are done/unneeded

Pull-Request: #830
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Merge: Brainfuck

As the name implies, this is a very simple Brainfuck interpreter written in Nit.

Yes, it is (mostly) useless, but it might serve as an example of a simple Nit program.

Pull-Request: #828
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>