diff options
Diffstat (limited to 'upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc')
-rw-r--r-- | upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/UPCLanguage.java | 113 | ||||
-rw-r--r-- | upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTForallStatement.java | 12 | ||||
-rw-r--r-- | upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypeIdExpression.java | 12 | ||||
-rw-r--r-- | upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTUnaryExpression.java (renamed from upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSizeofExpression.java) | 16 |
4 files changed, 89 insertions, 64 deletions
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/UPCLanguage.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/UPCLanguage.java index cf8fd1e4255..ef94c1fc984 100644 --- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/UPCLanguage.java +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/UPCLanguage.java @@ -10,81 +10,112 @@ *******************************************************************************/ package org.eclipse.cdt.core.dom.upc; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.eclipse.cdt.core.dom.ILinkage; -import org.eclipse.cdt.core.dom.c99.BaseExtensibleLanguage; -import org.eclipse.cdt.core.dom.c99.IC99TokenCollector; -import org.eclipse.cdt.core.dom.c99.IKeywordMap; -import org.eclipse.cdt.core.dom.c99.ILexerFactory; -import org.eclipse.cdt.core.dom.c99.IPPTokenComparator; -import org.eclipse.cdt.core.dom.c99.IParser; -import org.eclipse.cdt.core.dom.c99.IPreprocessorExtensionConfiguration; -import org.eclipse.cdt.core.dom.parser.c99.GCCPreprocessorExtensionConfiguration; -import org.eclipse.cdt.core.dom.parser.upc.UPCKeywordMap; -import org.eclipse.cdt.internal.core.dom.parser.upc.UPCLexerFactory; -import org.eclipse.cdt.internal.core.dom.parser.upc.UPCPPTokenComparator; -import org.eclipse.cdt.internal.core.dom.parser.upc.UPCParser; -import org.eclipse.cdt.internal.core.dom.parser.upc.UPCTokenCollector; +import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; +import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage; +import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap; +import org.eclipse.cdt.core.dom.lrparser.IParser; +import org.eclipse.cdt.core.dom.lrparser.action.c99.C99ASTNodeFactory; +import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; +import org.eclipse.cdt.core.dom.parser.upc.DOMToUPCTokenMap; +import org.eclipse.cdt.core.dom.parser.upc.UPCKeyword; +import org.eclipse.cdt.core.index.IIndex; +import org.eclipse.cdt.core.model.IContributedModelBuilder; +import org.eclipse.cdt.core.model.ITranslationUnit; +import org.eclipse.cdt.core.parser.IScanner; +import org.eclipse.cdt.core.parser.ParserLanguage; +import org.eclipse.cdt.internal.core.dom.parser.c.CASTTranslationUnit; /** * Implementation of the ILanguage extension point, adds UPC as a language to CDT. - * - * Just hooks into C99Language and provides UPC specifier parser and keyword map. - * + * * @author Mike Kucera */ public class UPCLanguage extends BaseExtensibleLanguage { - protected static final IPreprocessorExtensionConfiguration - GCC_PREPROCESSOR_EXTENSION = new GCCPreprocessorExtensionConfiguration(); - - // TODO: this should probably go somewhere else public static final String PLUGIN_ID = "org.eclipse.cdt.core.parser.upc"; //$NON-NLS-1$ public static final String ID = PLUGIN_ID + ".upc"; //$NON-NLS-1$ - private static final UPCKeywordMap keywordMap = new UPCKeywordMap(); - private static final UPCLanguage myDefault = new UPCLanguage(); + private static final IDOMTokenMap TOKEN_MAP = new DOMToUPCTokenMap(); + private static final C99Language C99_LANGUAGE = C99Language.getDefault(); + private static final UPCLanguage myDefault = new UPCLanguage(); + private static final String[] keywords = UPCKeyword.getAllKeywords(); + public static UPCLanguage getDefault() { return myDefault; } + @Override + protected IDOMTokenMap getTokenMap() { + return TOKEN_MAP; + } + + @Override + public IParser getParser() { + //return new UPCParser(); + return null; + } + + public IContributedModelBuilder createModelBuilder(ITranslationUnit tu) { + return null; + } + public String getId() { return ID; } - + public int getLinkageID() { return ILinkage.C_LINKAGE_ID; } - public String getName() { - // TODO: this has to be read from a message bundle - return "UPC";//$NON-NLS-1$ + public IASTName[] getSelectedNames(IASTTranslationUnit ast, int start, int length) { + return C99_LANGUAGE.getSelectedNames(ast, start, length); } - - - public IParser getParser() { - return new UPCParser(); + + public String[] getBuiltinTypes() { + return C99_LANGUAGE.getBuiltinTypes(); } - public IKeywordMap getKeywordMap() { - return keywordMap; + public String[] getKeywords() { + return keywords; } - protected IPreprocessorExtensionConfiguration getPreprocessorExtensionConfiguration() { - return GCC_PREPROCESSOR_EXTENSION; + public String[] getPreprocessorKeywords() { + return C99_LANGUAGE.getPreprocessorKeywords(); } - protected ILexerFactory getLexerFactory() { - return new UPCLexerFactory(); + @Override + protected ParserLanguage getParserLanguageForPreprocessor() { + return ParserLanguage.C; } - protected IPPTokenComparator getTokenComparator() { - return new UPCPPTokenComparator(); + /** + * Gets the translation unit object and sets the index and the location resolver. + */ + @SuppressWarnings("restriction") + @Override + protected IASTTranslationUnit createASTTranslationUnit(IIndex index, IScanner preprocessor) { + IASTTranslationUnit tu = C99ASTNodeFactory.DEFAULT_INSTANCE.newTranslationUnit(); + tu.setIndex(index); + if(tu instanceof CASTTranslationUnit) { + ((CASTTranslationUnit)tu).setLocationResolver(preprocessor.getLocationResolver()); + } + return tu; } - protected IC99TokenCollector getTokenCollector() { - return new UPCTokenCollector(); - } + + + + + } diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTForallStatement.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTForallStatement.java index 8254a93456f..2b10ba6f7b8 100644 --- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTForallStatement.java +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTForallStatement.java @@ -17,18 +17,6 @@ import org.eclipse.cdt.core.dom.ast.IASTStatement; public interface IUPCASTForallStatement extends IASTForStatement { - public static final ASTNodeProperty CONDITION = new ASTNodeProperty( - "IUPCASTForallStatement.CONDITION - IASTExpression condition of IUPCASTForallStatement"); //$NON-NLS-1$ - - public static final ASTNodeProperty ITERATION = new ASTNodeProperty( - "IUPCASTForallStatement.ITERATION - IASTExpression iteration of IUPCASTForallStatement"); //$NON-NLS-1$ - - public static final ASTNodeProperty BODY = new ASTNodeProperty( - "IUPCASTForallStatement.BODY - IASTStatement body of IUPCASTForallStatement"); //$NON-NLS-1$ - - public static final ASTNodeProperty INITIALIZER = new ASTNodeProperty( - "IUPCASTForallStatement.INITIALIZER - initializer for IUPCASTForallStatement"); //$NON-NLS-1$ - public static final ASTNodeProperty AFFINITY = new ASTNodeProperty( "IUPCASTForallStatement.AFFINITY - IASTExpression affinity for IUPCASTForallStatement"); //$NON-NLS-1$ diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypeIdExpression.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypeIdExpression.java new file mode 100644 index 00000000000..a37f4cec52e --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypeIdExpression.java @@ -0,0 +1,12 @@ +package org.eclipse.cdt.core.dom.upc.ast; + +import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression; + +public interface IUPCASTTypeIdExpression extends IASTTypeIdExpression { + + public final int op_upc_localsizeof = op_last + 1; + + public final int op_upc_blocksizeof = op_last + 2; + + public final int op_upc_elemsizeof = op_last + 3; +} diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSizeofExpression.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTUnaryExpression.java index 3fb0902a29d..74fe10f5702 100644 --- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSizeofExpression.java +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTUnaryExpression.java @@ -12,18 +12,12 @@ package org.eclipse.cdt.core.dom.upc.ast; import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression; -public interface IUPCASTSizeofExpression extends IASTUnaryExpression { +public interface IUPCASTUnaryExpression extends IASTUnaryExpression { - public final int op_sizeof = 0; + public final int op_upc_localsizeof = op_last + 1; - public final int op_upc_localsizeof = 1; + public final int op_upc_blocksizeof = op_last + 2; - public final int op_upc_blocksizeof = 2; + public final int op_upc_elemsizeof = op_last + 3; - public final int op_upc_elemsizeof = 3; - - public void setUPCSizeofOperator(int upcSizeofOperator); - - public int getUPCSizeofOperator(); - -} +}
\ No newline at end of file |