Made a cleaner Makefile

Despite still not generic it will now run lex and yacc only when needed.
It can also clean the intermediate files and is more robust against
files that could be named like the special targets.

Signed-off-by: Celelibi <celelibi@gmail.com>
Reindentation of lexer and grammar

One tab to rule them all.

Signed-off-by: Celelibi <celelibi@gmail.com>
Run the test by default when "make run"

Signed-off-by: Celelibi <celelibi@gmail.com>
Use left recursion when possible

Bison prefer left recursions over right recursions. It save memory and
little kittens.

Signed-off-by: Celelibi <celelibi@gmail.com>
Rename two non-terminals with more meaningful names

S become Algos
Commands become Algo

Signed-off-by: Celelibi <celelibi@gmail.com>
Refactoring grammar of Condition and Expression

Now they should be correct. However there are no more distinction
between conditions and expressions. Conditions are just expressions of
boolean type. And the type must be checked!

Signed-off-by: Celelibi <celelibi@gmail.com>
Reindentation of tds.[hc]

Spaces are evil.

Signed-off-by: Celelibi <celelibi@gmail.com>
Create scopes to wrap symbols

A scope is a list of symbols. A symbol do not exists on its own without
a scope. A scope may have a parent scope to use during lookups.

Signed-off-by: Celelibi <celelibi@gmail.com>
Reindentation of quad

Signed-off-by: Celelibi <celelibi@gmail.com>
Generate scopes from \Global \Local and stuff

The semantics of all the declaration is fuzzy, so all the declarations
are treated as nested local declarations.

Signed-off-by: Celelibi <celelibi@gmail.com>
Merge remote-tracking branch 'cigale-gh/master'

Signed-off-by: Celelibi <celelibi@gmail.com>

Conflicts:
	quad.h