disable tracing
This commit is contained in:
parent
6a179f7474
commit
2d8d1ae4ef
10
boot.go
10
boot.go
@ -187,8 +187,8 @@ func defineAllBoot(s *Syntax, defs [][]string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func initBoot(t Trace, definitions [][]string) (*Syntax, error) {
|
func initBoot(definitions [][]string) (*Syntax, error) {
|
||||||
s := NewSyntax(t)
|
s := NewSyntax()
|
||||||
if err := defineAllBoot(s, definitions); err != nil {
|
if err := defineAllBoot(s, definitions); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -196,8 +196,8 @@ func initBoot(t Trace, definitions [][]string) (*Syntax, error) {
|
|||||||
return s, s.Init()
|
return s, s.Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
func bootSyntax(t Trace) (*Syntax, error) {
|
func bootSyntax() (*Syntax, error) {
|
||||||
b, err := initBoot(t, bootDefinitions)
|
b, err := initBoot(bootDefinitions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -214,6 +214,6 @@ func bootSyntax(t Trace) (*Syntax, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
s := NewSyntax(t)
|
s := NewSyntax()
|
||||||
return s, define(s, doc)
|
return s, define(s, doc)
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestBoot(t *testing.T) {
|
func TestBoot(t *testing.T) {
|
||||||
var trace Trace
|
b, err := initBoot(bootDefinitions)
|
||||||
|
|
||||||
b, err := initBoot(trace, bootDefinitions)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
return
|
return
|
||||||
@ -28,8 +26,7 @@ func TestBoot(t *testing.T) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// trace = NewTrace(1)
|
s0 := NewSyntax()
|
||||||
s0 := NewSyntax(trace)
|
|
||||||
if err := define(s0, n0); err != nil {
|
if err := define(s0, n0); err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
return
|
return
|
||||||
@ -58,7 +55,7 @@ func TestBoot(t *testing.T) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
s1 := NewSyntax(trace)
|
s1 := NewSyntax()
|
||||||
if err := define(s1, n1); err != nil {
|
if err := define(s1, n1); err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
return
|
return
|
||||||
|
14
char.go
14
char.go
@ -73,22 +73,22 @@ func (p *charParser) match(t rune) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *charParser) parse(t Trace, c *context) {
|
func (p *charParser) parse(t Trace, c *context) {
|
||||||
t = t.Extend(p.name)
|
// t = t.Extend(p.name)
|
||||||
t.Out1("parsing char", c.offset)
|
// t.Out1("parsing char", c.offset)
|
||||||
|
|
||||||
if p.commit&Documentation != 0 {
|
if p.commit&Documentation != 0 {
|
||||||
t.Out1("fail, doc")
|
// t.Out1("fail, doc")
|
||||||
c.fail(c.offset)
|
c.fail(c.offset)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if m, ok := c.fromCache(p.name); ok {
|
if _, ok := c.fromCache(p.name); ok {
|
||||||
t.Out1("found in cache, match:", m)
|
// t.Out1("found in cache, match:", m)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if tok, ok := c.token(); ok && p.match(tok) {
|
if tok, ok := c.token(); ok && p.match(tok) {
|
||||||
t.Out1("success", string(tok))
|
// t.Out1("success", string(tok))
|
||||||
n := newNode(p.name, p.commit, c.offset, c.offset+1)
|
n := newNode(p.name, p.commit, c.offset, c.offset+1)
|
||||||
c.cache.set(c.offset, p.name, n)
|
c.cache.set(c.offset, p.name, n)
|
||||||
for _, includedBy := range p.includedBy {
|
for _, includedBy := range p.includedBy {
|
||||||
@ -98,7 +98,7 @@ func (p *charParser) parse(t Trace, c *context) {
|
|||||||
c.success(n)
|
c.success(n)
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
t.Out1("fail", string(tok))
|
// t.Out1("fail", string(tok))
|
||||||
c.cache.set(c.offset, p.name, nil)
|
c.cache.set(c.offset, p.name, nil)
|
||||||
c.fail(c.offset)
|
c.fail(c.offset)
|
||||||
return
|
return
|
||||||
|
16
choice.go
16
choice.go
@ -93,22 +93,22 @@ func (p *choiceParser) cacheIncluded(c *context, n *Node) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *choiceParser) parse(t Trace, c *context) {
|
func (p *choiceParser) parse(t Trace, c *context) {
|
||||||
t = t.Extend(p.name)
|
// t = t.Extend(p.name)
|
||||||
t.Out1("parsing choice", c.offset)
|
// t.Out1("parsing choice", c.offset)
|
||||||
|
|
||||||
if p.commit&Documentation != 0 {
|
if p.commit&Documentation != 0 {
|
||||||
t.Out1("fail, doc")
|
// t.Out1("fail, doc")
|
||||||
c.fail(c.offset)
|
c.fail(c.offset)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if m, ok := c.fromCache(p.name); ok {
|
if _, ok := c.fromCache(p.name); ok {
|
||||||
t.Out1("found in cache, match:", m)
|
// t.Out1("found in cache, match:", m)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.excluded(c.offset, p.name) {
|
if c.excluded(c.offset, p.name) {
|
||||||
t.Out1("excluded")
|
// t.Out1("excluded")
|
||||||
c.fail(c.offset)
|
c.fail(c.offset)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -149,12 +149,12 @@ func (p *choiceParser) parse(t Trace, c *context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if match {
|
if match {
|
||||||
t.Out1("choice, success")
|
// t.Out1("choice, success")
|
||||||
c.success(node)
|
c.success(node)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Out1("fail")
|
// t.Out1("fail")
|
||||||
c.cache.set(node.from, p.name, nil)
|
c.cache.set(node.from, p.name, nil)
|
||||||
c.fail(node.from)
|
c.fail(node.from)
|
||||||
}
|
}
|
||||||
|
@ -727,7 +727,7 @@ func TestEskip(t *testing.T) {
|
|||||||
r := generateEskip(1 << 9)
|
r := generateEskip(1 << 9)
|
||||||
e := eskip.Print(true, r...)
|
e := eskip.Print(true, r...)
|
||||||
b := bytes.NewBufferString(e)
|
b := bytes.NewBufferString(e)
|
||||||
s, err := testSyntax("eskip.parser", 0)
|
s, err := testSyntax("eskip.parser", -1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
return
|
return
|
||||||
|
@ -509,7 +509,7 @@ func TestRandomJSON(t *testing.T) {
|
|||||||
|
|
||||||
buf := bytes.NewBuffer(b)
|
buf := bytes.NewBuffer(b)
|
||||||
|
|
||||||
s, err := testSyntax("json.parser", 0)
|
s, err := testSyntax("json.parser", -1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
return
|
return
|
||||||
|
@ -18,9 +18,7 @@ type testItem struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func testSyntaxReader(r io.Reader, traceLevel int) (*Syntax, error) {
|
func testSyntaxReader(r io.Reader, traceLevel int) (*Syntax, error) {
|
||||||
trace := NewTrace(0)
|
b, err := bootSyntax()
|
||||||
|
|
||||||
b, err := bootSyntax(trace)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -30,8 +28,12 @@ func testSyntaxReader(r io.Reader, traceLevel int) (*Syntax, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var trace Trace = NopTrace{}
|
||||||
|
if traceLevel >= 0 {
|
||||||
trace = NewTrace(traceLevel)
|
trace = NewTrace(traceLevel)
|
||||||
s := NewSyntax(trace)
|
}
|
||||||
|
|
||||||
|
s := NewSyntaxTrace(trace)
|
||||||
if err := define(s, doc); err != nil {
|
if err := define(s, doc); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -189,7 +191,7 @@ func testStringTrace(t *testing.T, s string, traceLevel int, tests []testItem) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func testString(t *testing.T, s string, tests []testItem) {
|
func testString(t *testing.T, s string, tests []testItem) {
|
||||||
testStringTrace(t, s, 0, tests)
|
testStringTrace(t, s, -1, tests)
|
||||||
}
|
}
|
||||||
|
|
||||||
func testTrace(t *testing.T, file, rootName string, traceLevel int, tests []testItem) {
|
func testTrace(t *testing.T, file, rootName string, traceLevel int, tests []testItem) {
|
||||||
@ -204,7 +206,7 @@ func testTrace(t *testing.T, file, rootName string, traceLevel int, tests []test
|
|||||||
}
|
}
|
||||||
|
|
||||||
func test(t *testing.T, file, rootName string, tests []testItem) {
|
func test(t *testing.T, file, rootName string, tests []testItem) {
|
||||||
testTrace(t, file, rootName, 0, tests)
|
testTrace(t, file, rootName, -1, tests)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRecursion(t *testing.T) {
|
func TestRecursion(t *testing.T) {
|
||||||
@ -358,10 +360,9 @@ func TestSequence(t *testing.T) {
|
|||||||
}},
|
}},
|
||||||
)
|
)
|
||||||
|
|
||||||
testStringTrace(
|
testString(
|
||||||
t,
|
t,
|
||||||
`A = "a" | (A?)*`,
|
`A = "a" | (A?)*`,
|
||||||
1,
|
|
||||||
[]testItem{{
|
[]testItem{{
|
||||||
msg: "sequence in choice with redundant quantifier",
|
msg: "sequence in choice with redundant quantifier",
|
||||||
text: "aaa",
|
text: "aaa",
|
||||||
|
14
sequence.go
14
sequence.go
@ -114,17 +114,17 @@ func (p *sequenceParser) cacheIncluded(c *context, n *Node) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *sequenceParser) parse(t Trace, c *context) {
|
func (p *sequenceParser) parse(t Trace, c *context) {
|
||||||
t = t.Extend(p.name)
|
// t = t.Extend(p.name)
|
||||||
t.Out1("parsing sequence", c.offset)
|
// t.Out1("parsing sequence", c.offset)
|
||||||
|
|
||||||
if p.commit&Documentation != 0 {
|
if p.commit&Documentation != 0 {
|
||||||
t.Out1("fail, doc")
|
// t.Out1("fail, doc")
|
||||||
c.fail(c.offset)
|
c.fail(c.offset)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.excluded(c.offset, p.name) {
|
if c.excluded(c.offset, p.name) {
|
||||||
t.Out1("excluded")
|
// t.Out1("excluded")
|
||||||
c.fail(c.offset)
|
c.fail(c.offset)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -140,7 +140,7 @@ func (p *sequenceParser) parse(t Trace, c *context) {
|
|||||||
for len(items) > 0 {
|
for len(items) > 0 {
|
||||||
m, ok := c.fromCache(items[0].nodeName())
|
m, ok := c.fromCache(items[0].nodeName())
|
||||||
if ok {
|
if ok {
|
||||||
t.Out1("sequence item found in cache, match:", m, items[0].nodeName(), c.offset)
|
// t.Out1("sequence item found in cache, match:", m, items[0].nodeName(), c.offset)
|
||||||
} else {
|
} else {
|
||||||
items[0].parse(t, c)
|
items[0].parse(t, c)
|
||||||
m = c.match
|
m = c.match
|
||||||
@ -148,7 +148,7 @@ func (p *sequenceParser) parse(t Trace, c *context) {
|
|||||||
|
|
||||||
if !m {
|
if !m {
|
||||||
if currentCount < ranges[0][0] {
|
if currentCount < ranges[0][0] {
|
||||||
t.Out1("fail, item failed")
|
// t.Out1("fail, item failed")
|
||||||
c.cache.set(node.from, p.name, nil)
|
c.cache.set(node.from, p.name, nil)
|
||||||
c.fail(node.from)
|
c.fail(node.from)
|
||||||
return
|
return
|
||||||
@ -172,7 +172,7 @@ func (p *sequenceParser) parse(t Trace, c *context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Out1("success, items parsed")
|
// t.Out1("success, items parsed")
|
||||||
|
|
||||||
c.cache.set(node.from, p.name, node)
|
c.cache.set(node.from, p.name, node)
|
||||||
for _, includedBy := range p.includedBy {
|
for _, includedBy := range p.includedBy {
|
||||||
|
@ -46,9 +46,13 @@ func duplicateDefinition(name string) error {
|
|||||||
return fmt.Errorf("duplicate definition: %s", name)
|
return fmt.Errorf("duplicate definition: %s", name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewSyntax(t Trace) *Syntax {
|
func NewSyntax() *Syntax {
|
||||||
|
return NewSyntaxTrace(nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewSyntaxTrace(t Trace) *Syntax {
|
||||||
if t == nil {
|
if t == nil {
|
||||||
t = NewTrace(0)
|
t = NopTrace{}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &Syntax{
|
return &Syntax{
|
||||||
|
14
trace.go
14
trace.go
@ -6,6 +6,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Trace interface {
|
type Trace interface {
|
||||||
|
OutN(int, ...interface{})
|
||||||
Out(...interface{})
|
Out(...interface{})
|
||||||
Out1(...interface{})
|
Out1(...interface{})
|
||||||
Out2(...interface{})
|
Out2(...interface{})
|
||||||
@ -27,8 +28,8 @@ func NewTrace(level int) *DefaultTrace {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *DefaultTrace) printlnLevel(l int, a ...interface{}) {
|
func (t *DefaultTrace) OutN(level int, a ...interface{}) {
|
||||||
if l > t.level {
|
if level > t.level {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36,19 +37,19 @@ func (t *DefaultTrace) printlnLevel(l int, a ...interface{}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *DefaultTrace) Out(a ...interface{}) {
|
func (t *DefaultTrace) Out(a ...interface{}) {
|
||||||
t.printlnLevel(0, a...)
|
t.OutN(0, a...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *DefaultTrace) Out1(a ...interface{}) {
|
func (t *DefaultTrace) Out1(a ...interface{}) {
|
||||||
t.printlnLevel(1, a...)
|
t.OutN(1, a...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *DefaultTrace) Out2(a ...interface{}) {
|
func (t *DefaultTrace) Out2(a ...interface{}) {
|
||||||
t.printlnLevel(2, a...)
|
t.OutN(2, a...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *DefaultTrace) Out3(a ...interface{}) {
|
func (t *DefaultTrace) Out3(a ...interface{}) {
|
||||||
t.printlnLevel(3, a...)
|
t.OutN(3, a...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *DefaultTrace) Extend(name string) Trace {
|
func (t *DefaultTrace) Extend(name string) Trace {
|
||||||
@ -65,6 +66,7 @@ func (t *DefaultTrace) Extend(name string) Trace {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (NopTrace) OutN(int, ...interface{}) {}
|
||||||
func (NopTrace) Out(...interface{}) {}
|
func (NopTrace) Out(...interface{}) {}
|
||||||
func (NopTrace) Out1(...interface{}) {}
|
func (NopTrace) Out1(...interface{}) {}
|
||||||
func (NopTrace) Out2(...interface{}) {}
|
func (NopTrace) Out2(...interface{}) {}
|
||||||
|
Loading…
Reference in New Issue
Block a user