557feaeb83
* Added planning documentation regrding the process. * Updated grammer. * Refactored the test code a bit. * Added sample input file from vbs-suite * Refactored the AST node structure created by the parser.
53 lines
1.2 KiB
Plaintext
53 lines
1.2 KiB
Plaintext
Parse phase
|
|
===========
|
|
|
|
Init: none
|
|
Input: Map<Name, InputStream>
|
|
Output: Map<Name, ASTNode List>
|
|
|
|
Generate phase
|
|
==============
|
|
|
|
Input: Map<Name, AST Node List>
|
|
Output: Map<Name, String>
|
|
|
|
Emitter (object)
|
|
----------------
|
|
|
|
Emitter is good for one emit run.
|
|
|
|
Object fields:
|
|
* where the value goes
|
|
* current emit state (may need existing state from generate phase)
|
|
|
|
|
|
|
|
+--Generate---------------------------------+
|
|
| |
|
|
| GenerationState--+ |
|
|
| v |
|
|
| +->Emitter>-+ |
|
|
| [Sources]>-+->Emitter>-+->[Destinations] |
|
|
| +->Emitter>-+ |
|
|
| |
|
|
| |
|
|
+-------------------------------------------+
|
|
|
|
+--Emitter----------+
|
|
| |
|
|
| GenerationState |
|
|
| Source |
|
|
| Output |
|
|
| |
|
|
+-------------------+
|
|
|
|
Emit Process:
|
|
|
|
Order nodes, emit based on type.
|
|
Refer to generation state when neccessary.
|
|
|
|
Emitters:
|
|
|
|
FormattingEmitter - accepts a paramets, formatter, that formats a block of
|
|
text.
|