Mercurial > hg > CbC > old > device
changeset 360:d8190f815254
*** empty log message ***
author | kono |
---|---|
date | Mon, 05 Jul 2004 11:26:03 +0900 |
parents | 7ab4434ad869 |
children | 93652cda75c7 |
files | Changes mc-parse.c |
diffstat | 2 files changed, 21 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/Changes Mon Jul 05 10:42:25 2004 +0900 +++ b/Changes Mon Jul 05 11:26:03 2004 +0900 @@ -5492,3 +5492,13 @@ ぐらいではぜんぜんだめ。 別に問題なくできるじゃん。なにやってんだ? + +LDECL の中間 nlist って本当にいるの? こんなのがあるから、中 +間の nptr を一つ無駄にしているんだよね。make_local_scope だ +けで良いんじゃないかな。macro は、それで動いているわけだし。 + +なんか、struct が、ちょっとだめなみたいだな。type名がlocal +になってしまうから? + +なんか、type と tag をglobalにするので通ったけど... scope +に関しては、もう少しテストを書かないとだめだな。
--- a/mc-parse.c Mon Jul 05 10:42:25 2004 +0900 +++ b/mc-parse.c Mon Jul 05 11:26:03 2004 +0900 @@ -1034,6 +1034,9 @@ unsigned int hash = 0; struct cheap scheap; NMTBL *n; +#if 1 + NMTBL *nlist; +#endif while((ch = *name++)) { hash_value(hash,*cheap->ptr = ch); @@ -1054,8 +1057,7 @@ *cheap->ptr = 0; increment_cheap(cheap,&p); save_cheap(&scheap,cheap); - n = name_space_search( - name_space_search(hash_search(delimit=='_'?p:q,&scheap,len,hash,DEF),LDECL),0); + n = name_space_search(nlist=hash_search(delimit=='_'?p:q,&scheap,len,hash,DEF),0); n->nm = p; return n; } @@ -3233,7 +3235,7 @@ extern int getsym(int sc) { - NMTBL *nlist,*nptr0,*nptr1,*nptrm; + NMTBL *nlist,*nptr0,*nptrm; char c; if (alpha(skipspc())) { @@ -3266,19 +3268,14 @@ mode==GTDECL || mode==TOP || mode==GEDECL) { return sym; } - - /* local variable name table */ - nptr1 = name_space_search(nlist=name_space_search(nlist,LDECL),sc); + if (nptr->sc == TYPE) return sym; + if (nptr->sc == TAG) return sym; if (mode==STAT) { /* can be undeclared global variable */ - if (nptr1->sc == EMPTY) return sym; - else { - nptr=nptr1; - return sym; - } + return sym; } /* define case */ - nptr = make_local_scope(nlist,nptr1,sc); + nptr = make_local_scope(nlist,nptr,sc); return sym; } else if (digit(ch)||ch=='.') { @@ -3484,8 +3481,7 @@ lsearch(char *name,int sc) { NMTBL *nlist,*nptr1; - nptr1 = name_space_search( - nlist = name_space_search(get_name(name,0,DEF),LDECL),sc); + nptr1 = name_space_search(nlist=get_name(name,0,DEF),sc); return make_local_scope(nlist,nptr1,sc); } @@ -3494,8 +3490,7 @@ l_top_search(char *name,int sc) { NMTBL *nlist,*nptr1; - nptr1 = name_space_search( - nlist = name_space_search(get_name(name,0,DEF),LDECL),sc); + nptr1 = name_space_search(nlist=get_name(name,0,DEF),sc); return make_top_scope(nlist,nptr1,sc); }