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