sagexx_ug (1158317), страница 6

Файл №1158317 sagexx_ug (Раздаточные материалы) 6 страницаsagexx_ug (1158317) страница 62019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

`SgExpression' is the base class for all expressions.Unlike the SgStatement class hierarchy, there is not a subclass for every expression operator type.Basic binary operators such as the standard arithmetic operators are identied only the integervariant returned by the SgExpression member function `variant()'. The expression nodes thathave their own subclass do so because they have a special type of constructor or special elds.4.1 SgExpressionSgExpression is the base class for all the other expression classes.

Every expression may haveup to two operands (or subexpressions), the left hand side `lhs()' and the right hand side `rhs()'.Each expression has a type `type()', may have a symbol `symbol()', and has a unique identier`id()'.SgExpression is used to represent the basic binary operators, for C (? and Fortran?), which arelisted below along with their variants:+ ADD OP- SUBT OP* MULT OP/ DIV OP% MOD OP< LT OP> GT OP<= LE OP>= GE OP& BITAND OP| BITOR OP&& AND OP|| OR OP<< LSHIFT OP>> RSHIFT OP= ASSGN OP+= PLUS ASSGN OP&= AND ASSGN OP*= MULT ASSGN OP/= DIV ASSGN OP%= MOD ASSGN OP^= XOR ASSGN OP<<= LSHIFT ASSGN OP>>= RSHIFT ASSGN OPChapter 4: Expressions71== EQ OP!= NEQ OP-> POINTST OP:: SCOPE OP.

