diff options
author | Robert Griesemer <gri@golang.org> | 2016-11-29 16:13:09 -0800 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2016-12-09 00:42:42 +0000 |
commit | 8d20b25779d4ce32e8eaeb52374fba1e74f7df57 (patch) | |
tree | 1dd10782d5b321986850604da0bc743789ee31b8 /src/cmd/compile/internal/syntax/scanner.go | |
parent | eaca0e0529b780f4c862a97aa47008aa1b403adf (diff) | |
download | go-8d20b25779d4ce32e8eaeb52374fba1e74f7df57.tar.gz go-8d20b25779d4ce32e8eaeb52374fba1e74f7df57.zip |
[dev.inline] cmd/compile/internal/syntax: introduce general position info for nodes
Reviewed in and cherry-picked from https://go-review.googlesource.com/#/c/33758/.
Minor adjustments in noder.go to fix merge.
Change-Id: Ibe429e327c7f8554f8ac205c61ce3738013aed98
Reviewed-on: https://go-review.googlesource.com/34231
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src/cmd/compile/internal/syntax/scanner.go')
-rw-r--r-- | src/cmd/compile/internal/syntax/scanner.go | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/cmd/compile/internal/syntax/scanner.go b/src/cmd/compile/internal/syntax/scanner.go index b84fcc5fd1..978d7d2c0a 100644 --- a/src/cmd/compile/internal/syntax/scanner.go +++ b/src/cmd/compile/internal/syntax/scanner.go @@ -18,7 +18,7 @@ type scanner struct { pragma Pragma // current token, valid after calling next() - pos, line int + line, col uint tok token lit string // valid if tok is _Name or _Literal kind LitKind // valid if tok is _Literal @@ -46,7 +46,7 @@ redo: } // token start - s.pos, s.line = s.source.pos0(), s.source.line0 + s.line, s.col = s.source.line0, s.source.col0 if isLetter(c) || c >= utf8.RuneSelf && (unicode.IsLetter(c) || s.isCompatRune(c, true)) { s.ident() @@ -114,8 +114,7 @@ redo: case '.': c = s.getr() if isDigit(c) { - s.ungetr() - s.source.r0-- // make sure '.' is part of literal (line cannot have changed) + s.ungetr2() s.number('.') break } @@ -125,8 +124,7 @@ redo: s.tok = _DotDotDot break } - s.ungetr() - s.source.r0-- // make next ungetr work (line cannot have changed) + s.ungetr2() } s.ungetr() s.tok = _Dot @@ -460,7 +458,7 @@ func (s *scanner) stdString() { break } if r < 0 { - s.error_at(s.pos, s.line, "string not terminated") + s.error_at(s.line, s.col, "string not terminated") break } } @@ -480,7 +478,7 @@ func (s *scanner) rawString() { break } if r < 0 { - s.error_at(s.pos, s.line, "string not terminated") + s.error_at(s.line, s.col, "string not terminated") break } } @@ -559,7 +557,7 @@ func (s *scanner) lineComment() { } r = s.getr() } - s.pragma |= s.pragh(0, s.line, strings.TrimSuffix(string(s.stopLit()), "\r")) + s.pragma |= s.pragh(s.line, strings.TrimSuffix(string(s.stopLit()), "\r")) return skip: @@ -580,7 +578,7 @@ func (s *scanner) fullComment() { } } if r < 0 { - s.error_at(s.pos, s.line, "comment not terminated") + s.error_at(s.line, s.col, "comment not terminated") return } } |