]> git.sur5r.net Git - cc65/commitdiff
Initialize translation tables
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 14 Sep 2000 19:26:13 +0000 (19:26 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 14 Sep 2000 19:26:13 +0000 (19:26 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@327 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/ca65/main.c
src/cc65/declare.c
src/cc65/error.c
src/cc65/error.h
src/cc65/locals.c
src/cc65/main.c
src/cc65/make/gcc.mak
src/cc65/make/watcom.mak
src/cc65/scanner.c
src/cc65/scanner.h

index ecbb58ec973ea9eb62b1e00d7b41392585ed42c6..1601699e20d4c45ba0ee2c31c499d91eeb8415ed 100644 (file)
@@ -42,6 +42,7 @@
 /* common */
 #include "cmdline.h"
 #include "target.h"
+#include "tgttrans.h"
 #include "version.h"
 
 /* ca65 */
@@ -529,7 +530,7 @@ int main (int argc, char* argv [])
                    LongOption (&I, OptTab, sizeof(OptTab)/sizeof(OptTab[0]));
                    break;
 
-                       case 'g':
+                       case 'g':
                            OptDebugInfo (Arg, 0);
                            break;
 
@@ -574,7 +575,7 @@ int main (int argc, char* argv [])
                            break;
 
                        case 'V':
-                   OptVersion (Arg, 0);
+                   OptVersion (Arg, 0);
                            break;
 
                        case 'W':
@@ -607,6 +608,9 @@ int main (int argc, char* argv [])
        exit (EXIT_FAILURE);
     }
 
+    /* Intialize the target translation tables */
+    TgtTranslateInit ();
+
     /* Initialize the scanner, open the input file */
     InitScanner (InFile);
 
index 3f285244b181e1520b437ed4f331a83d7170d49d..e97cb4577e2f5f94f908d07238bd1f0875d04af8 100644 (file)
@@ -18,6 +18,7 @@
 #include "anonname.h"
 #include "codegen.h"
 #include "datatype.h"
+#include "declattr.h"
 #include "error.h"
 #include "expr.h"
 #include "funcdesc.h"
@@ -621,7 +622,7 @@ static void ParseAnsiParamList (FuncDesc* F)
 
        DeclSpec        Spec;
        Declaration     Decl;
-
+       DeclAttr        Attr;
 
        /* Allow an ellipsis as last parameter */
        if (curtok == TOK_ELLIPSIS) {
@@ -658,6 +659,9 @@ static void ParseAnsiParamList (FuncDesc* F)
            Spec.StorageClass &= ~SC_DEF;
        }
 
+       /* Parse an attribute */
+       ParseAttribute (&Decl, &Attr);
+
        /* Create a symbol table entry */
        AddLocalSym (Decl.Ident, ParamTypeCvt (Decl.Type), Spec.StorageClass, 0);
 
index 9d0455ae99793fb23346a760885d9105fc5deda7..221a4649c0a5a33a7450dc1811fa1e9f2d8a22d5 100644 (file)
@@ -79,6 +79,7 @@ static char* ErrMsg [ERR_COUNT-1] = {
     "`\"' expected",
     "`:' expected",
     "`;' expected",
+    "`,' expected",
     "`(' expected",
     "`)' expected",
     "`[' expected",
@@ -138,6 +139,7 @@ static char* ErrMsg [ERR_COUNT-1] = {
     "Illegal modifier",
     "Illegal type qualifier",
     "Illegal storage class",
+    "Illegal attribute",
     "Illegal segment name: `%s'",
     "Division by zero",
     "Modulo operation with zero",
index d8b52ae474cbaf8ee87eebbf635b8b3040ebca4f..326ce37be7a850e8e246e9c463adf9b1bf76a032 100644 (file)
@@ -37,7 +37,7 @@
 #define ERROR_H
 
 
-                  
+
 /* common */
 #include "attrib.h"
 
@@ -79,6 +79,7 @@ enum Errors {
     ERR_QUOTE_EXPECTED,
     ERR_COLON_EXPECTED,
     ERR_SEMICOLON_EXPECTED,
+    ERR_COMMA_EXPECTED,
     ERR_LPAREN_EXPECTED,
     ERR_RPAREN_EXPECTED,
     ERR_LBRACK_EXPECTED,
@@ -138,6 +139,7 @@ enum Errors {
     ERR_ILLEGAL_MODIFIER,
     ERR_ILLEGAL_QUALIFIER,
     ERR_ILLEGAL_STORAGE_CLASS,
+    ERR_ILLEGAL_ATTRIBUTE,
     ERR_ILLEGAL_SEG_NAME,
     ERR_DIV_BY_ZERO,
     ERR_MOD_BY_ZERO,
index 332c7589c89cbef985177093cc07e256cda1c706..d17b8f811f2898c6ac61a98c0927491b913d43d5 100644 (file)
 
 
 
-#include "../common/xmalloc.h"
-
+/* common */
+#include "xmalloc.h"
+         
+/* cc65 */
 #include "anonname.h"
 #include "asmlabel.h"
 #include "codegen.h"
index 72459a412b5c0a8e2b726bbd7b3b40bb3e62ccb8..0b2e0e709288729bec65f071a79fe8a2f3455a01 100644 (file)
@@ -44,6 +44,7 @@
 #include "cmdline.h"
 #include "fname.h"
 #include "target.h"
+#include "tgttrans.h"
 #include "version.h"
 #include "xmalloc.h"
 
@@ -173,7 +174,10 @@ static void SetSys (const char* Sys)
 
        default:
                    AbEnd ("Unknown target system type");
-    }
+    }      
+
+    /* Initialize the translation tables for the target system */
+    TgtTranslateInit ();
 }
 
 
index 09c5eb3c38c231d1d4e8f4c4fc08cea632a107be..5543986c43121dcec5cdf5c5992dee9824766dd6 100644 (file)
@@ -21,6 +21,7 @@ OBJS =        anonname.o      \
        cpu.o           \
        datatype.o      \
        declare.o       \
+       declattr.o      \
        error.o         \
        expr.o          \
        exprheap.o      \
index 36393448af6a580f66da48b522aa26a13d870e4e..ecd69783c652aa62ee5a6813c9c643c395df2df5 100644 (file)
@@ -76,6 +76,7 @@ OBJS =        anonname.obj    \
        cpu.obj         \
        datatype.obj    \
        declare.obj     \
+       declattr.obj    \
        error.obj       \
        expr.obj        \
        exprheap.obj    \
@@ -134,6 +135,7 @@ FILE compile.obj
 FILE cpu.obj
 FILE datatype.obj
 FILE declare.obj
+FILE declattr.obj
 FILE error.obj
 FILE expr.obj
 FILE exprheap.obj
index 47446de4df66eb4a61eb38854e241ddb6fd0cdf2..5249b71342122a72a73f98d6a423002e5e347cb8 100644 (file)
@@ -11,7 +11,7 @@
 #include <string.h>
 #include <errno.h>
 #include <ctype.h>
-         
+
 /* common */
 #include "tgttrans.h"
 
@@ -331,7 +331,7 @@ static void CharConst (void)
     nxtval  = SignExtendChar (TgtTranslateChar (C));
 
     /* Character constants have type int */
-    nxttype = type_int;                                
+    nxttype = type_int;
 }
 
 
@@ -806,6 +806,22 @@ void ConsumeSemi (void)
 
 
 
+void ConsumeComma (void)
+/* Check for a comma and skip it. */
+{
+    /* Try do be smart about typos... */
+    if (CurTok.Tok == TOK_COMMA) {
+       NextToken ();
+    } else {
+       Error (ERR_COMMA_EXPECTED);
+       if (CurTok.Tok == TOK_SEMI) {
+           NextToken ();
+       }
+    }
+}
+
+
+
 void ConsumeLParen (void)
 /* Check for a left parenthesis and skip it */
 {
index c3224a4bda3ff927487906347fce8a7207a79987..55c37de5cd5ff24dd9543630b8863d84dab409da 100644 (file)
@@ -198,6 +198,9 @@ void ConsumeColon (void);
 void ConsumeSemi (void);
 /* Check for a semicolon and skip it. */
 
+void ConsumeComma (void);
+/* Check for a comma and skip it. */
+
 void ConsumeLParen (void);
 /* Check for a left parenthesis and skip it */