summaryrefslogtreecommitdiff
path: root/src/lib/go/scanner.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2009-03-16 14:20:08 -0700
committerRobert Griesemer <gri@golang.org>2009-03-16 14:20:08 -0700
commit5b3cc1ac576c3c3b5cca6ce0ec71da16debb88a2 (patch)
tree56ada7a7a7d96f8f3cdf622878723ba5ba9a9291 /src/lib/go/scanner.go
parent2427c89e69f1e6fd62be0331694036d2d3186b50 (diff)
downloadgolang-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.go8
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));
}