mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[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>
This commit is contained in:
parent
eaca0e0529
commit
8d20b25779
11 changed files with 380 additions and 111 deletions
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue