diff options
author | rsc <devnull@localhost> | 2005-11-29 05:12:48 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2005-11-29 05:12:48 +0000 |
commit | 62faed57a5bc13e14ee55aef32c210c713b315da (patch) | |
tree | 3fb0f577c32b00727c5deabbf403f8d4a11924ee /src/cmd/acid/lex.c | |
parent | e3de25fea4065d017fc344c3c7d757738a922c17 (diff) | |
download | plan9port-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.c | 16 |
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; } |