Fix small issues with generator readme

This commit is contained in:
Sasha Koshka 2024-02-10 18:32:35 -05:00
parent a91922e749
commit deae98001d
1 changed files with 8 additions and 8 deletions

View File

@ -1,6 +1,6 @@
# generator # generator
# Responsibilities ## Responsibilities
Given a compilation target, turn a well-formed FSPL semantic tree into an LLVM Given a compilation target, turn a well-formed FSPL semantic tree into an LLVM
IR module tree. IR module tree.
@ -8,9 +8,9 @@ IR module tree.
## Organization ## Organization
Generator defines the Target type, which contains information about the system Generator defines the Target type, which contains information about the system
that the program is being compiled for. The [native sub-package](native) uses that the program is being compiled for. The native sub-package uses Go's
Go's conditional compilation directives to provide a default Target that matches conditional compilation directives to provide a default Target that matches the
the system the compiler has been natively built for. system the compiler has been natively built for.
The entry point for all logic defined in this package is Target.Generate(). This The entry point for all logic defined in this package is Target.Generate(). This
method creates a new generator, and uses it to recursively generate and return an method creates a new generator, and uses it to recursively generate and return an
@ -18,9 +18,9 @@ LLVM module. The details of the generator are hidden from other packages, and
instances of it only last for the duration of Target.Generate(). instances of it only last for the duration of Target.Generate().
The generator contains a stack of blockManagers, which plays a similar role to The generator contains a stack of blockManagers, which plays a similar role to
[analyzer](../analyzer).scopeContextManager, except that the stack of analyzer.scopeContextManager, except that the stack of blockManagers is managed
blockManagers is managed directly by the generator, which contains appropriate directly by the generator, which contains appropriate methods for
methods for pushing/popping them. pushing/popping them.
Like the analyzer, the generator greedily generates code, and one function may Like the analyzer, the generator greedily generates code, and one function may
be generated in the middle of the generation process of another function. Thus, be generated in the middle of the generation process of another function. Thus,
@ -83,4 +83,4 @@ expression.
If it is specifically requested to generate a value for an expression with only If it is specifically requested to generate a value for an expression with only
its location component defined or vice versa, generator.generateVal/Loc() will its location component defined or vice versa, generator.generateVal/Loc() will
automatically do the conversion. automatically perform the conversion.