Alias overloading

Alias overloading is the ability to use the same alias with a different set of arguments.

A special kind of block called choice adds overloading to the alias definition. A choice-block starts with a double colon ::. Each array item in this block represents a case. A case is a block with or without parameters. When Syntactik compiler is processing an alias, and there is a choice in the corresponding alias definition, then the compiler tries to resolve cases in the choice one by one. The first case that is successfully resolved represents the value of choice and the processing of choice stops. A case is considered to be resolved if all parameters (without a default value) in the case have corresponding arguments in the alias. If a case has no parameters, then it will always be resolved unless any sibling cases are resolved before.