summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Main.hs14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/Main.hs b/src/Main.hs
index 646d967..a993e98 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -25,11 +25,13 @@ main = execParser commandLine >>= withCommandLine
>>= withParsedInput defaultOutput
. runParser programP input
withParsedInput output (Right program) =
- let symbolTable = nameAnalysis program
- _ = typeAnalysis symbolTable program
- intermediate' = intermediate symbolTable program
- in elfObject output
- $ riscv32Elf
- $ generateCode symbolTable intermediate'
+ either print (withSymbolTable output program)
+ $ nameAnalysis program
withParsedInput _ (Left errorBundle) = putStrLn
$ errorBundlePretty errorBundle
+ withSymbolTable output program symbolTable =
+ let _ = typeAnalysis symbolTable program
+ intermediate' = intermediate symbolTable program
+ instructions = generateCode symbolTable intermediate'
+ in elfObject output
+ $ riscv32Elf instructions