mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-07 17:56:01 +02:00
fix UPC sizeof expressions
This commit is contained in:
parent
004d070b6e
commit
2044602e4b
15 changed files with 341 additions and 190 deletions
|
@ -40,11 +40,11 @@ import org.eclipse.cdt.core.dom.upc.ast.IUPCASTForallStatement;
|
|||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSimpleDeclSpecifier;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTTypeIdExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTTypeIdSizeofExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
|
||||
import org.eclipse.cdt.core.lrparser.tests.ParseHelper;
|
||||
|
||||
|
||||
@SuppressWarnings("nls")
|
||||
public class UPCLanguageExtensionTests extends TestCase {
|
||||
|
||||
public UPCLanguageExtensionTests() {
|
||||
|
@ -73,15 +73,15 @@ public class UPCLanguageExtensionTests extends TestCase {
|
|||
}
|
||||
|
||||
|
||||
|
||||
public void testUPCSharedDeclarations1() throws Exception {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
sb.append("shared int a [100+THREADS];\n");//$NON-NLS-1$
|
||||
sb.append("shared [] int b [THREADS];\n");//$NON-NLS-1$
|
||||
sb.append("shared [90] int c [10];\n");//$NON-NLS-1$
|
||||
sb.append("shared [*] int d [];\n");//$NON-NLS-1$
|
||||
sb.append("relaxed int x;");//$NON-NLS-1$
|
||||
sb.append("strict int y;");//$NON-NLS-1$
|
||||
String code = sb.toString();
|
||||
String code =
|
||||
"shared int a [100+THREADS];\n" +
|
||||
"shared [] int b [THREADS];\n" +
|
||||
"shared [90] int c [10];\n" +
|
||||
"shared [*] int d [];\n" +
|
||||
"relaxed int x;" +
|
||||
"strict int y;";
|
||||
|
||||
IASTTranslationUnit tu = parseAndCheckBindings(code);
|
||||
IScope globalScope = tu.getScope();
|
||||
|
@ -103,7 +103,7 @@ public class UPCLanguageExtensionTests extends TestCase {
|
|||
assertEquals(1, declarators.length);
|
||||
IASTArrayDeclarator declarator_a = (IASTArrayDeclarator) declarators[0];
|
||||
IASTName name_a = declarator_a.getName();
|
||||
assertEquals("a", name_a.toString());//$NON-NLS-1$
|
||||
assertEquals("a", name_a.toString());
|
||||
IASTArrayModifier[] array_modifiers = declarator_a.getArrayModifiers();
|
||||
assertNotNull(array_modifiers);
|
||||
assertEquals(1, array_modifiers.length);
|
||||
|
@ -123,7 +123,7 @@ public class UPCLanguageExtensionTests extends TestCase {
|
|||
assertEquals(1, declarators.length);
|
||||
IASTArrayDeclarator declarator_b = (IASTArrayDeclarator) declarators[0];
|
||||
IASTName name_b = declarator_b.getName();
|
||||
assertEquals("b", name_b.toString());//$NON-NLS-1$
|
||||
assertEquals("b", name_b.toString());
|
||||
array_modifiers = declarator_b.getArrayModifiers();
|
||||
assertNotNull(array_modifiers);
|
||||
assertEquals(1, array_modifiers.length);
|
||||
|
@ -143,7 +143,7 @@ public class UPCLanguageExtensionTests extends TestCase {
|
|||
assertEquals(1, declarators.length);
|
||||
IASTArrayDeclarator declarator_c = (IASTArrayDeclarator) declarators[0];
|
||||
IASTName name_c = declarator_c.getName();
|
||||
assertEquals("c", name_c.toString());//$NON-NLS-1$
|
||||
assertEquals("c", name_c.toString());
|
||||
array_modifiers = declarator_c.getArrayModifiers();
|
||||
assertNotNull(array_modifiers);
|
||||
assertEquals(1, array_modifiers.length);
|
||||
|
@ -161,7 +161,7 @@ public class UPCLanguageExtensionTests extends TestCase {
|
|||
assertEquals(1, declarators.length);
|
||||
IASTArrayDeclarator declarator_d = (IASTArrayDeclarator) declarators[0];
|
||||
IASTName name_d = declarator_d.getName();
|
||||
assertEquals("d", name_d.toString());//$NON-NLS-1$
|
||||
assertEquals("d", name_d.toString());
|
||||
array_modifiers = declarator_d.getArrayModifiers();
|
||||
assertNotNull(array_modifiers);
|
||||
assertEquals(1, array_modifiers.length);
|
||||
|
@ -197,10 +197,9 @@ public class UPCLanguageExtensionTests extends TestCase {
|
|||
|
||||
|
||||
public void testUPCSharedDeclarations2() throws Exception {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
sb.append("int x = 10;");//$NON-NLS-1$
|
||||
sb.append("shared [x] int a [];\n");//$NON-NLS-1$
|
||||
String code = sb.toString();
|
||||
String code =
|
||||
"int x = 10;" +
|
||||
"shared [x] int a [];\n";
|
||||
|
||||
IASTTranslationUnit tu = parseAndCheckBindings(code);
|
||||
IScope globalScope = tu.getScope();
|
||||
|
@ -229,15 +228,14 @@ public class UPCLanguageExtensionTests extends TestCase {
|
|||
|
||||
|
||||
public void testUPCForall1() throws Exception {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
sb.append("int main() {\n");//$NON-NLS-1$
|
||||
sb.append(" int i;\n");//$NON-NLS-1$
|
||||
sb.append(" shared float *a;\n");//$NON-NLS-1$
|
||||
sb.append(" upc_forall(i=0; i<N; i++; &a[i]) { \n");//$NON-NLS-1$
|
||||
sb.append(" a[i] = 99; \n");//$NON-NLS-1$
|
||||
sb.append(" } \n");//$NON-NLS-1$
|
||||
sb.append("}\n");//$NON-NLS-1$
|
||||
String code = sb.toString();
|
||||
String code =
|
||||
"int main() {\n" +
|
||||
" int i;\n" +
|
||||
" shared float *a;\n" +
|
||||
" upc_forall(i=0; i<N; i++; &a[i]) { \n" +
|
||||
" a[i] = 99; \n" +
|
||||
" } \n" +
|
||||
"}\n";
|
||||
|
||||
IASTTranslationUnit tu = parse(code);
|
||||
|
||||
|
@ -312,14 +310,13 @@ public class UPCLanguageExtensionTests extends TestCase {
|
|||
* Test a declaration inside a upc_forall definition.
|
||||
*/
|
||||
public void testUPCForall2() throws Exception {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
sb.append("int main() {\n");//$NON-NLS-1$
|
||||
sb.append(" shared float *a;\n");//$NON-NLS-1$
|
||||
sb.append(" upc_forall(int i=0; i<N; i++; &a[i]) { \n");//$NON-NLS-1$
|
||||
sb.append(" a[i] = 99; \n");//$NON-NLS-1$
|
||||
sb.append(" } \n");//$NON-NLS-1$
|
||||
sb.append("}\n");//$NON-NLS-1$
|
||||
String code = sb.toString();
|
||||
String code =
|
||||
"int main() {\n" +
|
||||
" shared float *a;\n" +
|
||||
" upc_forall(int i=0; i<N; i++; &a[i]) { \n" +
|
||||
" a[i] = 99; \n" +
|
||||
" } \n" +
|
||||
"}\n";
|
||||
|
||||
IASTTranslationUnit tu = parse(code);
|
||||
|
||||
|
@ -386,12 +383,11 @@ public class UPCLanguageExtensionTests extends TestCase {
|
|||
* Test 'continue' inside upc_forall
|
||||
*/
|
||||
public void testUPCForall3() throws Exception {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
sb.append("int main() {\n");//$NON-NLS-1$
|
||||
sb.append(" upc_forall(int i=0; i<N; i++; continue) { \n");//$NON-NLS-1$
|
||||
sb.append(" } \n");//$NON-NLS-1$
|
||||
sb.append("}\n");//$NON-NLS-1$
|
||||
String code = sb.toString();
|
||||
String code =
|
||||
"int main() {\n" +
|
||||
" upc_forall(int i=0; i<N; i++; continue) { \n" +
|
||||
" } \n" +
|
||||
"}\n";
|
||||
|
||||
IASTTranslationUnit tu = parse(code);
|
||||
|
||||
|
@ -412,17 +408,16 @@ public class UPCLanguageExtensionTests extends TestCase {
|
|||
|
||||
|
||||
public void testUPCSynchronizationStatment() throws Exception {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
sb.append("int main() {\n");//$NON-NLS-1$
|
||||
sb.append(" upc_notify 1;\n");//$NON-NLS-1$
|
||||
sb.append(" upc_notify;\n");//$NON-NLS-1$
|
||||
sb.append(" upc_wait 1;\n");//$NON-NLS-1$
|
||||
sb.append(" upc_wait;\n");//$NON-NLS-1$
|
||||
sb.append(" upc_barrier 1;\n");//$NON-NLS-1$
|
||||
sb.append(" upc_barrier;\n");//$NON-NLS-1$
|
||||
sb.append(" upc_fence;\n");//$NON-NLS-1$
|
||||
sb.append("}\n");//$NON-NLS-1$
|
||||
String code = sb.toString();
|
||||
String code =
|
||||
"int main() {\n" +
|
||||
" upc_notify 1;\n" +
|
||||
" upc_notify;\n" +
|
||||
" upc_wait 1;\n" +
|
||||
" upc_wait;\n" +
|
||||
" upc_barrier 1;\n" +
|
||||
" upc_barrier;\n" +
|
||||
" upc_fence;\n" +
|
||||
"}\n";
|
||||
|
||||
IASTTranslationUnit tu = parse(code);
|
||||
|
||||
|
@ -466,18 +461,17 @@ public class UPCLanguageExtensionTests extends TestCase {
|
|||
}
|
||||
|
||||
public void testUPCSizeofExpressions() throws Exception {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
sb.append("int main() {\n");//$NON-NLS-1$
|
||||
sb.append(" sizeof(int); \n");//$NON-NLS-1$
|
||||
sb.append(" sizeof x; \n");//$NON-NLS-1$
|
||||
sb.append(" upc_localsizeof(int); \n");//$NON-NLS-1$
|
||||
sb.append(" upc_localsizeof x; \n");//$NON-NLS-1$
|
||||
sb.append(" upc_blocksizeof(int); \n");//$NON-NLS-1$
|
||||
sb.append(" upc_blocksizeof x; \n");//$NON-NLS-1$
|
||||
sb.append(" upc_elemsizeof(int); \n");//$NON-NLS-1$
|
||||
sb.append(" upc_elemsizeof x; \n");//$NON-NLS-1$
|
||||
sb.append("}\n");//$NON-NLS-1$
|
||||
String code = sb.toString();
|
||||
String code =
|
||||
"int main() {\n" +
|
||||
" sizeof(int); \n" +
|
||||
" sizeof x; \n" +
|
||||
" upc_localsizeof(int); \n" +
|
||||
" upc_localsizeof x; \n" +
|
||||
" upc_blocksizeof(int); \n" +
|
||||
" upc_blocksizeof x; \n" +
|
||||
" upc_elemsizeof(int); \n" +
|
||||
" upc_elemsizeof x; \n" +
|
||||
"}\n";
|
||||
|
||||
IASTTranslationUnit tu = parse(code);
|
||||
|
||||
|
@ -489,29 +483,57 @@ public class UPCLanguageExtensionTests extends TestCase {
|
|||
IASTStatement[] body = ((IASTCompoundStatement)main.getBody()).getStatements();
|
||||
assertEquals(8, body.length);
|
||||
|
||||
IASTTypeIdExpression idexpr = (IASTTypeIdExpression)((IASTExpressionStatement)body[0]).getExpression();
|
||||
@SuppressWarnings("unused")
|
||||
IASTTypeIdExpression cidexpr = (IASTTypeIdExpression)((IASTExpressionStatement)body[0]).getExpression();
|
||||
|
||||
IASTUnaryExpression cexpr = (IASTUnaryExpression)((IASTExpressionStatement)body[1]).getExpression();
|
||||
assertEquals(IASTUnaryExpression.op_sizeof, cexpr.getOperator());
|
||||
|
||||
IUPCASTUnaryExpression expr;
|
||||
IUPCASTUnarySizeofExpression expr;
|
||||
IUPCASTTypeIdSizeofExpression idexpr;
|
||||
|
||||
idexpr = (IUPCASTTypeIdExpression)((IASTExpressionStatement)body[2]).getExpression();
|
||||
assertEquals(IUPCASTUnaryExpression.op_upc_localsizeof, idexpr.getOperator());
|
||||
idexpr = (IUPCASTTypeIdSizeofExpression)((IASTExpressionStatement)body[2]).getExpression();
|
||||
assertEquals(IASTTypeIdExpression.op_sizeof, idexpr.getOperator());
|
||||
assertEquals(IUPCASTTypeIdSizeofExpression.upc_localsizeof, idexpr.getUPCSizeofOperator());
|
||||
|
||||
expr = (IUPCASTUnaryExpression)((IASTExpressionStatement)body[3]).getExpression();
|
||||
assertEquals(IUPCASTUnaryExpression.op_upc_localsizeof, expr.getOperator());
|
||||
expr = (IUPCASTUnarySizeofExpression)((IASTExpressionStatement)body[3]).getExpression();
|
||||
assertEquals(IASTUnaryExpression.op_sizeof, expr.getOperator());
|
||||
assertEquals(IUPCASTUnarySizeofExpression.upc_localsizeof, expr.getUPCSizeofOperator());
|
||||
|
||||
idexpr = (IUPCASTTypeIdExpression)((IASTExpressionStatement)body[4]).getExpression();
|
||||
assertEquals(IUPCASTUnaryExpression.op_upc_blocksizeof, idexpr.getOperator());
|
||||
idexpr = (IUPCASTTypeIdSizeofExpression)((IASTExpressionStatement)body[4]).getExpression();
|
||||
assertEquals(IASTTypeIdExpression.op_sizeof, idexpr.getOperator());
|
||||
assertEquals(IUPCASTTypeIdSizeofExpression.upc_blocksizeof, idexpr.getUPCSizeofOperator());
|
||||
|
||||
expr = (IUPCASTUnaryExpression)((IASTExpressionStatement)body[5]).getExpression();
|
||||
assertEquals(IUPCASTUnaryExpression.op_upc_blocksizeof, expr.getOperator());
|
||||
expr = (IUPCASTUnarySizeofExpression)((IASTExpressionStatement)body[5]).getExpression();
|
||||
assertEquals(IASTUnaryExpression.op_sizeof, expr.getOperator());
|
||||
assertEquals(IUPCASTUnarySizeofExpression.upc_blocksizeof, expr.getUPCSizeofOperator());
|
||||
|
||||
idexpr = (IUPCASTTypeIdExpression)((IASTExpressionStatement)body[6]).getExpression();
|
||||
assertEquals(IUPCASTUnaryExpression.op_upc_elemsizeof, idexpr.getOperator());
|
||||
idexpr = (IUPCASTTypeIdSizeofExpression)((IASTExpressionStatement)body[6]).getExpression();
|
||||
assertEquals(IASTTypeIdExpression.op_sizeof, idexpr.getOperator());
|
||||
assertEquals(IUPCASTTypeIdSizeofExpression.upc_elemsizeof, idexpr.getUPCSizeofOperator());
|
||||
|
||||
expr = (IUPCASTUnaryExpression)((IASTExpressionStatement)body[7]).getExpression();
|
||||
assertEquals(IUPCASTUnaryExpression.op_upc_elemsizeof, expr.getOperator());
|
||||
expr = (IUPCASTUnarySizeofExpression)((IASTExpressionStatement)body[7]).getExpression();
|
||||
assertEquals(IASTUnaryExpression.op_sizeof, expr.getOperator());
|
||||
assertEquals(IUPCASTUnarySizeofExpression.upc_elemsizeof, expr.getUPCSizeofOperator());
|
||||
}
|
||||
|
||||
|
||||
public void testUPCSizeofExpressionsDisambiguate() throws Exception {
|
||||
String code =
|
||||
"int foo() {" +
|
||||
" typedef int t;" +
|
||||
" int x;" +
|
||||
" upc_blocksizeof(t);" +
|
||||
" upc_blocksizeof(x);" +
|
||||
"}";
|
||||
|
||||
IASTTranslationUnit tu = parse(code);
|
||||
|
||||
IASTDeclaration[] declarations = tu.getDeclarations();
|
||||
IASTFunctionDefinition main = (IASTFunctionDefinition) declarations[0];
|
||||
IASTStatement[] body = ((IASTCompoundStatement)main.getBody()).getStatements();
|
||||
|
||||
assertTrue(((IASTExpressionStatement)body[2]).getExpression() instanceof IUPCASTTypeIdSizeofExpression);
|
||||
assertTrue(((IASTExpressionStatement)body[3]).getExpression() instanceof IUPCASTUnarySizeofExpression);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -65,17 +65,17 @@ literal
|
|||
-- causes ambiguities because of no type information, solution is SGLR
|
||||
unary_expression
|
||||
::= 'upc_localsizeof' unary_expression
|
||||
/. $Build consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_localsizeof); $EndBuild ./
|
||||
/. $Build consumeExpressionUnarySizeofOperator(IUPCASTUnaryExpression.upc_localsizeof); $EndBuild ./
|
||||
| 'upc_localsizeof' '(' type_name ')'
|
||||
/. $Build consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_localsizeof); $EndBuild ./
|
||||
/. $Build consumeExpressionSizeofTypeId(IUPCASTUnaryExpression.upc_localsizeof); $EndBuild ./
|
||||
| 'upc_blocksizeof' unary_expression
|
||||
/. $Build consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); $EndBuild ./
|
||||
/. $Build consumeExpressionUnarySizeofOperator(IUPCASTUnaryExpression.upc_blocksizeof); $EndBuild ./
|
||||
| 'upc_blocksizeof' '(' type_name ')'
|
||||
/. $Build consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_blocksizeof); $EndBuild ./
|
||||
/. $Build consumeExpressionSizeofTypeId(IUPCASTUnaryExpression.upc_blocksizeof); $EndBuild ./
|
||||
| 'upc_elemsizeof' unary_expression
|
||||
/. $Build consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); $EndBuild ./
|
||||
/. $Build consumeExpressionUnarySizeofOperator(IUPCASTUnaryExpression.upc_elemsizeof); $EndBuild ./
|
||||
| 'upc_elemsizeof' '(' type_name ')'
|
||||
/. $Build consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_elemsizeof); $EndBuild ./
|
||||
/. $Build consumeExpressionSizeofTypeId(IUPCASTUnaryExpression.upc_elemsizeof); $EndBuild ./
|
||||
|
||||
|
||||
-----------------------------------------------------------------------------------
|
||||
|
|
|
@ -15,6 +15,7 @@ import org.eclipse.cdt.core.dom.ast.IASTName;
|
|||
import org.eclipse.cdt.core.dom.ast.IASTStatement;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTTypeId;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
|
||||
import org.eclipse.cdt.core.dom.ast.c.ICASTCompositeTypeSpecifier;
|
||||
import org.eclipse.cdt.core.dom.ast.c.ICASTElaboratedTypeSpecifier;
|
||||
import org.eclipse.cdt.core.dom.ast.c.ICASTEnumerationSpecifier;
|
||||
|
@ -24,7 +25,6 @@ import org.eclipse.cdt.core.dom.lrparser.action.c99.C99ASTNodeFactory;
|
|||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTForallStatement;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTCompositeTypeSpecifier;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTElaboratedTypeSpecifier;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTEnumerationSpecifier;
|
||||
|
@ -32,9 +32,9 @@ import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTForallStatement;
|
|||
import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTKeywordExpression;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTSimpleDeclSpecifier;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTSynchronizationStatement;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTTypeIdExpression;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTTypeIdSizeofExpression;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTTypedefNameSpecifier;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTUnaryExpression;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTUnarySizeofExpression;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -49,19 +49,43 @@ public class UPCASTNodeFactory extends C99ASTNodeFactory {
|
|||
|
||||
public static final UPCASTNodeFactory DEFAULT_INSTANCE = new UPCASTNodeFactory();
|
||||
|
||||
private boolean useUPCSizeofExpressions = false;
|
||||
private int currentUPCSizofExpressionOperator = 0;
|
||||
|
||||
|
||||
public void setUseUPCSizeofExpressions(int op) {
|
||||
useUPCSizeofExpressions = true;
|
||||
currentUPCSizofExpressionOperator = op;
|
||||
}
|
||||
|
||||
public void setUseC99SizeofExpressions() {
|
||||
useUPCSizeofExpressions = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public IASTTypeIdExpression newTypeIdExpression(int operator, IASTTypeId typeId) {
|
||||
return new UPCASTTypeIdExpression(operator, typeId);
|
||||
}
|
||||
|
||||
public IUPCASTKeywordExpression newKeywordExpression(int keywordKind) {
|
||||
return new UPCASTKeywordExpression(keywordKind);
|
||||
if(useUPCSizeofExpressions) {
|
||||
assert operator == IASTTypeIdExpression.op_sizeof;
|
||||
return new UPCASTTypeIdSizeofExpression(currentUPCSizofExpressionOperator, typeId);
|
||||
}
|
||||
|
||||
return super.newTypeIdExpression(operator, typeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IUPCASTUnaryExpression newUnaryExpression(int operator, IASTExpression operand) {
|
||||
return new UPCASTUnaryExpression(operator, operand);
|
||||
public IASTUnaryExpression newUnaryExpression(int operator, IASTExpression operand) {
|
||||
if(useUPCSizeofExpressions) {
|
||||
assert operator == IASTUnaryExpression.op_sizeof;
|
||||
return new UPCASTUnarySizeofExpression(currentUPCSizofExpressionOperator, operand);
|
||||
}
|
||||
|
||||
return super.newUnaryExpression(operator, operand);
|
||||
}
|
||||
|
||||
public IUPCASTKeywordExpression newKeywordExpression(int keywordKind) {
|
||||
return new UPCASTKeywordExpression(keywordKind);
|
||||
}
|
||||
|
||||
public IUPCASTSynchronizationStatement newSyncronizationStatment(IASTExpression barrierExpression, int statmentKind) {
|
||||
|
|
|
@ -11,20 +11,26 @@
|
|||
package org.eclipse.cdt.core.dom.parser.upc;
|
||||
|
||||
|
||||
import static org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym.*;
|
||||
import lpg.lpgjavaruntime.IToken;
|
||||
|
||||
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTStatement;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
|
||||
import org.eclipse.cdt.core.dom.ast.c.ICASTDeclSpecifier;
|
||||
import org.eclipse.cdt.core.dom.lrparser.IParser;
|
||||
import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider;
|
||||
import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTDeclSpecifier;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTForallStatement;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.UPCExpressionStatementParser;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.UPCNoCastExpressionParser;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.UPCSizeofExpressionParser;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -33,24 +39,62 @@ import org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym;
|
|||
*/
|
||||
public class UPCParserAction extends C99BuildASTParserAction {
|
||||
|
||||
private final UPCASTNodeFactory nodeFactory;
|
||||
private UPCASTNodeFactory nodeFactory;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* TODO why is the nodeFactory passed as an argument
|
||||
* @param nodeFactory
|
||||
* @param parser
|
||||
* @param tu
|
||||
*/
|
||||
public UPCParserAction(UPCASTNodeFactory nodeFactory, IParserActionTokenProvider parser, IASTTranslationUnit tu) {
|
||||
super(nodeFactory, parser, tu);
|
||||
this.nodeFactory = nodeFactory;
|
||||
nodeFactory.setUseC99SizeofExpressions();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected boolean isCompletionToken(IToken token) {
|
||||
return token.getKind() == UPCParsersym.TK_Completion;
|
||||
return token.getKind() == TK_Completion;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected IParser getExpressionStatementParser() {
|
||||
return new UPCExpressionStatementParser(parser.getOrderedTerminalSymbols());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected IParser getNoCastExpressionParser() {
|
||||
return new UPCNoCastExpressionParser(parser.getOrderedTerminalSymbols());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected IParser getSizeofExpressionParser() {
|
||||
return new UPCSizeofExpressionParser(parser.getOrderedTerminalSymbols());
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************************
|
||||
* Semantic actions
|
||||
**************************************************************************************/
|
||||
|
||||
|
||||
public void consumeExpressionUnarySizeofOperator(int upcOp) {
|
||||
nodeFactory.setUseUPCSizeofExpressions(upcOp);
|
||||
super.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
|
||||
nodeFactory.setUseC99SizeofExpressions();
|
||||
}
|
||||
|
||||
|
||||
public void consumeExpressionSizeofTypeId(int upcOp) {
|
||||
nodeFactory.setUseUPCSizeofExpressions(upcOp);
|
||||
super.consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof);
|
||||
nodeFactory.setUseC99SizeofExpressions();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* constant ::= 'MYTHREAD' | 'THREADS' | 'UPC_MAX_BLOCKSIZE'
|
||||
|
@ -165,13 +209,13 @@ public class UPCParserAction extends C99BuildASTParserAction {
|
|||
*/
|
||||
protected void setTokenSpecifier(IUPCASTDeclSpecifier node, IToken token) {
|
||||
switch(token.getKind()) {
|
||||
case UPCParsersym.TK_relaxed:
|
||||
case TK_relaxed:
|
||||
node.setReferenceType(IUPCASTDeclSpecifier.rt_relaxed);
|
||||
break;
|
||||
case UPCParsersym.TK_strict:
|
||||
case TK_strict:
|
||||
node.setReferenceType(IUPCASTDeclSpecifier.rt_strict);
|
||||
break;
|
||||
case UPCParsersym.TK_shared:
|
||||
case TK_shared:
|
||||
node.setSharedQualifier(IUPCASTDeclSpecifier.sh_shared_default_block_size);
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
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;
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2006, 2008 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.core.dom.upc.ast;
|
||||
|
||||
import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
|
||||
|
||||
public interface IUPCASTTypeIdSizeofExpression extends IASTTypeIdExpression {
|
||||
|
||||
public final int upc_localsizeof = 1;
|
||||
|
||||
public final int upc_blocksizeof = 2;
|
||||
|
||||
public final int upc_elemsizeof = 3;
|
||||
|
||||
|
||||
public int getUPCSizeofOperator();
|
||||
|
||||
public void setUPCSizeofOperator(int upcSizeofOperator);
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2006, 2007 IBM Corporation and others.
|
||||
* Copyright (c) 2006, 2008 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
|
@ -12,12 +12,17 @@ package org.eclipse.cdt.core.dom.upc.ast;
|
|||
|
||||
import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
|
||||
|
||||
public interface IUPCASTUnaryExpression extends IASTUnaryExpression {
|
||||
public interface IUPCASTUnarySizeofExpression extends IASTUnaryExpression {
|
||||
|
||||
public final int op_upc_localsizeof = op_last + 1;
|
||||
public final int upc_localsizeof = 1;
|
||||
|
||||
public final int op_upc_blocksizeof = op_last + 2;
|
||||
public final int upc_blocksizeof = 2;
|
||||
|
||||
public final int op_upc_elemsizeof = op_last + 3;
|
||||
public final int upc_elemsizeof = 3;
|
||||
|
||||
|
||||
public int getUPCSizeofOperator();
|
||||
|
||||
public void setUPCSizeofOperator(int upcSizeofOperator);
|
||||
|
||||
}
|
|
@ -30,9 +30,8 @@ import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory;
|
|||
import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public class UPCExpressionStatementParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser
|
||||
{
|
||||
private static ParseTable prs = new UPCExpressionStatementParserprs();
|
||||
|
@ -1281,37 +1280,37 @@ public UPCExpressionStatementParser(String[] mapFrom) { // constructor
|
|||
//
|
||||
// Rule 312: unary_expression ::= upc_localsizeof unary_expression
|
||||
//
|
||||
case 312: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_localsizeof); break;
|
||||
case 312: { action. consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_localsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 313: unary_expression ::= upc_localsizeof ( type_name )
|
||||
//
|
||||
case 313: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_localsizeof); break;
|
||||
case 313: { action. consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_localsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 314: unary_expression ::= upc_blocksizeof unary_expression
|
||||
//
|
||||
case 314: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); break;
|
||||
case 314: { action. consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_blocksizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 315: unary_expression ::= upc_blocksizeof ( type_name )
|
||||
//
|
||||
case 315: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_blocksizeof); break;
|
||||
case 315: { action. consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_blocksizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 316: unary_expression ::= upc_elemsizeof unary_expression
|
||||
//
|
||||
case 316: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); break;
|
||||
case 316: { action. consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_elemsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 317: unary_expression ::= upc_elemsizeof ( type_name )
|
||||
//
|
||||
case 317: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_elemsizeof); break;
|
||||
case 317: { action. consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_elemsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -30,7 +30,7 @@ import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory;
|
|||
import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
|
||||
|
||||
public class UPCNoCastExpressionParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser
|
||||
{
|
||||
|
@ -1274,37 +1274,37 @@ public UPCNoCastExpressionParser(String[] mapFrom) { // constructor
|
|||
//
|
||||
// Rule 311: unary_expression ::= upc_localsizeof unary_expression
|
||||
//
|
||||
case 311: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_localsizeof); break;
|
||||
case 311: { action. consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_localsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 312: unary_expression ::= upc_localsizeof ( type_name )
|
||||
//
|
||||
case 312: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_localsizeof); break;
|
||||
case 312: { action. consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_localsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 313: unary_expression ::= upc_blocksizeof unary_expression
|
||||
//
|
||||
case 313: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); break;
|
||||
case 313: { action. consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_blocksizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 314: unary_expression ::= upc_blocksizeof ( type_name )
|
||||
//
|
||||
case 314: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_blocksizeof); break;
|
||||
case 314: { action. consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_blocksizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 315: unary_expression ::= upc_elemsizeof unary_expression
|
||||
//
|
||||
case 315: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); break;
|
||||
case 315: { action. consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_elemsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 316: unary_expression ::= upc_elemsizeof ( type_name )
|
||||
//
|
||||
case 316: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_elemsizeof); break;
|
||||
case 316: { action. consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_elemsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -30,7 +30,7 @@ import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory;
|
|||
import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
|
||||
|
||||
public class UPCParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser
|
||||
{
|
||||
|
@ -1274,37 +1274,37 @@ public UPCParser(String[] mapFrom) { // constructor
|
|||
//
|
||||
// Rule 310: unary_expression ::= upc_localsizeof unary_expression
|
||||
//
|
||||
case 310: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_localsizeof); break;
|
||||
case 310: { action. consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_localsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 311: unary_expression ::= upc_localsizeof ( type_name )
|
||||
//
|
||||
case 311: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_localsizeof); break;
|
||||
case 311: { action. consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_localsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 312: unary_expression ::= upc_blocksizeof unary_expression
|
||||
//
|
||||
case 312: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); break;
|
||||
case 312: { action. consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_blocksizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 313: unary_expression ::= upc_blocksizeof ( type_name )
|
||||
//
|
||||
case 313: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_blocksizeof); break;
|
||||
case 313: { action. consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_blocksizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 314: unary_expression ::= upc_elemsizeof unary_expression
|
||||
//
|
||||
case 314: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); break;
|
||||
case 314: { action. consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_elemsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 315: unary_expression ::= upc_elemsizeof ( type_name )
|
||||
//
|
||||
case 315: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_elemsizeof); break;
|
||||
case 315: { action. consumeExpressionSizeofTypeId(IUPCASTUnarySizeofExpression.upc_elemsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -30,7 +30,7 @@ import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory;
|
|||
import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
|
||||
|
||||
public class UPCSizeofExpressionParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser
|
||||
{
|
||||
|
@ -1274,19 +1274,19 @@ public UPCSizeofExpressionParser(String[] mapFrom) { // constructor
|
|||
//
|
||||
// Rule 311: unary_expression ::= upc_localsizeof unary_expression
|
||||
//
|
||||
case 311: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_localsizeof); break;
|
||||
case 311: { action. consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_localsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 312: unary_expression ::= upc_blocksizeof unary_expression
|
||||
//
|
||||
case 312: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); break;
|
||||
case 312: { action. consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_blocksizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 313: unary_expression ::= upc_elemsizeof unary_expression
|
||||
//
|
||||
case 313: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); break;
|
||||
case 313: { action. consumeExpressionUnarySizeofOperator(IUPCASTUnarySizeofExpression.upc_elemsizeof); break;
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
|
||||
|
||||
import org.eclipse.cdt.core.dom.ast.IASTTypeId;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTTypeIdExpression;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.c.CASTTypeIdExpression;
|
||||
|
||||
@SuppressWarnings("restriction")
|
||||
public class UPCASTTypeIdExpression extends CASTTypeIdExpression implements
|
||||
IUPCASTTypeIdExpression {
|
||||
|
||||
public UPCASTTypeIdExpression() {
|
||||
}
|
||||
|
||||
public UPCASTTypeIdExpression(int op, IASTTypeId typeId) {
|
||||
super(op, typeId);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2006, 2008 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
|
||||
|
||||
import org.eclipse.cdt.core.dom.ast.IASTTypeId;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTTypeIdSizeofExpression;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.c.CASTTypeIdExpression;
|
||||
|
||||
@SuppressWarnings("restriction")
|
||||
public class UPCASTTypeIdSizeofExpression extends CASTTypeIdExpression implements IUPCASTTypeIdSizeofExpression {
|
||||
|
||||
private int upcSizeofOperator;
|
||||
|
||||
public UPCASTTypeIdSizeofExpression() {
|
||||
}
|
||||
|
||||
public UPCASTTypeIdSizeofExpression(IASTTypeId typeId) {
|
||||
super(IASTTypeIdExpression.op_sizeof, typeId);
|
||||
}
|
||||
|
||||
public UPCASTTypeIdSizeofExpression(int upcSizeofOperator, IASTTypeId typeId) {
|
||||
super(IASTTypeIdExpression.op_sizeof, typeId);
|
||||
this.upcSizeofOperator = upcSizeofOperator;
|
||||
}
|
||||
|
||||
public int getUPCSizeofOperator() {
|
||||
return upcSizeofOperator;
|
||||
}
|
||||
|
||||
public void setUPCSizeofOperator(int upcSizeofOperator) {
|
||||
this.upcSizeofOperator = upcSizeofOperator;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2006, 2007 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
|
||||
|
||||
import org.eclipse.cdt.core.dom.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.c.CASTUnaryExpression;
|
||||
|
||||
@SuppressWarnings("restriction")
|
||||
public class UPCASTUnaryExpression extends CASTUnaryExpression implements IUPCASTUnaryExpression {
|
||||
|
||||
public UPCASTUnaryExpression() {
|
||||
}
|
||||
|
||||
public UPCASTUnaryExpression(int operator, IASTExpression operand) {
|
||||
super(operator, operand);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2006, 2008 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.core.dom.parser.upc.ast;
|
||||
|
||||
import org.eclipse.cdt.core.dom.ast.IASTExpression;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
|
||||
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnarySizeofExpression;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.c.CASTUnaryExpression;
|
||||
|
||||
@SuppressWarnings("restriction")
|
||||
public class UPCASTUnarySizeofExpression extends CASTUnaryExpression implements IUPCASTUnarySizeofExpression {
|
||||
|
||||
private int upcSizeofOperator;
|
||||
|
||||
|
||||
public UPCASTUnarySizeofExpression() {
|
||||
}
|
||||
|
||||
public UPCASTUnarySizeofExpression(IASTExpression operand) {
|
||||
super(IASTUnaryExpression.op_sizeof, operand);
|
||||
}
|
||||
|
||||
public UPCASTUnarySizeofExpression(int upcSizeofOperator, IASTExpression operand) {
|
||||
super(IASTUnaryExpression.op_sizeof, operand);
|
||||
this.upcSizeofOperator = upcSizeofOperator;
|
||||
}
|
||||
|
||||
public int getUPCSizeofOperator() {
|
||||
return upcSizeofOperator;
|
||||
}
|
||||
|
||||
public void setUPCSizeofOperator(int upcSizeofOperator) {
|
||||
this.upcSizeofOperator = upcSizeofOperator;
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue