summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2024-06-28 15:38:45 +0200
committerMarc Vertes <mvertes@free.fr>2024-06-28 15:38:45 +0200
commit4acaa8e1630a359117d535a20b0af9554058d1e3 (patch)
treef2ba5108430edb3e13a58aad53f34cb37af43317
parent70625002b6b3ba280c700636ed8314f20e1384a7 (diff)
fix and simplify Token.Name()
-rw-r--r--parser/expr.go2
-rw-r--r--parser/parse.go2
-rw-r--r--scanner/scan.go11
3 files changed, 7 insertions, 8 deletions
diff --git a/parser/expr.go b/parser/expr.go
index cf6ee74..1efb45e 100644
--- a/parser/expr.go
+++ b/parser/expr.go
@@ -110,7 +110,7 @@ func (p *Parser) parseExpr(in Tokens) (out Tokens, err error) {
case lang.Comment:
return out, nil
default:
- return nil, fmt.Errorf("expression not supported yet: %v: %q", t.Tok, t.Str)
+ return nil, fmt.Errorf("invalid expression: %v: %q", t.Tok, t.Str)
}
if len(selectors) > 0 {
out = append(out, selectors...)
diff --git a/parser/parse.go b/parser/parse.go
index add1600..0061c4f 100644
--- a/parser/parse.go
+++ b/parser/parse.go
@@ -36,11 +36,11 @@ func (p *Parser) Scan(s string, endSemi bool) (Tokens, error) {
// Parse performs syntax analysis on s and return Tokens or an error.
func (p *Parser) Parse(src string) (out Tokens, err error) {
- log.Printf("Parse src: %#v\n", src)
in, err := p.Scan(src, true)
if err != nil {
return out, err
}
+ log.Printf("Parse src: %#v\n", src)
return p.parseStmts(in)
}
diff --git a/scanner/scan.go b/scanner/scan.go
index 6ea99a9..2782788 100644
--- a/scanner/scan.go
+++ b/scanner/scan.go
@@ -34,14 +34,13 @@ func (t *Token) Prefix() string { return t.Str[:t.Beg] }
// Name return the name of t (short string for debugging).
func (t *Token) Name() string {
- name := t.Str
- if t.Beg > 1 {
- return name[:t.Beg] + ".."
+ if len(t.Str) == 0 {
+ return ""
}
- if t.Beg > 0 {
- return name[:t.Beg] + ".." + name[len(name)-t.End:]
+ if t.Beg > 1 {
+ return t.Str[:t.Beg] + ".."
}
- return name
+ return t.Str[:t.Beg] + ".." + t.Str[len(t.Str)-t.End:]
}
func (t *Token) String() string {