diff options
Diffstat (limited to 'lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java')
-rw-r--r-- | lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java index f5dd2ddd43b..15055126ff7 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java @@ -17,20 +17,29 @@ import lpg.lpgjavaruntime.*; import java.util.*; import org.eclipse.cdt.core.dom.ast.*; +import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter; +import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap; import org.eclipse.cdt.core.dom.lrparser.IParser; -import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; +import org.eclipse.cdt.core.dom.lrparser.ITokenCollector; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; +import org.eclipse.cdt.core.parser.IScanner; +import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider; +import org.eclipse.cdt.core.index.IIndex; +import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; +import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser; import org.eclipse.cdt.core.dom.ast.cpp.*; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory; import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction; import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPSecondaryParserFactory; -public class CPPNoCastExpressionParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser< IASTExpression > +public class CPPNoCastExpressionParser extends PrsStream implements RuleAction, ITokenStream, + ITokenCollector, IParser< IASTExpression > + , ISecondaryParser< IASTExpression > { private static ParseTable prs = new CPPNoCastExpressionParserprs(); private FixedBacktrackingParser btParser; @@ -168,7 +177,11 @@ public class CPPNoCastExpressionParser extends PrsStream implements RuleAction , private CPPBuildASTParserAction action; private IASTCompletionNode compNode; -public CPPNoCastExpressionParser() { // constructor + +public CPPNoCastExpressionParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Set<IParser.Options> options) { + initActions(options); + action.initializeTranslationUnit(scanner, builtinBindingsProvider, index); + CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap); } private void initActions(Set<IParser.Options> options) { @@ -187,10 +200,9 @@ public void addToken(IToken token) { } -public IASTExpression parse(Set<IParser.Options> options) { +public IASTExpression parse() { // this has to be done, or... kaboom! setStreamLength(getSize()); - initActions(options); final int errorRepairCount = -1; // -1 means full error handling parser(null, errorRepairCount); // do the actual parse @@ -233,12 +245,12 @@ public void setTokens(List<IToken> tokens) { addToken(new Token(null, 0, 0, CPPNoCastExpressionParsersym.TK_EOF_TOKEN)); } -public CPPNoCastExpressionParser(IParserActionTokenProvider parser) { // constructor +public CPPNoCastExpressionParser(ITokenStream parser, Set<IParser.Options> options) { // constructor for creating secondary parser + initActions(options); tokenMap = new TokenMap(CPPNoCastExpressionParsersym.orderedTerminalSymbols, parser.getOrderedTerminalSymbols()); } - public void ruleAction(int ruleNumber) { switch (ruleNumber) @@ -1415,19 +1427,19 @@ public CPPNoCastExpressionParser(IParserActionTokenProvider parser) { // constr } // - // Rule 327: ptr_operator ::= pointer_hook * <openscope-ast> cv_qualifier_seq_opt + // Rule 327: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt // case 327: { action. consumePointer(); break; } // - // Rule 328: ptr_operator ::= pointer_hook & + // Rule 328: ptr_operator ::= pointer_hook & pointer_hook // case 328: { action. consumeReferenceOperator(); break; } // - // Rule 329: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * <openscope-ast> cv_qualifier_seq_opt + // Rule 329: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt // case 329: { action. consumePointerToMember(); break; } |