nitvm: Fixing a bad allocation of internal structures for attributes

Signed-off-by: Julien Pagès <julien.projet@gmail.com>
nitvm: Keep the positions of methods and attributes blocks in each class

Signed-off-by: Julien Pagès <julien.projet@gmail.com>
nitvm: Introduce a custom algorithm for ordering superclasses

Signed-off-by: Julien Pagès <julien.projet@gmail.com>
model: intro a service to get the `Pointer` type

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
pkgconfig: if there is no argument, use the module name

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
lib: update egl, glesv2 & x11 to use pkgconfig without args

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
lib: intro `re`, regular expressions in Nit

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
modelize: works if abstract, intern and extern are annotations

Signed-off-by: Jean Privat <jean@pryen.org>
serialisation_phase: use `AMethPropdef` instead of `AConcreteInitPropdef`

Signed-off-by: Jean Privat <jean@pryen.org>
lib: Introduce `markdown`, a Markdown parser for Nit.

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
tests: rename `test_markdown.nit` to `test_docdown` to avoid name conflicts with `lib/markdown`.

`src/markdown` will be replaced by `src/doc_down` in a later PR.

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
tests: update tests for markdown.

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
ffi: use `AMethPropdef` instead of `AExternPropdef`

Signed-off-by: Jean Privat <jean@pryen.org>
Merge: Benitlux web interface

Also:
* Fix nitserial
* Improve nitcorn
* Add the config of xymus.net as example for nitcorn

Pull-Request: #708
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Merge: Superclasses ordering in nitvm and a bug fix

The first commit fixes a bug in the allocation of internal attributes structures.

The second commit introduces structures for saving the offsets of each block of methods and attributes in each class.
For now, this is not used, but later this will help the compilation/recompilation protocol to chose which implementation mechanism could be used for a given call site.

The third commit presents an algorithm for ordering superclasses (a kind of linearization). This computed order is the order of classes in virtual tables.
This order is computed to follow the rule called "prefix condition": for a given class that we are currently ordering, we try to put the order of one of its direct superclasses in prefix of its own order.

Pull-Request: #728
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Jean Privat <jean@pryen.org>
Merge: Regular expressions & prop to bring back a better `String::has(Pattern)`

As asked by everyone...

`String::has(Pattern)` is much faster than `String::index_of(Pattern)` with regex. It can be optimized even more with `optimize_is_in`.

I'll be waiting after the test to make sure that it doesn't break anything.

What do you think of the doc/tests on the protected methods? I don't have any info to add, only tests and `requires`.

The only TODO would be to implement subexpressions; to get the the substrings of the parenthetical subexpressions of a single match. It is not the most common use but could be useful in some compilers.

Pull-Request: #732
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Merge: pkgconfig annotation uses the module name if no packages are specified

Pull-Request: #735
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Merge: Clean AMethPropdef clients

1. Update code to not rely on specific subclasses of AMethPropdef
2. Implements alternative path where abstract, intern and extern are annotations

The next PR should modify the grammar.

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

# lib: Introduce `markdown`, a Markdown parser for Nit.

_Please consider only f9c54c4, since previous commit are merged from #627._

This is the first step towards a better markdown interpretation into Nit code comments.
Next step will be to replace the current markdown parser used in `src/markdown`.

This parser try to be a little more closer to the Markdown specification from http://daringfireball.net/projects/markdown/ than the actual parser.
That said, some rules are not strictly followed as explained in the `README`.
Some other rules or features are not yet fully implemented, see `TODO` and `FIXME` in code.

Pull-Request: #680
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
nitg*: extern classes a polymorph in Nit, and unboxed only for extern methods

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>