mirror of
https://github.com/cc65/cc65.git
synced 2024-07-03 06:29:36 +00:00
Renamed struct expent
git-svn-id: svn://svn.cc65.org/cc65/trunk@805 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
cbdc651884
commit
cc83744882
|
@ -228,7 +228,7 @@ static void ParseEnumDecl (void)
|
||||||
|
|
||||||
/* Check for an assigned value */
|
/* Check for an assigned value */
|
||||||
if (CurTok.Tok == TOK_ASSIGN) {
|
if (CurTok.Tok == TOK_ASSIGN) {
|
||||||
struct expent lval;
|
ExprDesc lval;
|
||||||
NextToken ();
|
NextToken ();
|
||||||
constexpr (&lval);
|
constexpr (&lval);
|
||||||
EnumVal = lval.e_const;
|
EnumVal = lval.e_const;
|
||||||
|
@ -857,7 +857,7 @@ static void Decl (Declaration* D, unsigned Mode)
|
||||||
NextToken ();
|
NextToken ();
|
||||||
/* Read the size if it is given */
|
/* Read the size if it is given */
|
||||||
if (CurTok.Tok != TOK_RBRACK) {
|
if (CurTok.Tok != TOK_RBRACK) {
|
||||||
struct expent lval;
|
ExprDesc lval;
|
||||||
constexpr (&lval);
|
constexpr (&lval);
|
||||||
Size = lval.e_const;
|
Size = lval.e_const;
|
||||||
}
|
}
|
||||||
|
@ -955,7 +955,7 @@ void CheckEmptyDecl (const DeclSpec* D)
|
||||||
static void ParseVoidInit (void)
|
static void ParseVoidInit (void)
|
||||||
/* Parse an initialization of a void variable (special cc65 extension) */
|
/* Parse an initialization of a void variable (special cc65 extension) */
|
||||||
{
|
{
|
||||||
struct expent lval;
|
ExprDesc lval;
|
||||||
|
|
||||||
/* Allow an arbitrary list of values */
|
/* Allow an arbitrary list of values */
|
||||||
ConsumeLCurly ();
|
ConsumeLCurly ();
|
||||||
|
@ -1059,7 +1059,7 @@ static void ParseStructInit (type* Type)
|
||||||
void ParseInit (type* T)
|
void ParseInit (type* T)
|
||||||
/* Parse initialization of variables. */
|
/* Parse initialization of variables. */
|
||||||
{
|
{
|
||||||
struct expent lval;
|
ExprDesc lval;
|
||||||
type* t;
|
type* t;
|
||||||
const char* str;
|
const char* str;
|
||||||
int Count;
|
int Count;
|
||||||
|
|
124
src/cc65/expr.c
124
src/cc65/expr.c
|
@ -85,7 +85,7 @@ static GenDesc GenOASGN = { TOK_OR_ASSIGN, GEN_NOPUSH, g_or };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hie10 (struct expent* lval);
|
static int hie10 (ExprDesc* lval);
|
||||||
/* Handle ++, --, !, unary - etc. */
|
/* Handle ++, --, !, unary - etc. */
|
||||||
|
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ static unsigned GlobalModeFlags (unsigned flags)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int IsNullPtr (struct expent* lval)
|
static int IsNullPtr (ExprDesc* lval)
|
||||||
/* Return true if this is the NULL pointer constant */
|
/* Return true if this is the NULL pointer constant */
|
||||||
{
|
{
|
||||||
return (IsClassInt (lval->e_tptr) && /* Is it an int? */
|
return (IsClassInt (lval->e_tptr) && /* Is it an int? */
|
||||||
|
@ -149,7 +149,7 @@ static type* promoteint (type* lhst, type* rhst)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static unsigned typeadjust (struct expent* lhs, struct expent* rhs, int NoPush)
|
static unsigned typeadjust (ExprDesc* lhs, ExprDesc* rhs, int NoPush)
|
||||||
/* Adjust the two values for a binary operation. lhs is expected on stack or
|
/* Adjust the two values for a binary operation. lhs is expected on stack or
|
||||||
* to be constant, rhs is expected to be in the primary register or constant.
|
* to be constant, rhs is expected to be in the primary register or constant.
|
||||||
* The function will put the type of the result into lhs and return the
|
* The function will put the type of the result into lhs and return the
|
||||||
|
@ -190,7 +190,7 @@ static unsigned typeadjust (struct expent* lhs, struct expent* rhs, int NoPush)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
unsigned assignadjust (type* lhst, struct expent* rhs)
|
unsigned assignadjust (type* lhst, ExprDesc* rhs)
|
||||||
/* Adjust the type of the right hand expression so that it can be assigned to
|
/* Adjust the type of the right hand expression so that it can be assigned to
|
||||||
* the type on the left hand side. This function is used for assignment and
|
* the type on the left hand side. This function is used for assignment and
|
||||||
* for converting parameters in a function call. It returns the code generator
|
* for converting parameters in a function call. It returns the code generator
|
||||||
|
@ -280,7 +280,7 @@ unsigned assignadjust (type* lhst, struct expent* rhs)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void DefineData (struct expent* lval)
|
void DefineData (ExprDesc* lval)
|
||||||
/* Output a data definition for the given expression */
|
/* Output a data definition for the given expression */
|
||||||
{
|
{
|
||||||
unsigned flags = lval->e_flags;
|
unsigned flags = lval->e_flags;
|
||||||
|
@ -319,7 +319,7 @@ void DefineData (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void lconst (unsigned flags, struct expent* lval)
|
static void lconst (unsigned flags, ExprDesc* lval)
|
||||||
/* Load primary reg with some constant value. */
|
/* Load primary reg with some constant value. */
|
||||||
{
|
{
|
||||||
switch (lval->e_flags & E_MCTYPE) {
|
switch (lval->e_flags & E_MCTYPE) {
|
||||||
|
@ -441,7 +441,7 @@ static int istypeexpr (void)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void PushAddr (struct expent* lval)
|
static void PushAddr (ExprDesc* lval)
|
||||||
/* If the expression contains an address that was somehow evaluated,
|
/* If the expression contains an address that was somehow evaluated,
|
||||||
* push this address on the stack. This is a helper function for all
|
* push this address on the stack. This is a helper function for all
|
||||||
* sorts of implicit or explicit assignment functions where the lvalue
|
* sorts of implicit or explicit assignment functions where the lvalue
|
||||||
|
@ -463,7 +463,7 @@ static void PushAddr (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void exprhs (unsigned flags, int k, struct expent *lval)
|
void exprhs (unsigned flags, int k, ExprDesc *lval)
|
||||||
/* Put the result of an expression into the primary register */
|
/* Put the result of an expression into the primary register */
|
||||||
{
|
{
|
||||||
int f;
|
int f;
|
||||||
|
@ -517,7 +517,7 @@ static unsigned FunctionParamList (FuncDesc* Func)
|
||||||
* The function returns the size of the parameters pushed.
|
* The function returns the size of the parameters pushed.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
struct expent lval;
|
ExprDesc lval;
|
||||||
|
|
||||||
/* Initialize variables */
|
/* Initialize variables */
|
||||||
SymEntry* Param = 0; /* Keep gcc silent */
|
SymEntry* Param = 0; /* Keep gcc silent */
|
||||||
|
@ -679,7 +679,7 @@ static unsigned FunctionParamList (FuncDesc* Func)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void CallFunction (struct expent* lval)
|
static void CallFunction (ExprDesc* lval)
|
||||||
/* Perform a function call. Called from hie11, this routine will
|
/* Perform a function call. Called from hie11, this routine will
|
||||||
* either call the named function, or the function pointer in a/x.
|
* either call the named function, or the function pointer in a/x.
|
||||||
*/
|
*/
|
||||||
|
@ -784,7 +784,7 @@ void doasm (void)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int primary (struct expent* lval)
|
static int primary (ExprDesc* lval)
|
||||||
/* This is the lowest level of the expression parser. */
|
/* This is the lowest level of the expression parser. */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
|
@ -977,7 +977,7 @@ static int primary (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int arrayref (int k, struct expent* lval)
|
static int arrayref (int k, ExprDesc* lval)
|
||||||
/* Handle an array reference */
|
/* Handle an array reference */
|
||||||
{
|
{
|
||||||
unsigned lflags;
|
unsigned lflags;
|
||||||
|
@ -985,7 +985,7 @@ static int arrayref (int k, struct expent* lval)
|
||||||
int ConstBaseAddr;
|
int ConstBaseAddr;
|
||||||
int ConstSubAddr;
|
int ConstSubAddr;
|
||||||
int l;
|
int l;
|
||||||
struct expent lval2;
|
ExprDesc lval2;
|
||||||
CodeMark Mark1;
|
CodeMark Mark1;
|
||||||
CodeMark Mark2;
|
CodeMark Mark2;
|
||||||
type* tptr1;
|
type* tptr1;
|
||||||
|
@ -1210,7 +1210,7 @@ end_array:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int structref (int k, struct expent* lval)
|
static int structref (int k, ExprDesc* lval)
|
||||||
/* Process struct field after . or ->. */
|
/* Process struct field after . or ->. */
|
||||||
{
|
{
|
||||||
ident Ident;
|
ident Ident;
|
||||||
|
@ -1255,7 +1255,7 @@ static int structref (int k, struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hie11 (struct expent *lval)
|
static int hie11 (ExprDesc *lval)
|
||||||
/* Handle compound types (structs and arrays) */
|
/* Handle compound types (structs and arrays) */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
|
@ -1318,7 +1318,7 @@ static int hie11 (struct expent *lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void store (struct expent* lval)
|
static void store (ExprDesc* lval)
|
||||||
/* Store primary reg into this reference */
|
/* Store primary reg into this reference */
|
||||||
{
|
{
|
||||||
int f;
|
int f;
|
||||||
|
@ -1355,7 +1355,7 @@ static void store (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void pre_incdec (struct expent* lval, void (*inc) (unsigned, unsigned long))
|
static void pre_incdec (ExprDesc* lval, void (*inc) (unsigned, unsigned long))
|
||||||
/* Handle --i and ++i */
|
/* Handle --i and ++i */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
|
@ -1437,7 +1437,7 @@ static void pre_incdec (struct expent* lval, void (*inc) (unsigned, unsigned lon
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void post_incdec (struct expent *lval, int k, void (*inc) (unsigned, unsigned long))
|
static void post_incdec (ExprDesc *lval, int k, void (*inc) (unsigned, unsigned long))
|
||||||
/* Handle i-- and i++ */
|
/* Handle i-- and i++ */
|
||||||
{
|
{
|
||||||
unsigned flags;
|
unsigned flags;
|
||||||
|
@ -1475,7 +1475,7 @@ static void post_incdec (struct expent *lval, int k, void (*inc) (unsigned, unsi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void unaryop (int tok, struct expent* lval)
|
static void unaryop (int tok, ExprDesc* lval)
|
||||||
/* Handle unary -/+ and ~ */
|
/* Handle unary -/+ and ~ */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
|
@ -1511,7 +1511,7 @@ static void unaryop (int tok, struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int typecast (struct expent* lval)
|
static int typecast (ExprDesc* lval)
|
||||||
/* Handle an explicit cast */
|
/* Handle an explicit cast */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
|
@ -1605,7 +1605,7 @@ static int typecast (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hie10 (struct expent* lval)
|
static int hie10 (ExprDesc* lval)
|
||||||
/* Handle ++, --, !, unary - etc. */
|
/* Handle ++, --, !, unary - etc. */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
|
@ -1718,13 +1718,13 @@ static int hie10 (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
static int hie_internal (GenDesc** ops, /* List of generators */
|
static int hie_internal (GenDesc** ops, /* List of generators */
|
||||||
struct expent* lval, /* parent expr's lval */
|
ExprDesc* lval, /* parent expr's lval */
|
||||||
int (*hienext) (struct expent*),
|
int (*hienext) (ExprDesc*),
|
||||||
int* UsedGen) /* next higher level */
|
int* UsedGen) /* next higher level */
|
||||||
/* Helper function */
|
/* Helper function */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
struct expent lval2;
|
ExprDesc lval2;
|
||||||
CodeMark Mark1;
|
CodeMark Mark1;
|
||||||
CodeMark Mark2;
|
CodeMark Mark2;
|
||||||
GenDesc* Gen;
|
GenDesc* Gen;
|
||||||
|
@ -1828,12 +1828,12 @@ static int hie_internal (GenDesc** ops, /* List of generators */
|
||||||
|
|
||||||
|
|
||||||
static int hie_compare (GenDesc** ops, /* List of generators */
|
static int hie_compare (GenDesc** ops, /* List of generators */
|
||||||
struct expent* lval, /* parent expr's lval */
|
ExprDesc* lval, /* parent expr's lval */
|
||||||
int (*hienext) (struct expent*))
|
int (*hienext) (ExprDesc*))
|
||||||
/* Helper function for the compare operators */
|
/* Helper function for the compare operators */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
struct expent lval2;
|
ExprDesc lval2;
|
||||||
CodeMark Mark1;
|
CodeMark Mark1;
|
||||||
CodeMark Mark2;
|
CodeMark Mark2;
|
||||||
GenDesc* Gen;
|
GenDesc* Gen;
|
||||||
|
@ -1951,7 +1951,7 @@ static int hie_compare (GenDesc** ops, /* List of generators */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hie9 (struct expent *lval)
|
static int hie9 (ExprDesc *lval)
|
||||||
/* Process * and / operators. */
|
/* Process * and / operators. */
|
||||||
{
|
{
|
||||||
static GenDesc* hie9_ops [] = {
|
static GenDesc* hie9_ops [] = {
|
||||||
|
@ -1964,13 +1964,13 @@ static int hie9 (struct expent *lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void parseadd (int k, struct expent* lval)
|
static void parseadd (int k, ExprDesc* lval)
|
||||||
/* Parse an expression with the binary plus operator. lval contains the
|
/* Parse an expression with the binary plus operator. lval contains the
|
||||||
* unprocessed left hand side of the expression and will contain the
|
* unprocessed left hand side of the expression and will contain the
|
||||||
* result of the expression on return.
|
* result of the expression on return.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
struct expent lval2;
|
ExprDesc lval2;
|
||||||
unsigned flags; /* Operation flags */
|
unsigned flags; /* Operation flags */
|
||||||
CodeMark Mark; /* Remember code position */
|
CodeMark Mark; /* Remember code position */
|
||||||
type* lhst; /* Type of left hand side */
|
type* lhst; /* Type of left hand side */
|
||||||
|
@ -2134,13 +2134,13 @@ static void parseadd (int k, struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void parsesub (int k, struct expent* lval)
|
static void parsesub (int k, ExprDesc* lval)
|
||||||
/* Parse an expression with the binary minus operator. lval contains the
|
/* Parse an expression with the binary minus operator. lval contains the
|
||||||
* unprocessed left hand side of the expression and will contain the
|
* unprocessed left hand side of the expression and will contain the
|
||||||
* result of the expression on return.
|
* result of the expression on return.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
struct expent lval2;
|
ExprDesc lval2;
|
||||||
unsigned flags; /* Operation flags */
|
unsigned flags; /* Operation flags */
|
||||||
type* lhst; /* Type of left hand side */
|
type* lhst; /* Type of left hand side */
|
||||||
type* rhst; /* Type of right hand side */
|
type* rhst; /* Type of right hand side */
|
||||||
|
@ -2300,7 +2300,7 @@ static void parsesub (int k, struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hie8 (struct expent* lval)
|
static int hie8 (ExprDesc* lval)
|
||||||
/* Process + and - binary operators. */
|
/* Process + and - binary operators. */
|
||||||
{
|
{
|
||||||
int k = hie9 (lval);
|
int k = hie9 (lval);
|
||||||
|
@ -2319,7 +2319,7 @@ static int hie8 (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hie7 (struct expent *lval)
|
static int hie7 (ExprDesc *lval)
|
||||||
/* Parse << and >>. */
|
/* Parse << and >>. */
|
||||||
{
|
{
|
||||||
static GenDesc* hie7_ops [] = {
|
static GenDesc* hie7_ops [] = {
|
||||||
|
@ -2332,7 +2332,7 @@ static int hie7 (struct expent *lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hie6 (struct expent *lval)
|
static int hie6 (ExprDesc *lval)
|
||||||
/* process greater-than type comparators */
|
/* process greater-than type comparators */
|
||||||
{
|
{
|
||||||
static GenDesc* hie6_ops [] = {
|
static GenDesc* hie6_ops [] = {
|
||||||
|
@ -2343,7 +2343,7 @@ static int hie6 (struct expent *lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hie5 (struct expent *lval)
|
static int hie5 (ExprDesc *lval)
|
||||||
{
|
{
|
||||||
static GenDesc* hie5_ops[] = {
|
static GenDesc* hie5_ops[] = {
|
||||||
&GenEQ, &GenNE, 0
|
&GenEQ, &GenNE, 0
|
||||||
|
@ -2353,7 +2353,7 @@ static int hie5 (struct expent *lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hie4 (struct expent* lval)
|
static int hie4 (ExprDesc* lval)
|
||||||
/* Handle & (bitwise and) */
|
/* Handle & (bitwise and) */
|
||||||
{
|
{
|
||||||
static GenDesc* hie4_ops [] = {
|
static GenDesc* hie4_ops [] = {
|
||||||
|
@ -2366,7 +2366,7 @@ static int hie4 (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hie3 (struct expent *lval)
|
static int hie3 (ExprDesc *lval)
|
||||||
/* Handle ^ (bitwise exclusive or) */
|
/* Handle ^ (bitwise exclusive or) */
|
||||||
{
|
{
|
||||||
static GenDesc* hie3_ops [] = {
|
static GenDesc* hie3_ops [] = {
|
||||||
|
@ -2379,7 +2379,7 @@ static int hie3 (struct expent *lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hie2 (struct expent *lval)
|
static int hie2 (ExprDesc *lval)
|
||||||
/* Handle | (bitwise or) */
|
/* Handle | (bitwise or) */
|
||||||
{
|
{
|
||||||
static GenDesc* hie2_ops [] = {
|
static GenDesc* hie2_ops [] = {
|
||||||
|
@ -2392,12 +2392,12 @@ static int hie2 (struct expent *lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hieAnd (struct expent* lval, unsigned TrueLab, int* BoolOp)
|
static int hieAnd (ExprDesc* lval, unsigned TrueLab, int* BoolOp)
|
||||||
/* Process "exp && exp" */
|
/* Process "exp && exp" */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
int lab;
|
int lab;
|
||||||
struct expent lval2;
|
ExprDesc lval2;
|
||||||
|
|
||||||
k = hie2 (lval);
|
k = hie2 (lval);
|
||||||
if (CurTok.Tok == TOK_BOOL_AND) {
|
if (CurTok.Tok == TOK_BOOL_AND) {
|
||||||
|
@ -2454,11 +2454,11 @@ static int hieAnd (struct expent* lval, unsigned TrueLab, int* BoolOp)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hieOr (struct expent *lval)
|
static int hieOr (ExprDesc *lval)
|
||||||
/* Process "exp || exp". */
|
/* Process "exp || exp". */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
struct expent lval2;
|
ExprDesc lval2;
|
||||||
int BoolOp = 0; /* Did we have a boolean op? */
|
int BoolOp = 0; /* Did we have a boolean op? */
|
||||||
int AndOp; /* Did we have a && operation? */
|
int AndOp; /* Did we have a && operation? */
|
||||||
unsigned TrueLab; /* Jump to this label if true */
|
unsigned TrueLab; /* Jump to this label if true */
|
||||||
|
@ -2537,14 +2537,14 @@ static int hieOr (struct expent *lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int hieQuest (struct expent *lval)
|
static int hieQuest (ExprDesc *lval)
|
||||||
/* Parse "lvalue ? exp : exp" */
|
/* Parse "lvalue ? exp : exp" */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
int labf;
|
int labf;
|
||||||
int labt;
|
int labt;
|
||||||
struct expent lval2; /* Expression 2 */
|
ExprDesc lval2; /* Expression 2 */
|
||||||
struct expent lval3; /* Expression 3 */
|
ExprDesc lval3; /* Expression 3 */
|
||||||
type* type2; /* Type of expression 2 */
|
type* type2; /* Type of expression 2 */
|
||||||
type* type3; /* Type of expression 3 */
|
type* type3; /* Type of expression 3 */
|
||||||
type* rtype; /* Type of result */
|
type* rtype; /* Type of result */
|
||||||
|
@ -2644,10 +2644,10 @@ static int hieQuest (struct expent *lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void opeq (GenDesc* Gen, struct expent *lval, int k)
|
static void opeq (GenDesc* Gen, ExprDesc *lval, int k)
|
||||||
/* Process "op=" operators. */
|
/* Process "op=" operators. */
|
||||||
{
|
{
|
||||||
struct expent lval2;
|
ExprDesc lval2;
|
||||||
unsigned flags;
|
unsigned flags;
|
||||||
CodeMark Mark;
|
CodeMark Mark;
|
||||||
int MustScale;
|
int MustScale;
|
||||||
|
@ -2725,10 +2725,10 @@ static void opeq (GenDesc* Gen, struct expent *lval, int k)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void addsubeq (GenDesc* Gen, struct expent *lval, int k)
|
static void addsubeq (GenDesc* Gen, ExprDesc *lval, int k)
|
||||||
/* Process the += and -= operators */
|
/* Process the += and -= operators */
|
||||||
{
|
{
|
||||||
struct expent lval2;
|
ExprDesc lval2;
|
||||||
unsigned flags;
|
unsigned flags;
|
||||||
int MustScale;
|
int MustScale;
|
||||||
|
|
||||||
|
@ -2817,11 +2817,11 @@ static void addsubeq (GenDesc* Gen, struct expent *lval, int k)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void Assignment (struct expent* lval)
|
static void Assignment (ExprDesc* lval)
|
||||||
/* Parse an assignment */
|
/* Parse an assignment */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
struct expent lval2;
|
ExprDesc lval2;
|
||||||
unsigned flags;
|
unsigned flags;
|
||||||
type* ltype = lval->e_tptr;
|
type* ltype = lval->e_tptr;
|
||||||
|
|
||||||
|
@ -2894,7 +2894,7 @@ static void Assignment (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int hie1 (struct expent* lval)
|
int hie1 (ExprDesc* lval)
|
||||||
/* Parse first level of expression hierarchy. */
|
/* Parse first level of expression hierarchy. */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
|
@ -2963,7 +2963,7 @@ int hie1 (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int hie0 (struct expent *lval)
|
int hie0 (ExprDesc *lval)
|
||||||
/* Parse comma operator. */
|
/* Parse comma operator. */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
|
@ -2978,7 +2978,7 @@ int hie0 (struct expent *lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int evalexpr (unsigned flags, int (*f) (struct expent*), struct expent* lval)
|
int evalexpr (unsigned flags, int (*f) (ExprDesc*), ExprDesc* lval)
|
||||||
/* Will evaluate an expression via the given function. If the result is a
|
/* Will evaluate an expression via the given function. If the result is a
|
||||||
* constant, 0 is returned and the value is put in the lval struct. If the
|
* constant, 0 is returned and the value is put in the lval struct. If the
|
||||||
* result is not constant, exprhs is called to bring the value into the
|
* result is not constant, exprhs is called to bring the value into the
|
||||||
|
@ -3001,7 +3001,7 @@ int evalexpr (unsigned flags, int (*f) (struct expent*), struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int expr (int (*func) (struct expent*), struct expent *lval)
|
int expr (int (*func) (ExprDesc*), ExprDesc *lval)
|
||||||
/* Expression parser; func is either hie0 or hie1. */
|
/* Expression parser; func is either hie0 or hie1. */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
|
@ -3024,7 +3024,7 @@ int expr (int (*func) (struct expent*), struct expent *lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void expression1 (struct expent* lval)
|
void expression1 (ExprDesc* lval)
|
||||||
/* Evaluate an expression on level 1 (no comma operator) and put it into
|
/* Evaluate an expression on level 1 (no comma operator) and put it into
|
||||||
* the primary register
|
* the primary register
|
||||||
*/
|
*/
|
||||||
|
@ -3035,7 +3035,7 @@ void expression1 (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void expression (struct expent* lval)
|
void expression (ExprDesc* lval)
|
||||||
/* Evaluate an expression and put it into the primary register */
|
/* Evaluate an expression and put it into the primary register */
|
||||||
{
|
{
|
||||||
memset (lval, 0, sizeof (*lval));
|
memset (lval, 0, sizeof (*lval));
|
||||||
|
@ -3044,7 +3044,7 @@ void expression (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void constexpr (struct expent* lval)
|
void constexpr (ExprDesc* lval)
|
||||||
/* Get a constant value */
|
/* Get a constant value */
|
||||||
{
|
{
|
||||||
memset (lval, 0, sizeof (*lval));
|
memset (lval, 0, sizeof (*lval));
|
||||||
|
@ -3059,7 +3059,7 @@ void constexpr (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void intexpr (struct expent* lval)
|
void intexpr (ExprDesc* lval)
|
||||||
/* Get an integer expression */
|
/* Get an integer expression */
|
||||||
{
|
{
|
||||||
expression (lval);
|
expression (lval);
|
||||||
|
@ -3074,7 +3074,7 @@ void intexpr (struct expent* lval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void boolexpr (struct expent* lval)
|
void boolexpr (ExprDesc* lval)
|
||||||
/* Get a boolean expression */
|
/* Get a boolean expression */
|
||||||
{
|
{
|
||||||
/* Read an expression */
|
/* Read an expression */
|
||||||
|
@ -3098,7 +3098,7 @@ void test (unsigned label, int cond)
|
||||||
/* Generate code to perform test and jump if false. */
|
/* Generate code to perform test and jump if false. */
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
struct expent lval;
|
ExprDesc lval;
|
||||||
|
|
||||||
/* Eat the parenthesis */
|
/* Eat the parenthesis */
|
||||||
ConsumeLParen ();
|
ConsumeLParen ();
|
||||||
|
|
|
@ -42,7 +42,8 @@
|
||||||
#define E_FORCETEST 0x0002 /* if expr has NOT set CC, force a test */
|
#define E_FORCETEST 0x0002 /* if expr has NOT set CC, force a test */
|
||||||
|
|
||||||
/* Describe the result of an expression */
|
/* Describe the result of an expression */
|
||||||
struct expent {
|
typedef struct ExprDesc ExprDesc;
|
||||||
|
struct ExprDesc {
|
||||||
struct SymEntry* Sym; /* Symbol table entry if known */
|
struct SymEntry* Sym; /* Symbol table entry if known */
|
||||||
type* e_tptr; /* Type array of expression */
|
type* e_tptr; /* Type array of expression */
|
||||||
long e_const; /* Value if expression constant */
|
long e_const; /* Value if expression constant */
|
||||||
|
@ -65,50 +66,50 @@ void doasm (void);
|
||||||
* a string literal in parenthesis.
|
* a string literal in parenthesis.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
unsigned assignadjust (type* lhst, struct expent* rhs);
|
unsigned assignadjust (type* lhst, ExprDesc* rhs);
|
||||||
/* Adjust the type of the right hand expression so that it can be assigned to
|
/* Adjust the type of the right hand expression so that it can be assigned to
|
||||||
* the type on the left hand side. This function is used for assignment and
|
* the type on the left hand side. This function is used for assignment and
|
||||||
* for converting parameters in a function call. It returns the code generator
|
* for converting parameters in a function call. It returns the code generator
|
||||||
* flags for the operation.
|
* flags for the operation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void exprhs (unsigned flags, int k, struct expent *lval);
|
void exprhs (unsigned flags, int k, ExprDesc *lval);
|
||||||
/* Put the result of an expression into the primary register */
|
/* Put the result of an expression into the primary register */
|
||||||
|
|
||||||
void expression1 (struct expent* lval);
|
void expression1 (ExprDesc* lval);
|
||||||
/* Evaluate an expression on level 1 (no comma operator) and put it into
|
/* Evaluate an expression on level 1 (no comma operator) and put it into
|
||||||
* the primary register
|
* the primary register
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void expression (struct expent* lval);
|
void expression (ExprDesc* lval);
|
||||||
/* Evaluate an expression and put it into the primary register */
|
/* Evaluate an expression and put it into the primary register */
|
||||||
|
|
||||||
int evalexpr (unsigned flags, int (*f) (struct expent*), struct expent* lval);
|
int evalexpr (unsigned flags, int (*f) (ExprDesc*), ExprDesc* lval);
|
||||||
/* Will evaluate an expression via the given function. If the result is a
|
/* Will evaluate an expression via the given function. If the result is a
|
||||||
* constant, 0 is returned and the value is put in the lval struct. If the
|
* constant, 0 is returned and the value is put in the lval struct. If the
|
||||||
* result is not constant, exprhs is called to bring the value into the
|
* result is not constant, exprhs is called to bring the value into the
|
||||||
* primary register and 1 is returned.
|
* primary register and 1 is returned.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void constexpr (struct expent* lval);
|
void constexpr (ExprDesc* lval);
|
||||||
/* Get a constant value */
|
/* Get a constant value */
|
||||||
|
|
||||||
void intexpr (struct expent* lval);
|
void intexpr (ExprDesc* lval);
|
||||||
/* Get an integer expression */
|
/* Get an integer expression */
|
||||||
|
|
||||||
void boolexpr (struct expent* lval);
|
void boolexpr (ExprDesc* lval);
|
||||||
/* Get a boolean expression */
|
/* Get a boolean expression */
|
||||||
|
|
||||||
void test (unsigned label, int cond);
|
void test (unsigned label, int cond);
|
||||||
/* Generate code to perform test and jump if false. */
|
/* Generate code to perform test and jump if false. */
|
||||||
|
|
||||||
int hie1 (struct expent* lval);
|
int hie1 (ExprDesc* lval);
|
||||||
/* Parse first level of expression hierarchy. */
|
/* Parse first level of expression hierarchy. */
|
||||||
|
|
||||||
int hie0 (struct expent* lval);
|
int hie0 (ExprDesc* lval);
|
||||||
/* Parse comma operator (highest level of expression hierarchy) */
|
/* Parse comma operator (highest level of expression hierarchy) */
|
||||||
|
|
||||||
void DefineData (struct expent* lval);
|
void DefineData (ExprDesc* lval);
|
||||||
/* Output a data definition for the given expression */
|
/* Output a data definition for the given expression */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -180,7 +180,7 @@ static void ParseOneDecl (const DeclSpec* Spec)
|
||||||
SC = (SC & ~SC_REGISTER) | SC_AUTO;
|
SC = (SC & ~SC_REGISTER) | SC_AUTO;
|
||||||
if (CurTok.Tok == TOK_ASSIGN) {
|
if (CurTok.Tok == TOK_ASSIGN) {
|
||||||
|
|
||||||
struct expent lval;
|
ExprDesc lval;
|
||||||
|
|
||||||
/* Allocate previously reserved local space */
|
/* Allocate previously reserved local space */
|
||||||
AllocLocalSpace (CurrentFunc);
|
AllocLocalSpace (CurrentFunc);
|
||||||
|
@ -235,7 +235,7 @@ static void ParseOneDecl (const DeclSpec* Spec)
|
||||||
/* Allow assignments */
|
/* Allow assignments */
|
||||||
if (CurTok.Tok == TOK_ASSIGN) {
|
if (CurTok.Tok == TOK_ASSIGN) {
|
||||||
|
|
||||||
struct expent lval;
|
ExprDesc lval;
|
||||||
|
|
||||||
/* Skip the '=' */
|
/* Skip the '=' */
|
||||||
NextToken ();
|
NextToken ();
|
||||||
|
|
|
@ -174,7 +174,7 @@ static void FlagPragma (unsigned char* Flag)
|
||||||
/* Handle a pragma that expects a boolean paramater */
|
/* Handle a pragma that expects a boolean paramater */
|
||||||
{
|
{
|
||||||
/* Read a constant expression */
|
/* Read a constant expression */
|
||||||
struct expent val;
|
ExprDesc val;
|
||||||
constexpr (&val);
|
constexpr (&val);
|
||||||
|
|
||||||
/* Store the value into the flag parameter */
|
/* Store the value into the flag parameter */
|
||||||
|
|
|
@ -616,7 +616,7 @@ static int setmflag (int skip, int flag, int cond)
|
||||||
static int doiff (int skip)
|
static int doiff (int skip)
|
||||||
/* Process #if directive */
|
/* Process #if directive */
|
||||||
{
|
{
|
||||||
struct expent lval;
|
ExprDesc lval;
|
||||||
char* S;
|
char* S;
|
||||||
|
|
||||||
/* We're about to abuse the compiler expression parser to evaluate the
|
/* We're about to abuse the compiler expression parser to evaluate the
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void StdFunc_strlen (struct expent*);
|
static void StdFunc_strlen (ExprDesc*);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ static void StdFunc_strlen (struct expent*);
|
||||||
*/
|
*/
|
||||||
static struct StdFuncDesc {
|
static struct StdFuncDesc {
|
||||||
const char* Name;
|
const char* Name;
|
||||||
void (*Handler) (struct expent*);
|
void (*Handler) (ExprDesc*);
|
||||||
} StdFuncs [] = {
|
} StdFuncs [] = {
|
||||||
{ "strlen", StdFunc_strlen },
|
{ "strlen", StdFunc_strlen },
|
||||||
|
|
||||||
|
@ -107,10 +107,10 @@ static struct StdFuncDesc* FindFunc (const char* Name)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void StdFunc_strlen (struct expent* lval)
|
static void StdFunc_strlen (ExprDesc* lval)
|
||||||
/* Handle the strlen function */
|
/* Handle the strlen function */
|
||||||
{
|
{
|
||||||
struct expent pval;
|
ExprDesc pval;
|
||||||
static type ArgType[] = { T_PTR, T_SCHAR, T_END };
|
static type ArgType[] = { T_PTR, T_SCHAR, T_END };
|
||||||
|
|
||||||
|
|
||||||
|
@ -169,7 +169,7 @@ int IsStdFunc (const char* Name)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void HandleStdFunc (struct expent* lval)
|
void HandleStdFunc (ExprDesc* lval)
|
||||||
/* Generate code for a known standard function. */
|
/* Generate code for a known standard function. */
|
||||||
{
|
{
|
||||||
/* Get a pointer to the table entry */
|
/* Get a pointer to the table entry */
|
||||||
|
|
|
@ -54,7 +54,7 @@ int IsStdFunc (const char* Name);
|
||||||
* called in a special way.
|
* called in a special way.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void HandleStdFunc (struct expent* lval);
|
void HandleStdFunc (ExprDesc* lval);
|
||||||
/* Generate code for a known standard function. */
|
/* Generate code for a known standard function. */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -201,13 +201,13 @@ static void WhileStatement (void)
|
||||||
|
|
||||||
/* Loop body */
|
/* Loop body */
|
||||||
Statement (&PendingToken);
|
Statement (&PendingToken);
|
||||||
|
|
||||||
/* Jump back to loop top */
|
/* Jump back to loop top */
|
||||||
g_jump (loop);
|
g_jump (loop);
|
||||||
|
|
||||||
/* Exit label */
|
/* Exit label */
|
||||||
g_defcodelabel (lab);
|
g_defcodelabel (lab);
|
||||||
|
|
||||||
/* Eat remaining tokens that were delay because of line info correctness */
|
/* Eat remaining tokens that were delay because of line info correctness */
|
||||||
SkipPending (PendingToken);
|
SkipPending (PendingToken);
|
||||||
|
|
||||||
|
@ -220,7 +220,7 @@ static void WhileStatement (void)
|
||||||
static void ReturnStatement (void)
|
static void ReturnStatement (void)
|
||||||
/* Handle the 'return' statement */
|
/* Handle the 'return' statement */
|
||||||
{
|
{
|
||||||
struct expent lval;
|
ExprDesc lval;
|
||||||
|
|
||||||
NextToken ();
|
NextToken ();
|
||||||
if (CurTok.Tok != TOK_SEMI) {
|
if (CurTok.Tok != TOK_SEMI) {
|
||||||
|
@ -314,7 +314,7 @@ static void ContinueStatement (void)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void CascadeSwitch (struct expent* eval)
|
static void CascadeSwitch (ExprDesc* eval)
|
||||||
/* Handle a switch statement for chars with a cmp cascade for the selector */
|
/* Handle a switch statement for chars with a cmp cascade for the selector */
|
||||||
{
|
{
|
||||||
unsigned ExitLab; /* Exit label */
|
unsigned ExitLab; /* Exit label */
|
||||||
|
@ -324,7 +324,7 @@ static void CascadeSwitch (struct expent* eval)
|
||||||
int HaveDefault; /* Remember if we had a default label */
|
int HaveDefault; /* Remember if we had a default label */
|
||||||
int lcount; /* Label count */
|
int lcount; /* Label count */
|
||||||
unsigned Flags; /* Code generator flags */
|
unsigned Flags; /* Code generator flags */
|
||||||
struct expent lval; /* Case label expression */
|
ExprDesc lval; /* Case label expression */
|
||||||
long Val; /* Case label value */
|
long Val; /* Case label value */
|
||||||
|
|
||||||
|
|
||||||
|
@ -492,7 +492,7 @@ static void CascadeSwitch (struct expent* eval)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void TableSwitch (struct expent* eval)
|
static void TableSwitch (ExprDesc* eval)
|
||||||
/* Handle a switch statement via table based selector */
|
/* Handle a switch statement via table based selector */
|
||||||
{
|
{
|
||||||
/* Entry for one case in a switch statement */
|
/* Entry for one case in a switch statement */
|
||||||
|
@ -509,7 +509,7 @@ static void TableSwitch (struct expent* eval)
|
||||||
int HaveBreak; /* Last statement has a break */
|
int HaveBreak; /* Last statement has a break */
|
||||||
int HaveDefault; /* Remember if we had a default label */
|
int HaveDefault; /* Remember if we had a default label */
|
||||||
unsigned Flags; /* Code generator flags */
|
unsigned Flags; /* Code generator flags */
|
||||||
struct expent lval; /* Case label expression */
|
ExprDesc lval; /* Case label expression */
|
||||||
struct swent *p;
|
struct swent *p;
|
||||||
struct swent *swtab;
|
struct swent *swtab;
|
||||||
|
|
||||||
|
@ -605,7 +605,7 @@ static void TableSwitch (struct expent* eval)
|
||||||
static void SwitchStatement (void)
|
static void SwitchStatement (void)
|
||||||
/* Handle a 'switch' statement */
|
/* Handle a 'switch' statement */
|
||||||
{
|
{
|
||||||
struct expent eval; /* Switch statement expression */
|
ExprDesc eval; /* Switch statement expression */
|
||||||
|
|
||||||
/* Eat the "switch" */
|
/* Eat the "switch" */
|
||||||
NextToken ();
|
NextToken ();
|
||||||
|
@ -631,9 +631,9 @@ static void SwitchStatement (void)
|
||||||
static void ForStatement (void)
|
static void ForStatement (void)
|
||||||
/* Handle a 'for' statement */
|
/* Handle a 'for' statement */
|
||||||
{
|
{
|
||||||
struct expent lval1;
|
ExprDesc lval1;
|
||||||
struct expent lval2;
|
ExprDesc lval2;
|
||||||
struct expent lval3;
|
ExprDesc lval3;
|
||||||
int HaveIncExpr;
|
int HaveIncExpr;
|
||||||
CodeMark IncExprStart;
|
CodeMark IncExprStart;
|
||||||
CodeMark IncExprEnd;
|
CodeMark IncExprEnd;
|
||||||
|
@ -774,7 +774,7 @@ int Statement (int* PendingToken)
|
||||||
* NULL, the function will skip the token.
|
* NULL, the function will skip the token.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
struct expent lval;
|
ExprDesc lval;
|
||||||
int GotBreak;
|
int GotBreak;
|
||||||
|
|
||||||
/* Assume no pending token */
|
/* Assume no pending token */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user