summaryrefslogtreecommitdiffstats
path: root/staptree.h
diff options
context:
space:
mode:
Diffstat (limited to 'staptree.h')
-rw-r--r--staptree.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/staptree.h b/staptree.h
index 80bffa7e..a95d9f05 100644
--- a/staptree.h
+++ b/staptree.h
@@ -32,6 +32,7 @@ struct expression
virtual ~expression ();
virtual void resolve_symbols (symresolution_info& r) = 0;
virtual void resolve_types (typeresolution_info& r, exp_type t) = 0;
+ virtual bool is_lvalue () = 0;
};
ostream& operator << (ostream& o, expression& k);
@@ -41,6 +42,7 @@ struct literal: public expression
{
void resolve_symbols (symresolution_info& r);
void resolve_types (typeresolution_info& r, exp_type t);
+ bool is_lvalue () { return false; }
};
@@ -68,6 +70,7 @@ struct binary_expression: public expression
void print (ostream& o);
void resolve_symbols (symresolution_info& r);
void resolve_types (typeresolution_info& r, exp_type t);
+ bool is_lvalue () { return false; }
};
@@ -78,16 +81,19 @@ struct unary_expression: public expression
void print (ostream& o);
void resolve_symbols (symresolution_info& r);
void resolve_types (typeresolution_info& r, exp_type t);
+ bool is_lvalue () { return false; }
};
struct pre_crement: public unary_expression
{
+ bool is_lvalue ();
};
struct post_crement: public unary_expression
{
+ bool is_lvalue ();
void print (ostream& o);
};
@@ -130,11 +136,13 @@ struct ternary_expression: public expression
void print (ostream& o);
void resolve_symbols (symresolution_info& r);
void resolve_types (typeresolution_info& r, exp_type t);
+ bool is_lvalue () { return false; }
};
struct assignment: public binary_expression
{
+ bool is_lvalue ();
};
@@ -147,6 +155,7 @@ struct symbol: public expression
void print (ostream& o);
void resolve_symbols (symresolution_info& r);
void resolve_types (typeresolution_info& r, exp_type t);
+ bool is_lvalue () { return true; }
};
@@ -159,10 +168,10 @@ struct arrayindex: public expression
void print (ostream& o);
void resolve_symbols (symresolution_info& r);
void resolve_types (typeresolution_info& r, exp_type t);
+ bool is_lvalue () { return true; }
};
-
class functiondecl;
struct functioncall: public expression
{
@@ -173,6 +182,7 @@ struct functioncall: public expression
void print (ostream& o);
void resolve_symbols (symresolution_info& r);
void resolve_types (typeresolution_info& r, exp_type t);
+ bool is_lvalue () { return false; }
};