| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
| |
This commit adds a subtokenise method that creates a child tokeniser
over all characters between the start and end marks.
|
|
|
|
|
| |
Definitions were incorrectly not having resolved references associated
with them.
|
| |
|
|
|
|
|
| |
Previously, the Resolver::error method was only checking for undefined
symbols, and not also checking for redefined symbols.
|
|
|
|
| |
This is used for debugging symbol definition and resolution issues.
|
|
|
|
|
| |
This commit fixes an error where a reference was being resolved by a
definition in a child namespace.
|
|
|
|
|
|
|
|
| |
As well as the already-implemented tracking of the existing definition
of redefinitions, the resolver will now also track the definition that
resolves each reference, and the references resolved by each definition.
Instead of using tuples to hold this information, named wrapper structs
have been created for each category.
|
|
|
|
| |
This is tidier than duplicate imports in every file of the module.
|
|
|
|
|
| |
Indexing into a resolver with a pointer from the same resolver should
never fail, and if it does we don't want to silently squash the error.
|
| |
|
|
|
|
|
|
| |
This enables a parsing technique where characters can be marked as
the start of a token after they've been eaten, instead of having to
determine ahead of time via defensively peeking.
|
| |
|
|
|
|
|
|
| |
This better matches the naming convention of the other source locator
types, and better differentiates a SourcePosition from other kinds of
position.
|
| |
|
|
|
|
|
|
| |
A definition can resolve a reference in the same or a deeper namespace,
allowing for proper scoping and shadowing. Multiple definitions in the
same namespace cannot share a name.
|
|
|
|
|
| |
The path displayed for each discovered library was the path of the
parent directory, not the path of the library file.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
When reporting an undefined symbol, the full token string of the symbol
was being displayed. This was fine for Bedrock, which had at most one
symbol per token, but for Torque you can have multiple symbols
extracted from the same source string. The symbol name is displayed
instead.
|
|
|
|
|
| |
When gathering source files from paths, log each path traversed or
parsed.
|
|
|
|
|
|
|
|
| |
Previously, the extension of a source file had to match the provided
extension. This was unnecessarily limited, and prevented arbitrary
text files from being passed as source files.
If no extension is provided, any file can be loaded as a source file.
|
|
|
|
|
|
|
|
|
|
| |
This library can now carry out all stages of assembly from collecting
source fragments to resolving symbols to pruning unused libraries to
generating a single compiled source file.
Pretty-printing of state has also been implemented in this library.
The source tree hierarchy, symbol resolution errors, and file read
errors can all be printed in a tidy format.
|
|
|
|
|
|
| |
This is a struct that provides various methods for consuming characters
from a character stream and for tracking the provenance of each parsed
token.
|
| |
|
|
|