(depth int)
| 581 | } |
| 582 | |
| 583 | func (t *tree) v(depth int) Node { |
| 584 | debugf(depth, "v: cur(): %v peek:%v", t.Cur(), t.Peek()) |
| 585 | switch cur := t.Cur(); cur.T { |
| 586 | case lex.TokenInclude: |
| 587 | inc := t.Next() // consume Include |
| 588 | nxt := t.Next() |
| 589 | //u.Debugf("inc: %v nxt %v", inc, nxt) |
| 590 | if nxt.T == lex.TokenIdentity { |
| 591 | id := NewIdentityNode(&nxt) |
| 592 | return NewInclude(inc, id) |
| 593 | } |
| 594 | panic(fmt.Errorf("Unexpected Identity got %v", nxt)) |
| 595 | case lex.TokenInteger, lex.TokenFloat: |
| 596 | n, err := NewNumberStr(cur.V) |
| 597 | if err != nil { |
| 598 | t.error(err) |
| 599 | } |
| 600 | t.Next() |
| 601 | return n |
| 602 | case lex.TokenValue: |
| 603 | n := NewStringNodeToken(cur) |
| 604 | t.Next() |
| 605 | debugf(depth, "after value %v", t.Cur()) |
| 606 | return n |
| 607 | case lex.TokenValueEscaped: |
| 608 | n := NewStringNeedsEscape(cur) |
| 609 | t.Next() |
| 610 | return n |
| 611 | case lex.TokenIdentity: |
| 612 | n := NewIdentityNode(&cur) |
| 613 | t.Next() // Consume identity |
| 614 | |
| 615 | return n |
| 616 | case lex.TokenNull: |
| 617 | t.Next() |
| 618 | return NewNull(cur) |
| 619 | case lex.TokenStar: |
| 620 | n := NewStringNoQuoteNode(cur.V) |
| 621 | t.Next() |
| 622 | return n |
| 623 | case lex.TokenLeftBracket: |
| 624 | // [ ie [1,2,3] json array or static array values |
| 625 | t.Next() // Consume the [ |
| 626 | arrayVal, err := ValueArray(depth+1, t.TokenPager) |
| 627 | if err != nil { |
| 628 | t.unexpected(t.Cur(), "jsonarray unexpected token") |
| 629 | return nil |
| 630 | } |
| 631 | n := NewValueNode(arrayVal) |
| 632 | return n |
| 633 | case lex.TokenUdfExpr: |
| 634 | t.Next() // consume Function Name |
| 635 | return t.Func(depth, cur) |
| 636 | case lex.TokenLeftParenthesis: |
| 637 | t.Next() // Consume ( |
| 638 | n := t.O(depth + 1) |
| 639 | debugf(depth, "v: paren T:%T %v cur:%v", n, n, t.Cur()) |
| 640 | if bn, ok := n.(*BinaryNode); ok { |
no test coverage detected