/* cc65 */
#include "asmlabel.h"
+#include "asmstmt.h"
#include "codegen.h"
#include "declare.h"
#include "error.h"
#include "function.h"
#include "global.h"
#include "incpath.h"
+#include "input.h"
#include "litpool.h"
#include "macrotab.h"
#include "pragma.h"
/*****************************************************************************/
-/* Code */
+/* Code */
/*****************************************************************************/
int comma;
SymEntry* Entry;
- NextToken (); /* "prime" the pump */
+ /* Go... */
NextToken ();
- while (curtok != TOK_CEOF) {
+ NextToken ();
+
+ /* Parse until end of input */
+ while (CurTok.Tok != TOK_CEOF) {
DeclSpec Spec;
Declaration Decl;
int NeedStorage;
/* Check for empty statements */
- if (curtok == TOK_SEMI) {
+ if (CurTok.Tok == TOK_SEMI) {
NextToken ();
continue;
}
/* Check for an ASM statement (which is allowed also on global level) */
- if (curtok == TOK_ASM) {
- doasm ();
+ if (CurTok.Tok == TOK_ASM) {
+ AsmStatement ();
ConsumeSemi ();
continue;
}
/* Check for a #pragma */
- if (curtok == TOK_PRAGMA) {
+ if (CurTok.Tok == TOK_PRAGMA) {
DoPragma ();
continue;
}
}
/* Check if this is only a type declaration */
- if (curtok == TOK_SEMI) {
+ if (CurTok.Tok == TOK_SEMI) {
CheckEmptyDecl (&Spec);
NextToken ();
continue;
unsigned Size = SizeOf (Decl.Type);
/* Allow initialization */
- if (curtok == TOK_ASSIGN) {
+ if (CurTok.Tok == TOK_ASSIGN) {
/* We cannot initialize types of unknown size, or
* void types in non ANSI mode.
}
/* Check for end of declaration list */
- if (curtok == TOK_COMMA) {
+ if (CurTok.Tok == TOK_COMMA) {
NextToken ();
comma = 1;
} else {
/* Function */
if (!comma) {
- if (curtok == TOK_SEMI) {
+ if (CurTok.Tok == TOK_SEMI) {
/* Prototype only */
NextToken ();
-void Compile (void)
+void Compile (const char* FileName)
/* Top level compile routine. Will setup things and call the parser. */
{
char* Path;
}
/* Add macros that are always defined */
- AddNumericMacro ("__CC65__", (VER_MAJOR * 0x100) + (VER_MINOR * 0x10) + VER_PATCH);
+ DefineNumericMacro ("__CC65__", (VER_MAJOR * 0x100) + (VER_MINOR * 0x10) + VER_PATCH);
/* Strict ANSI macro */
if (ANSI) {
- AddNumericMacro ("__STRICT_ANSI__", 1);
+ DefineNumericMacro ("__STRICT_ANSI__", 1);
}
/* Optimization macros */
if (Optimize) {
- AddNumericMacro ("__OPT__", 1);
+ DefineNumericMacro ("__OPT__", 1);
if (FavourSize == 0) {
- AddNumericMacro ("__OPT_i__", 1);
+ DefineNumericMacro ("__OPT_i__", 1);
}
if (EnableRegVars) {
- AddNumericMacro ("__OPT_r__", 1);
+ DefineNumericMacro ("__OPT_r__", 1);
}
if (InlineStdFuncs) {
- AddNumericMacro ("__OPT_s__", 1);
+ DefineNumericMacro ("__OPT_s__", 1);
}
}
/* Generate the code generator preamble */
g_preamble ();
+ /* Open the input file */
+ OpenMainFile (FileName);
+
/* Ok, start the ball rolling... */
Parse ();