]> git.sur5r.net Git - cc65/blobdiff - src/cc65/parser.c
New option --forget-inc-paths
[cc65] / src / cc65 / parser.c
index 932d3875a0e4710c518dbf78773cba9b14c9ace6..ec1dfcc43941a6bac49116d27103676969179b81 100644 (file)
@@ -79,9 +79,7 @@ ExprNode* Expression (void);
 
 
 static int IsTypeExpr (void)
-/* Return true if some sort of variable or type is waiting (helper for cast
- * and sizeof() in hie10).
- */
+/* Return true if some sort of variable or type is waiting */
 {
     SymEntry* Entry;
 
@@ -137,7 +135,7 @@ static ExprNode* GetIntNode (int Value)
 
 
 /*****************************************************************************/
-/*                                  Code                                    */
+/*                                  Code                                    */
 /*****************************************************************************/
 
 
@@ -179,7 +177,7 @@ ExprNode* DoAsm (void)
         * will fail if the next token is also a string token, but that's a
         * syntax error anyway, because we expect a right paren.
         */
-       ResetLiteralOffs (CurTok.IVal);
+       ResetLiteralPoolOffs (CurTok.IVal);
     }
 
     /* Skip the string token */
@@ -275,10 +273,11 @@ static ExprNode* Primary (void)
                return GetIntNode (0);
            }
 
-           /* Handle enum values as constant integers */
-                   if ((Sym->Flags & SC_ENUM) == SC_ENUM) {
+           /* Handle constants including enum values */
+                   if ((Sym->Flags & SC_CONST) == SC_CONST) {
 
-               N = GetIntNode (Sym->V.EnumVal);
+               N = AllocExprNode (NT_CONST, Sym->Type, RVALUE);
+               N->IVal = Sym->V.ConstVal;
 
            } else {
 
@@ -588,7 +587,7 @@ static ExprNode* DoFunctionCall (ExprNode* Left)
            }
        } else if (!Ellipsis) {
            /* Too many arguments. Do we have an open param list? */
-           if ((Func->Flags & FD_ELLIPSIS) == 0) {
+           if ((Func->Flags & FD_VARIADIC) == 0) {
                /* End of param list reached, no ellipsis */
                Error ("Too many function arguments");
            }
@@ -660,6 +659,7 @@ static ExprNode* DoPostIncDec (ExprNode* Left)
 
 
 static ExprNode* PostfixExpr (void)
+/* Handle a postfix expression */
 {
     /* Get the lower level expression */
     ExprNode* Root = Primary ();
@@ -908,7 +908,7 @@ static ExprNode* DoAddress (void)
 
 
 static ExprNode* DoIndirect (void)
-/* Handle the indirection operaror * */
+/* Handle the indirection operator * */
 {
     ExprNode* Op;
     type*     ResultType;
@@ -1020,7 +1020,7 @@ static ExprNode* DoTypeCast (void)
     } else {
 
        /* Must be casted. Setup the expression tree and return the new node */
-       Root = AllocExprNode (NT_BOOL_NOT, TargetType, RVALUE);
+       Root = AllocExprNode (NT_TYPECAST, TargetType, RVALUE);
        SetLeftNode (Root, Op);
        return Root;
 
@@ -1607,4 +1607,3 @@ static ExprNode* ConditionalExpr (void)
 
 
 
-