diff options
author | Robert Griesemer <gri@golang.org> | 2009-03-16 14:20:08 -0700 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2009-03-16 14:20:08 -0700 |
commit | 5b3cc1ac576c3c3b5cca6ce0ec71da16debb88a2 (patch) | |
tree | 56ada7a7a7d96f8f3cdf622878723ba5ba9a9291 /src/lib/go/scanner.go | |
parent | 2427c89e69f1e6fd62be0331694036d2d3186b50 (diff) | |
download | golang-5b3cc1ac576c3c3b5cca6ce0ec71da16debb88a2.tar.gz |
added &^ and &^=
R=rsc
DELTA=14 (12 added, 0 deleted, 2 changed)
OCL=26278
CL=26348
Diffstat (limited to 'src/lib/go/scanner.go')
-rw-r--r-- | src/lib/go/scanner.go | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lib/go/scanner.go b/src/lib/go/scanner.go index f665f10ba..0910e59de 100644 --- a/src/lib/go/scanner.go +++ b/src/lib/go/scanner.go @@ -447,7 +447,13 @@ scan_again: case '>': tok = S.switch4(token.GTR, token.GEQ, '>', token.SHR, token.SHR_ASSIGN); case '=': tok = S.switch2(token.ASSIGN, token.EQL); case '!': tok = S.switch2(token.NOT, token.NEQ); - case '&': tok = S.switch3(token.AND, token.AND_ASSIGN, '&', token.LAND); + case '&': + if S.ch == '^' { + S.next(); + tok = S.switch2(token.AND_NOT, token.AND_NOT_ASSIGN); + } else { + tok = S.switch3(token.AND, token.AND_ASSIGN, '&', token.LAND); + } case '|': tok = S.switch3(token.OR, token.OR_ASSIGN, '|', token.LOR); default: S.error(loc, "illegal character " + charString(ch)); } |