Fix small issues with generator readme
This commit is contained in:
parent
a91922e749
commit
deae98001d
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue