aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/syntax/scanner.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2016-11-29 16:13:09 -0800
committerRobert Griesemer <gri@golang.org>2016-12-09 00:42:42 +0000
commit8d20b25779d4ce32e8eaeb52374fba1e74f7df57 (patch)
tree1dd10782d5b321986850604da0bc743789ee31b8 /src/cmd/compile/internal/syntax/scanner.go
parenteaca0e0529b780f4c862a97aa47008aa1b403adf (diff)
downloadgo-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.go18
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
}
}