rename parse command to show
This commit is contained in:
parent
d6dde78f74
commit
444c559510
@ -8,8 +8,8 @@ import (
|
||||
const summary = `treerack - parser generator - https://github.com/aryszka/treerack`
|
||||
|
||||
const commandsHelp = `Available commands:
|
||||
check validates arbitrary input against a syntax definition
|
||||
parse parses arbitrary input with a syntax definition into an abstract syntax tree
|
||||
check validates an arbitrary input against a syntax definition
|
||||
show parses an arbitrary input with a syntax definition and prints the abstract syntax tree
|
||||
check-syntax validates a syntax definition
|
||||
generate generates a parser from a syntax definition
|
||||
help prints the current help
|
||||
@ -49,12 +49,12 @@ parsed with it.`
|
||||
const checkExample = `Example:
|
||||
treerack check -syntax example.treerack foo.example`
|
||||
|
||||
const parseUsage = `'treerack parse' takes a syntax description from a file or inline string, an arbitrary piece
|
||||
const showUsage = `'treerack show' takes a syntax description from a file or inline string, an arbitrary piece
|
||||
of text from the standard input, or a file, or inline string, and parses the input text with the defined syntax.
|
||||
If it was successfully parsed, it prints the resulting abstract syntax tree (AST) in JSON format.`
|
||||
|
||||
const parseExample = `Example:
|
||||
treerack parse -syntax example.treerack foo.example`
|
||||
const showExample = `Example:
|
||||
treerack show -syntax example.treerack foo.example`
|
||||
|
||||
const checkSyntaxUsage = `'treerack check-syntax' takes a syntax description from the standard input, or a file,
|
||||
or inline string, and validates it to check whether it represents a valid syntax. It returns with non-zero exit
|
||||
|
@ -30,8 +30,8 @@ func main() {
|
||||
cmd = generate
|
||||
case "check":
|
||||
cmd = check
|
||||
case "parse":
|
||||
cmd = parse
|
||||
case "show":
|
||||
cmd = show
|
||||
case "help", "-help":
|
||||
mainHelp()
|
||||
return
|
||||
|
@ -6,7 +6,7 @@ import (
|
||||
"github.com/aryszka/treerack"
|
||||
)
|
||||
|
||||
type parseOptions struct {
|
||||
type showOptions struct {
|
||||
command *commandOptions
|
||||
syntax *fileOptions
|
||||
input *fileOptions
|
||||
@ -40,9 +40,9 @@ func mapNode(n *treerack.Node) *node {
|
||||
return &nn
|
||||
}
|
||||
|
||||
func parse(args []string) int {
|
||||
var o parseOptions
|
||||
o.command = initOptions(parseUsage, parseExample, positionalInputUsage, args)
|
||||
func show(args []string) int {
|
||||
var o showOptions
|
||||
o.command = initOptions(showUsage, showExample, positionalInputUsage, args)
|
||||
o.syntax = &fileOptions{typ: "syntax", flagSet: o.command.flagSet, positionalDoc: positionalInputUsage}
|
||||
o.input = &fileOptions{typ: "input", flagSet: o.command.flagSet, positionalDoc: positionalInputUsage}
|
||||
|
@ -2,13 +2,13 @@ package main
|
||||
|
||||
import "testing"
|
||||
|
||||
var parseFailureTests = convertTests("parse", checkFailureTests)
|
||||
var showFailureTests = convertTests("show", checkFailureTests)
|
||||
|
||||
var parseTests = []mainTest{
|
||||
var showTests = []mainTest{
|
||||
{
|
||||
title: "syntax as file",
|
||||
args: []string{
|
||||
"treerack", "parse", "-syntax", "foo_test.treerack", "-input-string", "bar",
|
||||
"treerack", "show", "-syntax", "foo_test.treerack", "-input-string", "bar",
|
||||
},
|
||||
stdout: []string{
|
||||
`"name":"foo"`,
|
||||
@ -18,7 +18,7 @@ var parseTests = []mainTest{
|
||||
{
|
||||
title: "syntax as string",
|
||||
args: []string{
|
||||
"treerack", "parse", "-syntax-string", `foo = "bar"`, "-input-string", "bar",
|
||||
"treerack", "show", "-syntax-string", `foo = "bar"`, "-input-string", "bar",
|
||||
},
|
||||
stdout: []string{
|
||||
`"name":"foo"`,
|
||||
@ -28,7 +28,7 @@ var parseTests = []mainTest{
|
||||
{
|
||||
title: "input as stdin",
|
||||
args: []string{
|
||||
"treerack", "parse", "-syntax-string", `foo = "bar"`,
|
||||
"treerack", "show", "-syntax-string", `foo = "bar"`,
|
||||
},
|
||||
stdin: "bar",
|
||||
stdout: []string{
|
||||
@ -39,7 +39,7 @@ var parseTests = []mainTest{
|
||||
{
|
||||
title: "input as file",
|
||||
args: []string{
|
||||
"treerack", "parse", "-syntax-string", `foo = "bar"`, "-input", "bar_test.txt",
|
||||
"treerack", "show", "-syntax-string", `foo = "bar"`, "-input", "bar_test.txt",
|
||||
},
|
||||
stdout: []string{
|
||||
`"name":"foo"`,
|
||||
@ -49,7 +49,7 @@ var parseTests = []mainTest{
|
||||
{
|
||||
title: "input as positional",
|
||||
args: []string{
|
||||
"treerack", "parse", "-syntax-string", `foo = "bar"`, "bar_test.txt",
|
||||
"treerack", "show", "-syntax-string", `foo = "bar"`, "bar_test.txt",
|
||||
},
|
||||
stdout: []string{
|
||||
`"name":"foo"`,
|
||||
@ -59,7 +59,7 @@ var parseTests = []mainTest{
|
||||
{
|
||||
title: "input as string",
|
||||
args: []string{
|
||||
"treerack", "parse", "-syntax-string", `foo = "bar"`, "-input-string", "bar",
|
||||
"treerack", "show", "-syntax-string", `foo = "bar"`, "-input-string", "bar",
|
||||
},
|
||||
stdout: []string{
|
||||
`"name":"foo"`,
|
||||
@ -69,7 +69,7 @@ var parseTests = []mainTest{
|
||||
{
|
||||
title: "explicit over stdin",
|
||||
args: []string{
|
||||
"treerack", "parse", "-syntax", "foo_test.treerack", "-input-string", "bar",
|
||||
"treerack", "show", "-syntax", "foo_test.treerack", "-input-string", "bar",
|
||||
},
|
||||
stdin: "invalid",
|
||||
stdout: []string{
|
||||
@ -80,7 +80,7 @@ var parseTests = []mainTest{
|
||||
{
|
||||
title: "pretty",
|
||||
args: []string{
|
||||
"treerack", "parse", "-syntax-string", `foo = "bar"`, "-input-string", "bar", "-pretty",
|
||||
"treerack", "show", "-syntax-string", `foo = "bar"`, "-input-string", "bar", "-pretty",
|
||||
},
|
||||
stdout: []string{
|
||||
` "name": "foo"`,
|
||||
@ -90,7 +90,7 @@ var parseTests = []mainTest{
|
||||
{
|
||||
title: "pretty and indent",
|
||||
args: []string{
|
||||
"treerack", "parse", "-syntax-string", `foo = "bar"`, "-input-string", "bar", "-pretty", "-indent", "xx",
|
||||
"treerack", "show", "-syntax-string", `foo = "bar"`, "-input-string", "bar", "-pretty", "-indent", "xx",
|
||||
},
|
||||
stdout: []string{
|
||||
`xx"name": "foo"`,
|
||||
@ -100,7 +100,7 @@ var parseTests = []mainTest{
|
||||
{
|
||||
title: "indent without pretty",
|
||||
args: []string{
|
||||
"treerack", "parse", "-syntax-string", `foo = "bar"`, "-input-string", "bar", "-pretty", "-indent", "xx",
|
||||
"treerack", "show", "-syntax-string", `foo = "bar"`, "-input-string", "bar", "-pretty", "-indent", "xx",
|
||||
},
|
||||
stdout: []string{
|
||||
`xx"name": "foo"`,
|
||||
@ -110,7 +110,7 @@ var parseTests = []mainTest{
|
||||
{
|
||||
title: "with child nodes",
|
||||
args: []string{
|
||||
"treerack", "parse", "-syntax-string", `foo = "bar"; doc = foo`, "-input-string", "bar",
|
||||
"treerack", "show", "-syntax-string", `foo = "bar"; doc = foo`, "-input-string", "bar",
|
||||
},
|
||||
stdout: []string{
|
||||
`"nodes":[`,
|
||||
@ -119,14 +119,14 @@ var parseTests = []mainTest{
|
||||
},
|
||||
}
|
||||
|
||||
func TestParse(t *testing.T) {
|
||||
func TestShow(t *testing.T) {
|
||||
runMainTest(t, mainTest{
|
||||
title: "help",
|
||||
args: []string{
|
||||
"treerack", "parse", "-help",
|
||||
"treerack", "show", "-help",
|
||||
},
|
||||
stdout: []string{
|
||||
wrapLines(parseUsage),
|
||||
wrapLines(showUsage),
|
||||
"-syntax",
|
||||
"-syntax-string",
|
||||
"-input",
|
||||
@ -134,11 +134,11 @@ func TestParse(t *testing.T) {
|
||||
"-pretty",
|
||||
"-indent",
|
||||
wrapLines(positionalInputUsage),
|
||||
wrapLines(parseExample),
|
||||
wrapLines(showExample),
|
||||
wrapLines(docRef),
|
||||
},
|
||||
})
|
||||
|
||||
runMainTest(t, parseFailureTests...)
|
||||
runMainTest(t, parseTests...)
|
||||
runMainTest(t, showFailureTests...)
|
||||
runMainTest(t, showTests...)
|
||||
}
|
@ -20,6 +20,7 @@ input name needed in command to differentiate between syntax and input in check
|
||||
allchars: can have char sequence
|
||||
make generator output non-random (track parsers in a list in definition order)
|
||||
fix the license in the output
|
||||
play with the int sizes
|
||||
|
||||
[releasing]
|
||||
spellcheck
|
||||
|
Loading…
Reference in New Issue
Block a user