assemble: clean up error handling, add src/dest args to main function
This commit is contained in:
parent
224415c008
commit
e7daf5e73c
43
main.go
43
main.go
@ -5,25 +5,47 @@ import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
)
|
||||
|
||||
//
|
||||
|
||||
func main() {
|
||||
src := flag.String("Src", "", "Input file")
|
||||
srcName := flag.String("Src", "-", "Input file (default: stdin)")
|
||||
destName := flag.String("Dest", "-", "Output file (default: stdout)")
|
||||
flag.Parse()
|
||||
|
||||
fh, err := os.OpenFile(*src, os.O_RDONLY, 0644)
|
||||
var (
|
||||
err error
|
||||
srch io.Reader
|
||||
desth io.Writer
|
||||
)
|
||||
|
||||
if *srcName == "-" {
|
||||
srch = os.Stdin
|
||||
} else {
|
||||
srch, err = os.OpenFile(*srcName, os.O_RDONLY, 0644)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
if *destName == "-" {
|
||||
desth = os.Stdout
|
||||
} else {
|
||||
desth, err = os.OpenFile(*destName, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
err = assemble(srch, desth)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
assemble(fh, ioutil.Discard)
|
||||
}
|
||||
|
||||
func assemble(src io.Reader, dest io.Writer) {
|
||||
func assemble(src io.Reader, dest io.Writer) error {
|
||||
lx := NewLexer(src)
|
||||
cc := NewCompiler()
|
||||
|
||||
@ -38,20 +60,23 @@ mainloop:
|
||||
}
|
||||
|
||||
// Real error
|
||||
panic(err)
|
||||
return fmt.Errorf("lexer: %w", err)
|
||||
}
|
||||
|
||||
fmt.Printf("[line %d] %#v\n", lx.lineno, tok)
|
||||
|
||||
err = cc.Compile(tok)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
return fmt.Errorf("compile: %w", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
err := cc.Finalize(dest)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
return fmt.Errorf("finalize: %w", err)
|
||||
}
|
||||
|
||||
// Success
|
||||
return nil
|
||||
}
|
||||
|
@ -52,6 +52,9 @@ global _start: ;tell linker entry point
|
||||
panic(err)
|
||||
}
|
||||
|
||||
assemble(strings.NewReader(src), fh) // ioutil.Discard)
|
||||
err = assemble(strings.NewReader(src), fh) // ioutil.Discard)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user