aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/acid/lex.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-11-29 05:12:48 +0000
committerrsc <devnull@localhost>2005-11-29 05:12:48 +0000
commit62faed57a5bc13e14ee55aef32c210c713b315da (patch)
tree3fb0f577c32b00727c5deabbf403f8d4a11924ee /src/cmd/acid/lex.c
parente3de25fea4065d017fc344c3c7d757738a922c17 (diff)
downloadplan9port-62faed57a5bc13e14ee55aef32c210c713b315da.tar.gz
plan9port-62faed57a5bc13e14ee55aef32c210c713b315da.tar.bz2
plan9port-62faed57a5bc13e14ee55aef32c210c713b315da.zip
handling of C++ names.
Diffstat (limited to 'src/cmd/acid/lex.c')
-rw-r--r--src/cmd/acid/lex.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/cmd/acid/lex.c b/src/cmd/acid/lex.c
index f265d6c9..b9b99762 100644
--- a/src/cmd/acid/lex.c
+++ b/src/cmd/acid/lex.c
@@ -348,7 +348,6 @@ bqsymbol(void)
char *p;
Lsym *s;
- symbol[0] = 0;
p = symbol;
while((c = lexc()) != '`'){
if(c == Eof)
@@ -361,6 +360,7 @@ bqsymbol(void)
sysfatal("overflow in bqsymbol");
*p = 0;
+fprint(2, "bq: %s\n", symbol);
s = look(symbol);
if(s == 0)
s = enter(symbol, Tid);
@@ -601,7 +601,19 @@ numsym(char first)
error("%d <eof> eating symbols", line);
if(c == '\n')
line++;
- if(c != '_' && c != '$' && c <= '~' && !isalnum(c)) { /* checking against ~ lets UTF names through */
+ /* allow :: in name */
+ if(c == ':'){
+ c = lexc();
+ if(c == ':'){
+ *p++ = ':';
+ *p++ = ':';
+ continue;
+ }
+ unlexc(c);
+ unlexc(':');
+ break;
+ }
+ if(c != '_' && c != '$' && c < Runeself && !isalnum(c)) {
unlexc(c);
break;
}