Ignore:
Timestamp:
Apr 11, 2023, 12:48:03 PM (18 months ago)
Author:
Andrew Beach <ajbeach@…>
Branches:
ADT, ast-experimental, master
Children:
5541a44e
Parents:
9921573
Message:

Clean-up in parser. ClauseNode? rework, plus internal adjustments to reduce extra code and unchecked casts.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/ExpressionNode.h

    r9921573 r6611177  
    4141        bool isExpressionType() const {  return nullptr != dynamic_cast<T>(expr.get()); }
    4242
    43         ast::Expr * build() const {
    44                 ast::Expr * node = const_cast<ExpressionNode *>(this)->expr.release();
     43        ast::Expr * build() {
     44                ast::Expr * node = expr.release();
    4545                node->set_extension( this->get_extension() );
    4646                node->location = this->location;
     
    5353        bool extension = false;
    5454}; // ExpressionNode
    55 
    56 /*
    57 // Must harmonize with OperName.
    58 enum class OperKinds {
    59     // diadic
    60     SizeOf, AlignOf, OffsetOf, Plus, Minus, Exp, Mul, Div, Mod, Or, And,
    61     BitOr, BitAnd, Xor, Cast, LShift, RShift, LThan, GThan, LEThan, GEThan, Eq, Neq,
    62     Assign, AtAssn, ExpAssn, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn,
    63     Index, Range,
    64     // monadic
    65     UnPlus, UnMinus, AddressOf, PointTo, Neg, BitNeg, Incr, IncrPost, Decr, DecrPost,
    66     Ctor, Dtor,
    67 }; // OperKinds
    68 
    69 enum class EnumHiding { Visible, Hide };
    70 
    71 struct LabelNode {
    72     std::vector<ast::Label> labels;
    73 };
    74 */
    7555
    7656// These 4 routines modify the string:
     
    9979ast::Expr * build_unary_val( const CodeLocation &, OperKinds op, ExpressionNode * expr_node );
    10080ast::Expr * build_binary_val( const CodeLocation &, OperKinds op, ExpressionNode * expr_node1, ExpressionNode * expr_node2 );
    101 ast::Expr * build_binary_ptr( const CodeLocation &, OperKinds op, ExpressionNode * expr_node1, ExpressionNode * expr_node2 );
    10281ast::Expr * build_cond( const CodeLocation &, ExpressionNode * expr_node1, ExpressionNode * expr_node2, ExpressionNode * expr_node3 );
    10382ast::Expr * build_tuple( const CodeLocation &, ExpressionNode * expr_node = nullptr );
Note: See TracChangeset for help on using the changeset viewer.