Thread: RE: [cedet-semantic] Parsing C++ typedefs with templates
Brought to you by:
zappo
From: Berndl, K. <kla...@sd...> - 2003-01-31 10:18:53
|
Hi, >it's me again. :-) fine :-) >Found another test case that currenty is not parsed correctly: >typedef boost::function1<bool, kat_def const &> parse_cb_t; >I checked the file c.bnf and found some stuff concerning templates >that would probably fix this issue but it's commented out. Is there a >reason for this? Which part you mean? reporting problems is fine - adding suggestions how to fix it is even finer - adding the fixes is finest :-) Klaus |
From: Berndl, K. <kla...@sd...> - 2003-02-01 18:23:12
|
>I investigated a little further and I think I found the problem. >This is parsed correctly: foo<arg, urgs> mpfl; >This isn't: foo<arg, const urgs> mpfl; >The problem IMO is with template-type: >template-type : CLASS symbol > [Snip] >This doesn't take into account that arguments for templates are >allowed to be full type specifiers. Yes, but there was some more to do............ I have checked in into v1p4 a new c.bnf, semantic-c.el, NEWS and tests/template.cpp. Now we take into account what you mentioned, Markus ;-) I have tested the new template-parsing a lot and with very complex examples (see tests/template.cpp) and all seems now working fine. I have also checked the parser output with semantic-test-all-.... looks very good. Now template-tokens contain much more useful informations! Markus, please check it out and give me feedback if it works for you too! BTW: A lot of thanks for your very valuable reports! Ciao, Klaus |
From:
<mar...@gi...> - 2003-02-03 09:19:30
|
Berndl, Klaus wrote: <snip> > I have checked in into v1p4 a new c.bnf, semantic-c.el, NEWS and > tests/template.cpp. Now we take into account what you mentioned, > Markus ;-) > > I have tested the new template-parsing a lot and with very complex examples > (see tests/template.cpp) and all seems now working fine. I have also > checked the parser output with semantic-test-all-.... looks very good. > Now template-tokens contain much more useful informations! > > Markus, please check it out and give me feedback if it works for you too! Looks good now. I can't find any more problems with templates now. Thanks, Klaus! > BTW: A lot of thanks for your very valuable reports! You're welcome. :-) Markus |
From: Berndl, K. <kla...@sd...> - 2003-02-03 09:56:06
|
>Looks good now. I can't find any more problems with templates now. Fine! >> BTW: A lot of thanks for your very valuable reports! >You're welcome. :-) Please go on programming complex C++-code so we can torture the C++- parser ;-) and therefore also enhancing it... AFAICS now the only (of course there are more than 1 problems in the C++- parsing, but IMHO curretnly only 1 important) remaining problem is parsing references to pointers like in void*& elem(int i); or in void elem(int *&i); Current parser allows only the reference-symbol before the pointer-stars (*). But IMHO this is not so easy to fix cause of the current token-rule- structure in v1p4 c.bnf. I must admit i'm not brave enough to change anything in that context ;-) - seems a little bit complex....but maybe latter... Or, what do you say, Eric, about this topic?? Ciao, Klaus |
From: David P. <Dav...@wa...> - 2003-02-03 10:02:27
|
Hi, >> I have checked in into v1p4 a new c.bnf, semantic-c.el, NEWS and >> tests/template.cpp. Now we take into account what you mentioned, >> Markus ;-) >> >> I have tested the new template-parsing a lot and with very complex >> examples >> (see tests/template.cpp) and all seems now working fine. I have also >> checked the parser output with semantic-test-all-.... looks very good.= >> Now template-tokens contain much more useful informations! >> >> Markus, please check it out and give me feedback if it works for you t= oo! > > > Looks good now. I can't find any more problems with templates now. > Thanks, Klaus! So it was worth waiting a little before releasing 1.4.3 ;-) Thanks, Klaus and Markus! Klaus, I synchronized the trunk with your latest fixes. David |
From:
<mar...@gi...> - 2003-01-31 11:41:00
|
Berndl, Klaus wrote: >> I checked the file c.bnf and found some stuff concerning >> templates that would probably fix this issue but it's commented >> out. Is there a reason for this? > > Which part you mean? reporting problems is fine - adding > suggestions how to fix it is even finer - adding the fixes is > finest :-) I investigated a little further and I think I found the problem. This is parsed correctly: foo<arg, urgs> mpfl; This isn't: foo<arg, const urgs> mpfl; The problem IMO is with template-type: template-type : CLASS symbol ( $2 type "class" nil nil) | STRUCT symbol ( $2 type "struct" nil nil) | TYPENAME symbol ( $2 type "struct" nil nil) | builtintype symbol ( ,$1 type nil nil nil) | builtintype ( ,$1 type nil nil nil) | namespace-symbol symbol ( ,$1 type nil nil nil) | namespace-symbol ( ,$1 type nil nil nil) ; This doesn't take into account that arguments for templates are allowed to be full type specifiers. HTH, Markus |