Compare commits

...

3 Commits

4 changed files with 16 additions and 7 deletions

View File

@ -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)
}
}

View File

@ -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()

View File

@ -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)
}

View File

@ -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,