Changes in src/Parser/ExpressionNode.cc [6165ce7:ac10576]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/ExpressionNode.cc
r6165ce7 rac10576 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:17:07 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : T hu Jul 27 12:10:10 201713 // Update Count : 55 611 // Last Modified By : Andrew Beach 12 // Last Modified On : Tus Jul 18 10:08:00 2017 13 // Update Count : 550 14 14 // 15 15 … … 62 62 bool dec = true, Unsigned = false; // decimal, unsigned constant 63 63 int size; // 0 => int, 1 => long, 2 => long long 64 unsigned long long int v; // converted integral value64 unsigned long long int v; // converted integral value 65 65 size_t last = str.length() - 1; // last character of constant 66 Expression * ret; 67 68 // special constants 69 if ( str == "0" ) { 70 ret = new ConstantExpr( Constant( (Type *)new ZeroType( noQualifiers ), str, (unsigned long long int)0 ) ); 71 goto CLEANUP; 72 } // if 73 if ( str == "1" ) { 74 ret = new ConstantExpr( Constant( (Type *)new OneType( noQualifiers ), str, (unsigned long long int)1 ) ); 75 goto CLEANUP; 76 } // if 77 66 78 67 if ( str[0] == '0' ) { // octal/hex constant ? 79 68 dec = false; … … 129 118 } // if 130 119 131 ret = new ConstantExpr( Constant( new BasicType( noQualifiers, kind[Unsigned][size] ), str, v ) ); 132 CLEANUP: 120 Expression * ret = new ConstantExpr( Constant( new BasicType( noQualifiers, kind[Unsigned][size] ), str, v ) ); 133 121 delete &str; // created by lex 134 122 return ret; … … 186 174 return ret; 187 175 } // build_constantStr 176 177 Expression *build_constantZeroOne( const std::string & str ) { 178 Expression * ret = new ConstantExpr( Constant( str == "0" ? (Type *)new ZeroType( noQualifiers ) : (Type*)new OneType( noQualifiers ), str, 179 str == "0" ? (unsigned long long int)0 : (unsigned long long int)1 ) ); 180 delete &str; // created by lex 181 return ret; 182 } // build_constantChar 188 183 189 184 Expression * build_field_name_FLOATINGconstant( const std::string & str ) { … … 257 252 } 258 253 259 260 Expression *build_virtual_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {261 Type *targetType = maybeMoveBuildType( decl_node );262 Expression *castArg = maybeMoveBuild< Expression >( expr_node );263 return new VirtualCastExpr( castArg, targetType );264 }265 266 254 Expression *build_fieldSel( ExpressionNode *expr_node, Expression *member ) { 267 255 UntypedMemberExpr *ret = new UntypedMemberExpr( member, maybeMoveBuild< Expression >(expr_node) );
Note:
See TracChangeset
for help on using the changeset viewer.