+#ifndef NORSCID
+static char rcs_id[] = "$Header$" ;
+#endif
+
/* This file contains the new lexical analizer */
typedef struct {
char *name;
| exprlist ',' expression { typetable[$1]=$3;$$=$1+1;}
%%
+#ifndef NORCSID
+static char rcs_id[] = "$Header$" ;
+#endif
#include "lex.c"
#include "bem.h"
+#ifndef NORSCID
+static char rcs_id[] = "$Header$" ;
+static char rcs_bem[] = RCS_BEM ;
+static char rcs_symb[] = RCS_SYMB ;
+static char rcs_graph[] = RCS_GRAPH ;
+#endif
+
/* Author: M.L. Kersten
**
** This is the main routine for the BASIC-EM frontend.
#include "graph.h"
#include "y.tab.h"
+#ifndef NORCSID
+# define RCS_BEM "$Header$"
+#endif
+
#define POINTERSIZE 4
#define MAXINT 32768
#define MININT -32767
#include "bem.h"
+#ifndef NORSCID
+static char rcs_id[] = "$Header$" ;
+#endif
+
+
/* compile the next program in the list */
FILE *yyin;
#include "bem.h"
+#ifndef NORSCID
+static char rcs_id[] = "$Header$" ;
+#endif
+
+
/* Here you find all routines to evaluate expressions and
generate code for assignment statements
*/
#include "bem.h"
+#ifndef NORSCID
+static char rcs_id[] = "$Header$" ;
+#endif
+
+
/* expression types for predefined functions are assembled */
int typetable[10];
int exprlimit;
#include "bem.h"
+#ifndef NORSCID
+static char rcs_id[] = "$Header$" ;
+#endif
+
+
/* Here we find all routines dealing with pure EM code generation */
static int emlabel=1;
#include "bem.h"
+#ifndef NORSCID
+static char rcs_id[] = "$Header$" ;
+#endif
+
+
List *forwardlabel=0;
/* Line management is handled here */
#
+
+#ifndef NORCSID
+# define RCS_GRAPH "$Header$"
+#endif
+
/*
** The control graph is represented by a multi-list structure.
** The em code is stored on the em intermediate file already
#include "bem.h"
+#ifndef NORSCID
+static char rcs_id[] = "$Header$" ;
+#endif
+
+
/* generate temporary files etc */
FILE *emfile;
#include "bem.h"
+#ifndef NORSCID
+static char rcs_id[] = "$Header$" ;
+#endif
+
int listing; /* -l listing required */
int debug; /* -d compiler debugging */
int wflag=1; /* -w no warnings */
#include "bem.h"
+#ifndef NORSCID
+static char rcs_id[] = "$Header$" ;
+#endif
+
/* Split the intermediate code into procedures.
This is necessary to make the EM code fit on
smaller machines. (for the Peephole optimizer!)
#include "bem.h"
+
+#ifndef NORSCID
+static char rcs_id[] = "$Header$" ;
+#endif
+
/* Symboltable management module */
int deftype[128]; /* default type declarer */
+#ifndef NORCSID
+# define RCS_SYMB "$Header$"
+#endif
+
#define NIL 0
#define TRUE 1
#define FALSE 0
#include "bem.h"
+#ifndef NORSCID
+static char rcs_id[] = "$Header$" ;
+#endif
+
#define abs(X) (X>=0?X:-X)
/* Miscelaneous routines can be found here */
#include "bem.h"
+#ifndef NORSCID
+static char rcs_id[] = "$Header$" ;
+#endif
+
/* Author: M.L. Kersten
** yywrap is called upon encountering endoffile on yyin.
** when more input files are present, it moves to the next