BIT NUMBERThe SgExpression class:class SgExpression {public:PTR_LLND thellnd;// generic expression class.SgExpression(int variant, SgExpression &lhs, SgExpression &rhs,SgSymbol &s, SgType &type);SgExpression(int variant);SgExpression(PTR_LLND ll);SgExpressionSgExpressionSgExpressionintSgType *SgSymbol *intSgExpressionvoidvoidvoidvoidvoidSgExpressionchar *voidvoidSgExpressionvoidSgExpressionSgExpressionint* lhs();* rhs();* operand(int i);variant();type();symbol();id();* nextInExprTable();setLhs(SgExpression &e);setRhs(SgExpression &e);setSymbol(SgSymbol &s);setType(SgType &t);setVariant(int v);};& copy();unparse();sunparse(char *buffer);unparsestdout();* IsSymbolInExpression(SgSymbol &symbol);replaceSymbolByExpression(SgSymbol &symbol, SgExpression &expr);* symbRefs();* arrayRefs();linearRepresentation(int *coeff, SgSymbol **symb, int *cst,int size);SgExpression * normalForm(int n, SgSymbol *s);SgExpression * coefficient(SgSymbol &s);intisInteger();intvalueInteger();Chapter 4: Expressions72SgExpression is used in the following places in the example programs: see [Restructure - addStuToProgram], page 135 see [Instrument - VistaInstrument], page 145 see [Instrument - isReferenceToMethodOfElement], page 147 see [Instrument - isReferenceToClassOfElement], page 148 see [Instrument - isReferenceToCollection], page 150 see [Instrument - ListCollectionInvocations], page 153 see [Instrument - CTimingInstrumentSub], page 156 see hundenedi [Expand Syntax], page hundenedi see [Expand Syntax - isReferenceToElementField], page 160 see [Expand Syntax - isArrayRefOfCollection], page 161 see [Expand Syntax - ExpandSyntax], page 162 see [Expand Syntax - SearchInExpForCollectionArrayRef], page 162 see [Expand Syntax - ReplaceWithGetElemPart], page 163 see [Dump Info - classifyStatements], page 170 see [Dump Info - doLoopStmts], page 177 see [Dump Info - classifyExpressions], page 181Member Functions:SgExpression(int variant, SgExpression &lhs, SgExpression &rhs, SgSymbol &s, SgType &type)SgExpression(int variant)SgExpression(PTR LLND ll)SgExpression * lhs()SgExpression * rhs()SgExpression * operand(int i)int variant()SgType * type()SgSymbol * symbol()int id()SgExpression * nextInExprTable()void setLhs(SgExpression &e)Chapter 4: Expressionsvoid setRhs(SgExpression &e)void setSymbol(SgSymbol &s)void setType(SgType &t)void setVariant(int v)SgExpression & copy()Returns a deep copy.char * unparse()void sunparse(char *buer)void unparsestdout()SgExpression * IsSymbolInExpression(SgSymbol &symbol)Returns the most nested expression containing a reference to symbol.void replaceSymbolByExpression(SgSymbol &symbol, SgExpression &expr)SgExpression * symbRefs()SgExpression * arrayRefs()Returns a list of array references in the expression.int linearRepresentation(int *coe, SgSymbol **symb,int *cst, int size)SgExpression * normalForm(int n, SgSymbol *s)Does a normal form simplify as a linear combination of the symbols in s.SgExpression * coecient(SgSymbol &s)Finds the multiplicative coecient of s in the expression.int isInteger()TRUE if the expression can be reduced to an integer value.int valueInteger()If isInteger() is true, returns the integer value the expression can be reduced to.73Chapter 4: Expressions74SgExpression UsageThe standard binary operators do not have explicit subclasses (or constructors).

However each ofthese operators has been overloaded as \friends" of the SgExpression class, so building expressionswith these operators is a very simple task. For example, to build an expression of the form(X+3)*Y+6.4the program only needs two symbols and two value expressions:SgVariableSymb xsymb("X"), ysymb("Y");SgVarRefExp x(xsymb), y(ysymb);SgValueExp three(3), fltvalue(6.4);SgExpression &e = (x + three)*y + fltvalue;The variables X and Y are rst created as symbols, then expressions that are references to thesymbols are created as SgVarRefExp objects.

Notice that we have not given types to the variablesX and Y and declarations for X and Y have not yet been generated.In this code, e is now a reference to the root (+) of the parse tree for the desired expression.Note that the constructors for the SgValueExp class allow any type of literal to be created.A few standard operators have not been overloaded because this would create confusion withstandard C++ operations. These include =, ==, !=, ->, and ::. They are constructed by thefunctionsSgExpression SgAssignOp( SgExpression &lhs, SgExpression &rhs);SgExpressionSgEqOp( SgExpression &lhs, SgExpression &rhs);SgExpression SgNeqOp( SgExpression &lhs, SgExpression &rhs);SgExpression SgPointStOp( SgExpression &lhs, SgExpression &rhs);SgExpression SgScopeOp( SgExpression &lhs, SgExpression &rhs);Therefore, to build a C assignment statement of the formX = (X+3)*Y+6.4using the denitions for variables X, Y, three and tvalue given above, we writeSgCExpStmt c_stmt(SgAssignOp(x.copy(), (x + three)*y + fltvalue));In the case of Fortran note that the assignment is a statement and not an expression.

To buildthe same statement in Fortran we writeSgAssignStmt fortran_stmt(x.copy(), (x + three)*y + fltvalue);The subclasses are all designed to provide handy constructors so that it is easy to build expressions and extract values.A function of the typeSgSUBCLASS * isSgSUBCLASS( SgBASECLASS *)Chapter 4: Expressions75is provided for each subclass of SgStatement, SgExpression and SgType. We feel that this mechanism is an eective way to use the strong typing of C++ to reduce errors.4.2 SgValueExpRepresents literals, for all languages.Variants:integers: INT VALcharacters: CHAR VALoating point numbers: FLOAT VALdouble precision oating point numbers: DOUBLE VALstrings: STRING VALcomplex numbers: COMPLEX VALFor usage:see [SgExpression Usage], page 74;see [SgSubscriptExp Usage], page 88.For base class, see Section 4.1 [SgExpression], page 70.class SgValueExp: public SgExpression {public:SgValueExp(int value);SgValueExp(char char_val);SgValueExp(float float_val);SgValueExp(double double_val);SgValueExp(char *string_val);SgValueExp(double real, double imaginary);SgValueExp(SgValueExp &real, SgValueExp &imaginary);voidsetValue(int int_val);voidsetValue(char char_val);voidsetValue(float float_val);voidsetValue(double double_val);voidsetValue(char *string_val);voidsetValue(double real, double im);voidsetValue(SgValueExp &real, SgValueExp & im);intintValue();char*floatValue();charcharValue();char*doubleValue();char *stringValue();SgExpression * realValue();SgExpression * imaginaryValue();Chapter 4: Expressions};SgValueExp is used in the following places in the example programs: see [Restructure - addStuToProgram], page 135 see [Instrument - InsertFCallNode], page 142 see [Dump Info - classifyExpressions], page 181Member Functions:SgValueExp(int value)SgValueExp(char char val)SgValueExp(oat oat val)SgValueExp(double double val)SgValueExp(char *string val)SgValueExp(double real, double imaginary)SgValueExp(SgValueExp &real, SgValueExp &imaginary)void setValue(int int val)void setValue(char char val)void setValue(oat oat val)void setValue(double double val)void setValue(char *string val)void setValue(double real, double im)void setValue(SgValueExp &real, SgValueExp & im)int intValue()char* oatValue()char charValue()char* doubleValue()char * stringValue()SgExpression * realValue()76Chapter 4: Expressions77SgExpression * imaginaryValue()4.3 SgFunctionCallExpRepresents function calls, for all languages.Variant: FUNC CALLFor base class, see Section 4.1 [SgExpression], page 70.class SgFunctionCallExp: public SgExpression {public:SgFunctionCallExp(PTR_LLND ll);SgFunctionCallExp(SgSymbol &fun, SgExpression ¶mList);SgFunctionCallExp(SgSymbol &fun);SgSymbol *funName();SgExpression * args();intnumberOfArgs();SgExpression * arg(int i);voidaddArg(SgExpression &arg);};SgFunctionCallExp is used in the following places in the example programs: see [Instrument - isReferenceToMethodOfElement], page 147 see [Instrument - isReferenceToClassOfElement], page 148 see [Instrument - isReferenceToCollection], page 150 see [Instrument - InsertCCallNode], page 155 see [Expand Syntax - ReplaceWithGetElemPart], page 163Member Functions:// function name(expr1, expr2, ....)SgFunctionCallExp(PTR LLND ll)SgFunctionCallExp(SgSymbol &fun, SgExpression ¶mList)SgFunctionCallExp(SgSymbol &fun)SgSymbol * funName()Chapter 4: ExpressionsSgExpression * args()int numberOfArgs()SgExpression * arg(int i)void addArg(SgExpression &arg)4.4 SgExprListExpRepresents lists of expressions, for all languages.Variant: EXPR LISTFor usage, see [SgSymbol Usage], page 108.For base class, see Section 4.1 [SgExpression], page 70.class SgExprListExp: public SgExpression {public:SgExprListExp(PTR_LLND ll);SgExprListExp();SgExprListExp(SgExpression &ptr);intlength();SgExpression * elem(int i);SgExprListExp * next();SgExpression * value();voidsetValue(SgExpression &ptr);voidappend(SgExpression &arg);voidlinkToEnd(SgExpression &arg);};SgExprListExp is used in the following places in the example programs: see [Instrument - VistaInstrument], page 145 see [Instrument - ListCollectionInvocations], page 153 see [Instrument - InsertCCallNode], page 155 see [Instrument - CTimingInstrumentSub], page 156 see [Expand Syntax - ExpandSyntax], page 162 see [Expand Syntax - ReplaceWithGetElemPart], page 16378Chapter 4: ExpressionsMember Functions:SgExprListExp(PTR LLND ll)SgExprListExp()SgExprListExp(SgExpression &ptr)int length()SgExpression * elem(int i)SgExprListExp * next()SgExpression * value()void setValue(SgExpression &ptr)void append(SgExpression &arg)void linkToEnd(SgExpression &arg)4.5 SgVarRefExpRepresents scalar variable references and non-indexed array references, for all languages.Variant: VAR REFFor usage:see [SgExpression Usage], page 74;see [SgSubscriptExp Usage], page 88.For base class, see Section 4.1 [SgExpression], page 70.class SgVarRefExp: public SgExpression {public:SgVarRefExp(PTR_LLND ll);SgVarRefExp(SgSymbol &s);SgExpression * progatedValue(); // if scalar propogation worked};SgVarRefExp is used in the following places in the example programs:79Chapter 4: Expressionsseeseeseeseeseeseeseesee80[Restructure - addStuToProgram], page 135[Instrument - isReferenceToMethodOfElement], page 147[Instrument - isReferenceToClassOfElement], page 148[Instrument - isReferenceToCollection], page 150[Expand Syntax - isReferenceToElementField], page 160[Expand Syntax - isArrayRefOfCollection], page 161[Expand Syntax - ReplaceWithGetElemPart], page 163[Expand Syntax - Init], page 166Member Functions:SgVarRefExp(PTR LLND ll)SgVarRefExp(SgSymbol &s)SgExpression * progatedValue()4.6 SgArrayRefExpRepresents array references, for all languages.Variant: ARRAY REFFor usage, see [SgSubscriptExp Usage], page 88.For base class, see Section 4.1 [SgExpression], page 70.class SgArrayRefExp: public SgExpression {public:SgArrayRefExp(PTR_LLND ll);SgArrayRefExp(SgSymbol &s);SgArrayRefExp(SgSymbol &s, SgExpression &subscripts);SgArrayRefExp(SgSymbol &s, SgExpression &sub1,SgExpression &sub2);SgArrayRefExp(SgSymbol &s, SgExpression &sub1,SgExpression &sub2, SgExpression &sub3);Chapter 4: Expressions81SgArrayRefExp(SgSymbol &s, SgExpression &sub1,SgExpression &sub2, SgExpression &sub3,SgExpression &sub4);intnumberOfSubscripts(); // the number of subscripts in referenceSgExpression * subscripts();SgExpression * subscript(int i);voidaddSubscript(SgExpression &e);voidsetSymbol(SgSymbol &s);};SgArrayRefExp is used in the following places in the example programs: see [Restructure - addStuToProgram], page 135 see [Instrument - isReferenceToCollection], page 150 see [Expand Syntax - isReferenceToElementField], page 160Member Functions:SgArrayRefExp(PTR LLND ll)SgArrayRefExp(SgSymbol &s)SgArrayRefExp(SgSymbol &s, SgExpression &subscripts)SgArrayRefExp(SgSymbol &s, SgExpression &sub1,SgExpression &sub2)SgArrayRefExp(SgSymbol &s, SgExpression &sub1,SgExpression &sub2,SgExpression &sub3)SgArrayRefExp(SgSymbol &s, SgExpression &sub1,SgExpression &sub2,SgExpression &sub3,SgExpression&sub4)int numberOfSubscripts()SgExpression * subscripts()SgExpression * subscript(int i)void addSubscript(SgExpression &e)void setSymbol(SgSymbol &s)Chapter 4: Expressions4.7 SgInitListExpRepresents initializations of the form {expr1,expr2,expr3}, for all languages.Variant: INIT LISTFor base class, see Section 4.1 [SgExpression], page 70.class SgInitListExp: public SgExpression {public:SgInitListExp(PTR_LLND ll);SgInitListExp(SgExpression &expr_list);SgInitListExp(int n, SgExpression *components);SgExpression * arg(int i); // the i-th termintnumberOfArgs();voidsetArg(int i, SgExpression &e);};Member Functions:SgInitListExp(PTR LLND ll)SgInitListExp(SgExpression &expr list)SgInitListExp(int n, SgExpression *components)SgExpression * arg(int i)int numberOfArgs()void setArg(int i, SgExpression &e)4.8 SgRecordRefExpRepresents C references of elds in structures.Variant: RECORD REFFor base class, see Section 4.1 [SgExpression], page 70.class SgRecordRefExp: public SgExpression {82Chapter 4: Expressionspublic:SgRecordRefExp(PTR_LLND ll);SgRecordRefExp(SgSymbol &recordName, char *fieldName);SgRecordRefExp(SgExpression &recordExp, char *fieldName);SgSymbol *fieldName();SgSymbol *recordName();SgExpression * record();};Member Functions:SgRecordRefExp(PTR LLND ll)SgRecordRefExp(SgSymbol &recordName, char *eldName)SgRecordRefExp(SgExpression &recordExp, char *eldName)SgSymbol * eldName()SgSymbol * recordName()SgExpression * record()4.9 SgPntrArrRefExpRepresents C pointers used as arrays.Variant: ARRAY OPFor base class, see Section 4.1 [SgExpression], page 70.class SgPntrArrRefExp: public SgExpression {83Chapter 4: Expressions84public:SgPntrArrRefExp(PTR_LLND ll);SgPntrArrRefExp(SgExpression &p);SgPntrArrRefExp(SgExpression &p, SgExpression &subscripts);SgPntrArrRefExp(SgExpression &p, int n, SgExpression &sub1,SgExpression &sub2);SgPntrArrRefExp(SgExpression &p, int n, SgExpression &sub1,SgExpression &sub2, SgExpression &sub3);SgPntrArrRefExp(SgExpression &p, int n, SgExpression &sub1,SgExpression &sub2, SgExpression &sub3,SgExpression &sub4);intdimension(); // the number of subscripts in referenceSgExpression * subscript(int i);voidaddSubscript(SgExpression &e);voidsetPointer(SgExpression &p);};Member Functions:SgPntrArrRefExp(PTR LLND ll)SgPntrArrRefExp(SgExpression &p)SgPntrArrRefExp(SgExpression &p, SgExpression &subscripts)SgPntrArrRefExp(SgExpression &p, int n, SgExpression &sub1, SgExpression &sub2)SgPntrArrRefExp(SgExpression &p, int n, SgExpression &sub1, SgExpression &sub2, SgExpression &sub3)SgPntrArrRefExp(SgExpression &p, int n, SgExpression &sub1, SgExpression &sub2, SgExpression &sub3, SgExpression &sub4)int dimension()SgExpression * subscript(int i)void addSubscript(SgExpression &e)void setPointer(SgExpression &p)4.10 SgPointerDerefExpRepresents C pointer dereferences.Chapter 4: ExpressionsVariant: DEREF OPFor base class, see Section 4.1 [SgExpression], page 70.class SgPointerDerefExp: public SgExpression {public:SgPointerDerefExp(PTR_LLND ll);SgPointerDerefExp(SgExpression &pointerExp);SgExpression * pointerExp();};Member Functions:SgPointerDerefExp(PTR LLND ll)SgPointerDerefExp(SgExpression &pointerExp)SgExpression * pointerExp()4.11 SgFuncPntrExpRepresents C uses of pointers to functions.Variant: FUNCTION OPFor base class, see Section 4.1 [SgExpression], page 70.class SgFuncPntrExp: public SgExpression {public:SgFuncPntrExp(PTR_LLND ll);SgFuncPntrExp(SgExpression &ptr);SgExpression * funExp();voidsetFunExp(SgExpression &s);intnumberOfArgs();SgExpression * arg(int i);voidaddArg(SgExpression &arg);};Member Functions:SgFuncPntrExp(PTR LLND ll)85Chapter 4: Expressions86SgFuncPntrExp(SgExpression &ptr)SgExpression * funExp()void setFunExp(SgExpression &s)int numberOfArgs()SgExpression * arg(int i)void addArg(SgExpression &arg)4.12 SgSubscriptExpRepresents C array references low:up:stride for extended C.Represents Fortran 90 array references low:up:stride.Variant: DDOTFor base class, see Section 4.1 [SgExpression], page 70.class SgSubscriptExp: public SgExpression {public:SgSubscriptExp(PTR_LLND ll);SgSubscriptExp(SgExpression &lbound, SgExpression &ubound,SgExpression &step);SgSubscriptExp(SgExpression &lbound, SgExpression &ubound);// perhaps this function can use LlndMappingSgExpression * lbound();SgExpression * ubound();SgExpression * step();};Member Functions:SgSubscriptExp(PTR LLND ll)SgSubscriptExp(SgExpression &lbound, SgExpression &ubound, SgExpression &step)SgSubscriptExp(SgExpression &lbound, SgExpression &ubound)SgExpression * lbound()SgExpression * ubound()Chapter 4: Expressions87SgExpression * step()4.13 SgSubscriptExpRepresents C array references low:up:stride for extended C.Represents Fortran 90 array references low:up:stride.Variant: DDOTFor base class, see Section 4.1 [SgExpression], page 70.class SgSubscriptExp: public SgExpression {public:SgSubscriptExp(PTR_LLND ll);SgSubscriptExp(SgExpression &lbound, SgExpression &ubound,SgExpression &step);SgSubscriptExp(SgExpression &lbound, SgExpression &ubound);// perhaps this function can use LlndMappingSgExpression * lbound();SgExpression * ubound();SgExpression * step();};Member Functions:SgSubscriptExp(PTR LLND ll)SgSubscriptExp(SgExpression &lbound, SgExpression &ubound, SgExpression &step)SgSubscriptExp(SgExpression &lbound, SgExpression &ubound)SgExpression * lbound()SgExpression * ubound()SgExpression * step()Chapter 4: Expressions88SgSubscriptExp UsageTo build a fortran 90 array reference X(1:100:3, i+3) or the \extended" C array referenceX[1:100:3][i+3] we can writeSgVariableSymb xsymb("X"), isymb("i");SgVarRefExp i(isymb);SgValueExp three(3), one(1), hunderd(100);SgSubscriptExp range(one, hundred, three);SgArrayRefExp(xsymb, range, i+three.copy());4.14 SgUnaryExpRepresents unary expressions, for all languages.The expressions represented, and their variants, are:*expr DEREF OP&expr ADDRESS OPsizeof(expr) SIZE OP-expr MINUS OP+expr UNARY ADD OP++ (on left) PLUSPLUS OP++ (on right) PLUSPLUS OP{ (on left) MINUSMINUS OP{ (on right) MINUSMINUS OP~expr BIT COMPLEMENT OP!expr NOT OP(? Do any of these apply to Fortran?)For base class, see Section 4.1 [SgExpression], page 70.class SgUnaryExp: public SgExpression {public:SgUnaryExp(PTR_LLND ll);SgUnaryExp(int variant, SgExpression & e);SgUnaryExp(int variant, int post, SgExpression & e);intpost();SgExpression & operand();};Member Functions:Chapter 4: ExpressionsSgUnaryExp(PTR LLND ll)SgUnaryExp(int variant, SgExpression & e)SgUnaryExp(int variant, int post, SgExpression & e)int post()SgExpression & operand()4.15 SgCastExpRepresents C casts.Variant: CAST OPFor base class, see Section 4.1 [SgExpression], page 70.class SgCastExp: public SgExpression {public:SgCastExp(PTR_LLND ll);SgCastExp(SgType &t, SgExpression &e);SgCastExp(SgType &t);};Member Functions:SgCastExp(PTR LLND ll)SgCastExp(SgType &t, SgExpression &e)SgCastExp(SgType &t)4.16 SgExprIfExpRepresents C conditional expression operator ?:.Variant: EXPR IF89Chapter 4: ExpressionsFor base class, see Section 4.1 [SgExpression], page 70.class SgExprIfExp: public SgExpression {public:SgExprIfExp(PTR_LLND ll);SgExprIfExp(SgExpression &exp1, SgExpression &exp2,SgExpression &exp3);SgExpression & conditional();SgExpression & trueExp();SgExpression & falseExp();voidsetConditional(SgExpression &c);voidsetTrueExp(SgExpression &t);voidsetFalseExp(SgExpression &f);};Member Functions:SgExprIfExp(PTR LLND ll)SgExprIfExp(SgExpression &exp1,SgExpression &exp2, SgExpression &exp3)SgExpression & conditional()SgExpression & trueExp()SgExpression & falseExp()void setConditional(SgExpression &c)void setTrueExp(SgExpression &t)void setFalseExp(SgExpression &f)4.17 SgDeleteExpRepresents C++ delete.Variant: DELETE OPFor base class, see Section 4.1 [SgExpression], page 70.class SgDeleteExp: public SgExpression {90Chapter 4: Expressionspublic:SgDeleteExp(PTR_LLND ll);SgDeleteExp(SgExpression &size, SgExpression &expr);SgDeleteExp(SgExpression &expr);};Member Functions:SgDeleteExp(PTR LLND ll)SgDeleteExp(SgExpression &size, SgExpression &expr)SgDeleteExp(SgExpression &expr)4.18 SgNewExpRepresents C++ new.Variant: NEW OP.For base class, see Section 4.1 [SgExpression], page 70.class SgNewExp: public SgExpression {public:SgNewExp(PTR_LLND ll);SgNewExp(SgType &t);SgNewExp(SgType &t, SgExpression &e);#if 0SgExpression & numberOfArgs();SgExpression & argument(int i);#endif};Member Functions:SgNewExp(PTR LLND ll)SgNewExp(SgType &t)SgNewExp(SgType &t, SgExpression &e)SgExpression & numberOfArgs()91Chapter 4: ExpressionsSgExpression & argument(int i)4.19 SgThisExpRepresents C++ this.Variant: THIS NODEFor base class, see Section 4.1 [SgExpression], page 70.class SgThisExp: public SgExpression {public:SgThisExp(PTR_LLND ll);SgThisExp(SgType &t);};Member Functions:SgThisExp(PTR LLND ll)SgThisExp(SgType &t)4.20 SgKeywordValExpRepresents Fortran keyword values in I/O statements etc..Variant is KEYWORD VAL.For base class, see Section 4.1 [SgExpression], page 70.class SgKeywordValExp: public SgExpression {public:SgKeywordValExp(char *name);char * value();};92Chapter 4: ExpressionsMember Functions:SgKeywordValExp(char *name)char * value()4.21 SgRefExpRepresents Fortran const references, type references, and interface references.Variants: CONST REF, TYPE REF, INTERFACE REFFor base class, see Section 4.1 [SgExpression], page 70.class SgRefExp: public SgExpression {public:SgRefExp(PTR_LLND ll);SgRefExp(int variant, SgSymbol &s);};Member Functions:SgRefExp(PTR LLND ll)SgRefExp(int variant, SgSymbol &s)4.22 SgVecConstExpRepresents Fortran vector constants [expr1,expr2,expr3].Variant: VECTOR CONSTFor base class, see Section 4.1 [SgExpression], page 70.class SgVecConstExp: public SgExpression {93Chapter 4: Expressionspublic:94SgVecConstExp(PTR_LLND ll);SgVecConstExp(SgExpression &expr_list);SgVecConstExp(int n, SgExpression *components);SgExpression * arg(int i); // the i-th termintnumberOfArgs();voidsetArg(int i, SgExpression &e);};Member Functions:SgVecConstExp(PTR LLND ll)SgVecConstExp(SgExpression &expr list)SgVecConstExp(int n, SgExpression *components)SgExpression * arg(int i)int numberOfArgs()void setArg(int i, SgExpression &e)4.23 SgObjectListExpRepresents Fortran equivalence, namelist, and common.Variants: EQUI LIST, NAMELIST LIST, COMM LISTFor base class, see Section 4.1 [SgExpression], page 70.class SgObjectListExp: public SgExpression {public:SgObjectListExp(PTR_LLND ll);SgObjectListExp(int variant, SgSymbol &object,SgExpression &list);SgObjectListExp(int variant, SgExpression &objectRef,SgExpression &list);SgSymbol *object();SgExpression * objectRef();intlistLength();SgSymbol *symbol(int i);//i'th symbolSgExpression * objectRef(int i); //i'th symbolChapter 4: Expressions};Member Functions:SgObjectListExp(PTR LLND ll)SgObjectListExp(int variant, SgSymbol &object, SgExpression &list)SgObjectListExp(int variant,SgExpression &objectRef, SgExpression &list)SgSymbol * object()SgExpression * objectRef()int listLength()SgSymbol * symbol(int i)SgExpression * objectRef(int i)4.24 SgSpecPairExpRepresents Fortran default control arguments to i/o statements.Variant: SPEC PAIRFor base class, see Section 4.1 [SgExpression], page 70.class SgSpecPairExp: public SgExpression {public:SgSpecPairExp(PTR_LLND ll);SgSpecPairExp(SgExpression &arg, SgExpression &value);SgSpecPairExp(SgExpression &arg);SgSpecPairExp(char *arg, char *value);SgExpression * arg();SgExpression * value();};Member Functions:SgSpecPairExp(PTR LLND ll)95Chapter 4: Expressions96SgSpecPairExp(SgExpression &arg, SgExpression &value)SgSpecPairExp(SgExpression &arg)SgSpecPairExp(char *arg, char *value)SgExpression * arg()SgExpression * value()4.25 SgIOAccessExpRepresents Fortran index variable bound instantiations and do loop range representation.Variant: IOACCESSFor base class, see Section 4.1 [SgExpression], page 70.class SgIOAccessExp: public SgExpression {public:SgIOAccessExp(PTR_LLND ll);SgIOAccessExp(SgSymbol &s, SgExpression lbound, SgExpression ubound,SgExpression step);SgIOAccessExp(SgSymbol &s, SgExpression lbound, SgExpression ubound);};Member Functions:SgIOAccessExp(PTR LLND ll)SgIOAccessExp(SgSymbol &s, SgExpression lbound, SgExpression ubound, SgExpression step)SgIOAccessExp(SgSymbol &s, SgExpression lbound, SgExpression ubound)Chapter 4: Expressions4.26 SgImplicitTypeExpRepresents Fortran index variable bound instantiations.Variant: IMPL TYPEFor base class, see Section 4.1 [SgExpression], page 70.class SgImplicitTypeExp: public SgExpression {public:SgImplicitTypeExp(PTR_LLND ll);SgImplicitTypeExp(SgType &type, SgExpression &rangeList);SgType *type();SgExpression * rangeList();char *alphabeticRange();};Member Functions:SgImplicitTypeExp(PTR LLND ll)SgImplicitTypeExp(SgType &type, SgExpression &rangeList)SgType * type()SgExpression * rangeList()char * alphabeticRange()4.27 SgTypeExpRepresents Fortran type expressions.Variant: TYPE OPFor base class, see Section 4.1 [SgExpression], page 70.class SgTypeExp: public SgExpression {public:SgTypeExp(PTR_LLND ll);SgTypeExp(SgType &type);SgType * type();97Chapter 4: Expressions};Member Functions:SgTypeExp(PTR LLND ll)SgTypeExp(SgType &type)SgType * type()4.28 SgSeqExpRepresents Fortran seq expressions.Variant: SEQ(? What is this?)For base class, see Section 4.1 [SgExpression], page 70.class SgSeqExp: public SgExpression {public:SgSeqExp(PTR_LLND ll);SgSeqExp(SgExpression &exp1, SgExpression &exp2);SgExpression * front();SgExpression * rear();};Member Functions:SgSeqExp(PTR LLND ll)SgSeqExp(SgExpression &exp1, SgExpression &exp2)SgExpression * front()SgExpression * rear()98Chapter 4: Expressions4.29 SgStringLengthExpRepresents Fortran string length expressions.Variant: LEN OPFor base class, see Section 4.1 [SgExpression], page 70.class SgStringLengthExp: public SgExpression {public:SgStringLengthExp(PTR_LLND ll);SgStringLengthExp(SgExpression &length);SgExpression * length();};Member Functions:SgStringLengthExp(PTR LLND ll)SgStringLengthExp(SgExpression &length)SgExpression * length()4.30 SgDefaultExpRepresents Fortran default.Variant: DEFAULTFor base class, see Section 4.1 [SgExpression], page 70.class SgDefaultExp: public SgExpression {public:SgDefaultExp(PTR_LLND ll);SgDefaultExp();};Member Functions:SgDefaultExp(PTR LLND ll)99Chapter 4: ExpressionsSgDefaultExp()4.31 SgLabelRefExpRepresents Fortran label references.Variant: LABEL REFFor base class, see Section 4.1 [SgExpression], page 70.class SgLabelRefExp: public SgExpression {public:SgLabelRefExp(PTR_LLND ll);SgLabelRefExp(SgLabel &label);SgLabel * label();};Member Functions:SgLabelRefExp(PTR LLND ll)SgLabelRefExp(SgLabel &label)SgLabel * label()4.32 SgConstExpRepresents Fortran 90 array constructors.Variant: CONSTRUCTOR REFFor base class, see Section 4.1 [SgExpression], page 70.class SgConstExp: public SgExpression {public:SgConstExp(PTR_LLND ll);SgConstExp(SgExpression &values);intnumberOfArgs();SgExpression * arg(int i);100Chapter 4: Expressions101};Member Functions:SgConstExp(PTR LLND ll)SgConstExp(SgExpression &values)int numberOfArgs()SgExpression * arg(int i)4.33 SgStructConstExpRepresents Fortran 90 structure constructors.Variant: STRUCTURE CONSTRUCTORFor base class, see Section 4.1 [SgExpression], page 70.class SgStructConstExp: public SgExpression {public:SgStructConstExp(PTR_LLND ll);// further checks on values need to be done.SgStructConstExp(SgSymbol &structName, SgExpression &values);SgStructConstExp(SgExpression &typeRef, SgExpression &values);intnumberOfArgs();SgExpression * arg(int i);};Member Functions:SgStructConstExp(PTR LLND ll)SgStructConstExp(SgSymbol &structName, SgExpression &values)SgStructConstExp(SgExpression &typeRef, SgExpression &values)int numberOfArgs()SgExpression * arg(int i)Chapter 4: Expressions1024.34 SgAttributeExpRepresents Fortran 90 attributes.Variants: PARAMETER OP, PUBLIC OP, PRIVATE OP, ALLOCATABLE OP, DIMENSION OP,EXTERNAL OP, IN OP, OUT OP, INOUT OP, INTRINSIC OP, POINTER OP, OPTIONAL OP,SAVE OP, TARGET OPFor base class, see Section 4.1 [SgExpression], page 70.class SgAttributeExp: public SgExpression {public:SgAttributeExp(PTR_LLND ll);SgAttributeExp(int variant);};Member Functions:SgAttributeExp(PTR LLND ll)SgAttributeExp(int variant)4.35 SgKeywordArgExpRepresents Fortran 90 keyword arguments.Variant: KEYWORD ARGFor base class, see Section 4.1 [SgExpression], page 70.class SgKeywordArgExp: public SgExpression {public:SgKeywordArgExp(PTR_LLND ll);SgKeywordArgExp(char *argName, SgExpression &exp);SgSymbol *arg();SgExpression * value();};Member Functions:Chapter 4: ExpressionsSgKeywordArgExp(PTR LLND ll)SgKeywordArgExp(char *argName, SgExpression &exp)SgSymbol * arg()SgExpression * value()4.36 SgUseOnlyExpRepresents Fortran 90 ONLY attribute of USE statements.Variant: ONLY NODEFor base class, see Section 4.1 [SgExpression], page 70.class SgUseOnlyExp: public SgExpression {public:SgUseOnlyExp(PTR_LLND ll);SgUseOnlyExp(SgExpression &onlyList);SgExpression * onlyList();};Member Functions:SgUseOnlyExp(PTR LLND ll)SgUseOnlyExp(SgExpression &onlyList)SgExpression * onlyList()4.37 SgUseRenameExpRepresents Fortran 90 USE statement renamings.Variant: RENAME NODEFor base class, see Section 4.1 [SgExpression], page 70.103Chapter 4: Expressionsclass SgUseRenameExp: public SgExpression {public:SgUseRenameExp(PTR_LLND ll);SgUseRenameExp(SgSymbol &newName, SgSymbol &oldName);SgSymbol *newName();SgSymbol *oldName();SgExpression * newNameExp();SgExpression * oldNameExp();};Member Functions:SgUseRenameExp(PTR LLND ll)SgUseRenameExp(SgSymbol &newName, SgSymbol &oldName)SgSymbol * newName()SgSymbol * oldName()SgExpression * newNameExp()SgExpression * oldNameExp()104Chapter 5: Symbols1055 Symbols5.1 SgSymbolSgSymbol is the base class for the classes representing symbols.

Характеристики

Список файлов учебной работы

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6529
Авторов
на СтудИзбе
301
Средний доход
с одного платного файла
Обучение Подробнее