Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Kucera2008-03-07 19:03:13 +0000
committerMike Kucera2008-03-07 19:03:13 +0000
commit934ea2e952d36d4f89a1786f4242399fa224c59e (patch)
tree8f50eb8292ff6bad3dc062121d504a575ad96fe0 /lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp
parentc19a6ffad47fe772a3be345cfafc5e4ada2feabd (diff)
downloadorg.eclipse.cdt-934ea2e952d36d4f89a1786f4242399fa224c59e.tar.gz
org.eclipse.cdt-934ea2e952d36d4f89a1786f4242399fa224c59e.tar.xz
org.eclipse.cdt-934ea2e952d36d4f89a1786f4242399fa224c59e.zip
fix for parsing destructor name, fix for reinterpret_cast
Diffstat (limited to 'lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp')
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g13
1 files changed, 9 insertions, 4 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g
index f42ac1884d6..579f8f813d6 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g
+++ b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPGrammar.g
@@ -535,14 +535,19 @@ postfix_expression
-- instead of pseudo_destructor_name. But the difference is I have different
-- token types, so maybe I do need this rule.
pseudo_destructor_name
- ::= dcolon_opt nested_name_specifier_opt type_name '::' '~' type_name
+ ::= dcolon_opt nested_name_specifier_opt type_name '::' destructor_type_name
/. $Build consumePsudoDestructorName(true); $EndBuild ./
- | dcolon_opt nested_name_specifier 'template' template_id_name '::' '~' type_name
+ | dcolon_opt nested_name_specifier 'template' template_id_name '::' destructor_type_name
/. $Build consumePsudoDestructorName(true); $EndBuild ./
- | dcolon_opt nested_name_specifier_opt '~' type_name
+ | dcolon_opt nested_name_specifier_opt destructor_type_name
/. $Build consumePsudoDestructorName(false); $EndBuild ./
+destructor_type_name
+ ::= '~' type_name
+ /. $Build consumeDestructorName(); $EndBuild ./
+
+
unary_expression
::= postfix_expression
| new_expression
@@ -1076,7 +1081,7 @@ simple_type_specifier_token
-- last two rules moved here from simple_type_specifier
type_name -- all identifiers of some kind
::= class_name
- | enum_name -- identifier
+ | enum_name
| typedef_name

Back to the top