aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm/sqlvm/cmd/ast-printer/main.go
blob: d62cb4fc8b3b85e4312073a6549df892e37df0d1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package main

import (
    "flag"
    "fmt"
    "os"

    "github.com/dexon-foundation/dexon/core/vm/sqlvm/ast"
    "github.com/dexon-foundation/dexon/core/vm/sqlvm/parser"
)

func main() {
    var detail bool
    flag.BoolVar(&detail, "detail", false, "print struct detail")

    flag.Parse()

    fmt.Fprintf(os.Stderr, "detail: %t\n", detail)
    s := []byte(flag.Arg(0))
    n, parseErr := parser.Parse(s)
    b, printErr := ast.PrintAST(os.Stdout, n, s, "  ", detail)
    if parseErr != nil {
        fmt.Fprintf(os.Stderr, "Parse error:\n%+v\n", parseErr)
    }
    if printErr != nil {
        fmt.Fprintf(os.Stderr, "Print error:\n%+v\n", printErr)
    }
    fmt.Fprintf(os.Stderr, "Output size: %d bytes\n", b)
    if parseErr != nil || printErr != nil {
        os.Exit(1)
    }
}