Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Kucera2009-02-03 16:57:50 +0000
committerMike Kucera2009-02-03 16:57:50 +0000
commit75756374e344fd22c97f31308a3ec977c474b3ac (patch)
treecc96f2a4361e5b695519481b42c5b932720ff507 /upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java
parentbd7f096c7c4469c98cea8692325267b63e269d43 (diff)
downloadorg.eclipse.cdt-75756374e344fd22c97f31308a3ec977c474b3ac.tar.gz
org.eclipse.cdt-75756374e344fd22c97f31308a3ec977c474b3ac.tar.xz
org.eclipse.cdt-75756374e344fd22c97f31308a3ec977c474b3ac.zip
improved several interfaces in LR parser
Diffstat (limited to 'upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java')
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java53
1 files changed, 28 insertions, 25 deletions
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java
index 6ff22d291a6..570dc6feb68 100644
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java
@@ -37,7 +37,7 @@ import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
-public class UPCSizeofExpressionParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser
+public class UPCSizeofExpressionParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser< IASTExpression >
{
private static ParseTable prs = new UPCSizeofExpressionParserprs();
private FixedBacktrackingParser btParser;
@@ -128,22 +128,22 @@ public class UPCSizeofExpressionParser extends PrsStream implements RuleAction ,
super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg);
}
- public Object parser()
+ public void parser()
{
- return parser(null, 0);
+ parser(null, 0);
}
- public Object parser(Monitor monitor)
+ public void parser(Monitor monitor)
{
- return parser(monitor, 0);
+ parser(monitor, 0);
}
- public Object parser(int error_repair_count)
+ public void parser(int error_repair_count)
{
- return parser(null, error_repair_count);
+ parser(null, error_repair_count);
}
- public Object parser(Monitor monitor, int error_repair_count)
+ public void parser(Monitor monitor, int error_repair_count)
{
try
{
@@ -161,7 +161,7 @@ public class UPCSizeofExpressionParser extends PrsStream implements RuleAction ,
try
{
- return (Object) btParser.parse(error_repair_count);
+ btParser.parse(error_repair_count);
}
catch (BadParseException e)
{
@@ -169,19 +169,19 @@ public class UPCSizeofExpressionParser extends PrsStream implements RuleAction ,
DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
diagnoseParser.diagnose(e.error_token);
}
-
- return null;
}
private UPCParserAction action;
-private ScopedStack<Object> astStack = new ScopedStack<Object>();
+private IASTCompletionNode compNode;
public UPCSizeofExpressionParser() { // constructor
}
-private void initActions(IASTTranslationUnit tu, Set<IParser.Options> options) {
- action = new UPCParserAction (this, tu, astStack, new UPCASTNodeFactory() , UPCSecondaryParserFactory.getDefault() );
+private void initActions(Set<IParser.Options> options) {
+ ScopedStack<Object> astStack = new ScopedStack<Object>();
+
+ action = new UPCParserAction (this, astStack, new UPCASTNodeFactory() , UPCSecondaryParserFactory.getDefault() );
action.setParserOptions(options);
@@ -194,20 +194,21 @@ public void addToken(IToken token) {
}
-public IASTCompletionNode parse(IASTTranslationUnit tu, Set<IParser.Options> options) {
+public IASTExpression parse(Set<IParser.Options> options) {
// this has to be done, or... kaboom!
setStreamLength(getSize());
- initActions(tu, options);
+ initActions(options);
final int errorRepairCount = -1; // -1 means full error handling
parser(null, errorRepairCount); // do the actual parse
super.resetTokenStream(); // allow tokens to be garbage collected
- // the completion node may be null
- IASTCompletionNode compNode = action.getASTCompletionNode();
+ compNode = action.getASTCompletionNode(); // the completion node may be null
+ return ( IASTExpression ) action.getParseResult();
+}
- //action = null;
- //parserAction = null;
+
+public IASTCompletionNode getCompletionNode() {
return compNode;
}
@@ -216,10 +217,6 @@ public List<IToken> getRuleTokens() {
return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
}
-public IASTNode getSecondaryParseResult() {
- return (IASTNode) astStack.pop();
-}
-
public String[] getOrderedTerminalSymbols() {
return UPCSizeofExpressionParsersym.orderedTerminalSymbols;
}
@@ -783,6 +780,12 @@ public UPCSizeofExpressionParser(IParserActionTokenProvider parser) { // constr
}
//
+ // Rule 177: type_name_specifier ::= identifier_token
+ //
+ case 177: { action. consumeToken(); break;
+ }
+
+ //
// Rule 178: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
//
case 178: { action. consumeTypeSpecifierComposite(false); break;
@@ -1253,7 +1256,7 @@ public UPCSizeofExpressionParser(IParserActionTokenProvider parser) { // constr
//
// Rule 312: no_sizeof_type_id_start ::= ERROR_TOKEN
//
- case 312: { action. consumeExpressionProblem(); break;
+ case 312: { action. consumeEmpty(); break;
}
//

Back to the top