Compare commits
3 Commits
15c5f0b2b8
...
743a5d4ae0
Author | SHA1 | Date | |
---|---|---|---|
743a5d4ae0 | |||
ea17e354a3 | |||
4dc8a30ebd |
@ -4,6 +4,7 @@ import "os"
|
||||
import "fmt"
|
||||
import "strings"
|
||||
import "path/filepath"
|
||||
import "git.tebibyte.media/sashakoshka/goparse"
|
||||
import "git.tebibyte.media/sashakoshka/hopp/generate"
|
||||
|
||||
func main() {
|
||||
@ -18,7 +19,7 @@ func main() {
|
||||
input, err := os.Open(source)
|
||||
handleErr(1, err)
|
||||
defer input.Close()
|
||||
protocol, err := generate.ParseReader(input)
|
||||
protocol, err := generate.ParseReader(source, input)
|
||||
handleErr(1, err)
|
||||
|
||||
absDestination, err := filepath.Abs(destination)
|
||||
@ -30,14 +31,18 @@ func main() {
|
||||
|
||||
output, err := os.Create(destination)
|
||||
handleErr(1, err)
|
||||
err = protocol.Generate(output, packageName)
|
||||
generator := generate.Generator {
|
||||
Output: output,
|
||||
PackageName: packageName,
|
||||
}
|
||||
_, err = generator.Generate(protocol)
|
||||
handleErr(1, err)
|
||||
fmt.Fprintf(os.Stderr, "%s: OK\n", name)
|
||||
}
|
||||
|
||||
func handleErr(code int, err error) {
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%s: %v\n", os.Args[0], err)
|
||||
fmt.Fprintf(os.Stderr, "%s: %v\n", os.Args[0], parse.Format(err))
|
||||
os.Exit(code)
|
||||
}
|
||||
}
|
||||
|
@ -332,7 +332,7 @@ func (this *Generator) generateEncodeValue(typ Type, valueSource, tagSource stri
|
||||
n += nn; if err != nil { return n, err }
|
||||
nn, err = this.generateType(typ)
|
||||
n += nn; if err != nil { return n, err }
|
||||
nn, err = this.iprintf("%s)\n", valueSource)
|
||||
nn, err = this.printf("(%s))\n", valueSource)
|
||||
n += nn; if err != nil { return n, err }
|
||||
nn, err = this.generateErrorCheck()
|
||||
n += nn; if err != nil { return n, err }
|
||||
@ -527,6 +527,10 @@ func (this *Generator) generateDecodeValue(typ Type, typeName, valueSource, tagS
|
||||
destinationVar := this.newTemporaryVar("destination")
|
||||
nn, err := this.iprintf("var %s ", destinationVar)
|
||||
n += nn; if err != nil { return n, err }
|
||||
nn, err = this.generateType(typ)
|
||||
n += nn; if err != nil { return n, err }
|
||||
nn, err = this.print("\n")
|
||||
n += nn; if err != nil { return n, err }
|
||||
nn, err = this.iprintf("%s, nn, err = decoder.ReadFloat%d()\n", destinationVar, typ.Bits)
|
||||
n += nn; if err != nil { return n, err }
|
||||
nn, err = this.generateErrorCheck()
|
||||
|
@ -25,8 +25,8 @@ func defaultProtocol() Protocol {
|
||||
}
|
||||
}
|
||||
|
||||
func ParseReader(reader io.Reader) (*Protocol, error) {
|
||||
lx, err := Lex("test.pdl", reader)
|
||||
func ParseReader(fileName string, reader io.Reader) (*Protocol, error) {
|
||||
lx, err := Lex(fileName, reader)
|
||||
if err != nil { return nil, err }
|
||||
return Parse(lx)
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ func TestParse(test *testing.T) {
|
||||
}
|
||||
test.Log("CORRECT:", &correct)
|
||||
|
||||
got, err := ParseReader(strings.NewReader(`
|
||||
got, err := ParseReader("test.pdl", strings.NewReader(`
|
||||
M0000 Connect {
|
||||
0000 Name String,
|
||||
0001 Password String,
|
||||
|
Loading…
x
Reference in New Issue
Block a user