Changeset e5f2a67


Ignore:
Timestamp:
Jul 15, 2017, 7:34:05 PM (7 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
dc2b4d6
Parents:
478b1d0
Message:

second attempt add exponential operator

Location:
src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/OperatorTable.cc

    r478b1d0 re5f2a67  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 13 14:33:05 2016
    13 // Update Count     : 10
     12// Last Modified On : Sat Jul 15 17:12:22 2017
     13// Update Count     : 15
    1414//
    1515
     
    3535                        {       "++?",          "++",   "_operator_preincr",                    OT_PREFIXASSIGN         },
    3636                        {       "--?",          "--",   "_operator_predecr",                    OT_PREFIXASSIGN         },
     37                        {       "?\\?",         "\\",   "_operator_exponential",                OT_INFIX                        },
    3738                        {       "?*?",          "*",    "_operator_multiply",                   OT_INFIX                        },
    3839                        {       "?/?",          "/",    "_operator_divide",                             OT_INFIX                        },
     
    5253                        {       "?|?",          "|",    "_operator_bitor",                              OT_INFIX                        },
    5354                        {       "?=?",          "=",    "_operator_assign",                             OT_INFIXASSIGN          },
     55                        {       "?\\=?",        "\\=",  "_operator_expassign",                  OT_INFIXASSIGN          },
    5456                        {       "?*=?",         "*=",   "_operator_multassign",                 OT_INFIXASSIGN          },
    5557                        {       "?/=?",         "/=",   "_operator_divassign",                  OT_INFIXASSIGN          },
  • src/Parser/ExpressionNode.cc

    r478b1d0 re5f2a67  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun 28 21:08:15 2017
    13 // Update Count     : 542
     12// Last Modified On : Sat Jul 15 16:09:04 2017
     13// Update Count     : 549
    1414//
    1515
     
    231231}
    232232
     233// Must harmonize with OperKinds.
    233234static const char *OperName[] = {
    234235        // diadic
    235         "SizeOf", "AlignOf", "OffsetOf", "?+?", "?-?", "?*?", "?/?", "?%?", "||", "&&",
     236        "SizeOf", "AlignOf", "OffsetOf", "?+?", "?-?", "?\\?", "?*?", "?/?", "?%?", "||", "&&",
    236237        "?|?", "?&?", "?^?", "Cast", "?<<?", "?>>?", "?<?", "?>?", "?<=?", "?>=?", "?==?", "?!=?",
    237         "?=?", "?@=?", "?*=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?",
     238        "?=?", "?@=?", "?\\=?", "?*=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?",
    238239        "?[?]", "...",
    239240        // monadic
  • src/Parser/ParseNode.h

    r478b1d0 re5f2a67  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:28:16 2015
    11 // Last Modified By : Andrew Beach
    12 // Last Modified On : Fri Jul 14 16:56:00 2017
    13 // Update Count     : 780
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Jul 15 16:00:48 2017
     13// Update Count     : 785
    1414//
    1515
     
    141141};
    142142
     143// Must harmonize with OperName.
    143144enum class OperKinds {
    144145        // diadic
    145         SizeOf, AlignOf, OffsetOf, Plus, Minus, Mul, Div, Mod, Or, And,
     146        SizeOf, AlignOf, OffsetOf, Plus, Minus, Exp, Mul, Div, Mod, Or, And,
    146147        BitOr, BitAnd, Xor, Cast, LShift, RShift, LThan, GThan, LEThan, GEThan, Eq, Neq,
    147         Assign, AtAssn, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn,
     148        Assign, AtAssn, ExpAssn, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn,
    148149        Index, Range,
    149150        // monadic
  • src/Parser/lex.ll

    r478b1d0 re5f2a67  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Sat Jul 15 08:31:47 2017
    13  * Update Count     : 541
     12 * Last Modified On : Sat Jul 15 15:46:34 2017
     13 * Update Count     : 542
    1414 */
    1515
     
    337337"-"                             { ASCIIOP_RETURN(); }
    338338"*"                             { ASCIIOP_RETURN(); }
     339"\\"                    { ASCIIOP_RETURN(); }                                   // CFA, exponentiation
    339340"/"                             { ASCIIOP_RETURN(); }
    340341"%"                             { ASCIIOP_RETURN(); }
    341 "\\"                    { ASCIIOP_RETURN(); }                                   // CFA, exponentiation
    342342"^"                             { ASCIIOP_RETURN(); }
    343343"~"                             { ASCIIOP_RETURN(); }
     
    362362"+="                    { NAMEDOP_RETURN(PLUSassign); }
    363363"-="                    { NAMEDOP_RETURN(MINUSassign); }
     364"\\="                   { NAMEDOP_RETURN(EXPassign); }                  // CFA, exponentiation
    364365"*="                    { NAMEDOP_RETURN(MULTassign); }
    365366"/="                    { NAMEDOP_RETURN(DIVassign); }
    366367"%="                    { NAMEDOP_RETURN(MODassign); }
    367 "\\="                   { NAMEDOP_RETURN(MODassign); }                  // CFA, exponentiation
    368368"&="                    { NAMEDOP_RETURN(ANDassign); }
    369369"|="                    { NAMEDOP_RETURN(ORassign); }
  • src/Parser/parser.yy

    r478b1d0 re5f2a67  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul 15 09:46:26 2017
    13 // Update Count     : 2451
     12// Last Modified On : Sat Jul 15 15:59:50 2017
     13// Update Count     : 2454
    1414//
    1515
     
    151151%token ELLIPSIS                                                                                 // ...
    152152
    153 %token MULTassign       DIVassign       MODassign                               // *=   /=      %=/
     153%token EXPassign        MULTassign      DIVassign       MODassign       // \=   *=      /=      %=
    154154%token PLUSassign       MINUSassign                                                     // +=   -=
    155155%token LSassign         RSassign                                                        // <<=  >>=
     
    577577        cast_expression
    578578        | exponential_expression '\\' cast_expression
    579                 { $$ = new ExpressionNode( build_binary_val( OperKinds::Mod, $1, $3 ) ); }
     579                { $$ = new ExpressionNode( build_binary_val( OperKinds::Exp, $1, $3 ) ); }
    580580        ;
    581581
     
    685685        '='                                                                                     { $$ = OperKinds::Assign; }
    686686        | ATassign                                                                      { $$ = OperKinds::AtAssn; }
     687        | EXPassign                                                                     { $$ = OperKinds::ExpAssn; }
    687688        | MULTassign                                                            { $$ = OperKinds::MulAssn; }
    688689        | DIVassign                                                                     { $$ = OperKinds::DivAssn; }
Note: See TracChangeset for help on using the changeset viewer.