There is also a start for early binding ones as well, but that is unused
for now. A LateBindingKeyword is one that is either left, right, or
both associative, but works at a very high level, where it expects one
or two parse tree nodes to surround it, and it take the whole node,
whatever that is, which may be made up of other complex items. These
binding works more or less the same as other keywords, but it runs after
autoconcats are resolved, meaning that normal binding keywords will all
have already run.
EarlyBindingKeywords are meant to operate at an extremely early stage,
operating instead of on nodes, directly on the TokenStream, so that
syntax such as commas and other extremly low level components can be
subsumed into the keyword. This is intended to be used with class
definitions and perhaps others, down the road.
The first keyword to use this framework is the return framework, working as one would expect so that return statement; works now.
There is also a start for early binding ones as well, but that is unused for now. A LateBindingKeyword is one that is either left, right, or both associative, but works at a very high level, where it expects one or two parse tree nodes to surround it, and it take the whole node, whatever that is, which may be made up of other complex items. These binding works more or less the same as other keywords, but it runs after autoconcats are resolved, meaning that normal binding keywords will all have already run.
EarlyBindingKeywords are meant to operate at an extremely early stage, operating instead of on nodes, directly on the TokenStream, so that syntax such as commas and other extremly low level components can be subsumed into the keyword. This is intended to be used with class definitions and perhaps others, down the road.
The first keyword to use this framework is the return framework, working as one would expect so that
return statement;
works now.