-/* Copyright (c) 1982 Regents of the University of California */
+/*
+ * Copyright (c) 1983 Regents of the University of California.
+ * All rights reserved. The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)languages.c 5.1 (Berkeley) 5/31/85";
+#endif not lint
-static char sccsid[] = "@(#)languages.c 1.3 5/18/83";
+static char rcsid[] = "$Header: languages.c,v 1.5 84/12/26 10:39:49 linton Exp $";
/*
* Language management.
#include "languages.h"
#include "c.h"
#include "pascal.h"
+#include "modula-2.h"
#include "asm.h"
#ifndef public
+
typedef struct Language *Language;
typedef enum {
- L_PRINTDECL, L_PRINTVAL, L_TYPEMATCH, L_BUILDAREF, L_EVALAREF
+ L_PRINTDECL, L_PRINTVAL, L_TYPEMATCH, L_BUILDAREF, L_EVALAREF,
+ L_MODINIT, L_HASMODULES, L_PASSADDR,
+ L_ENDOP
} LanguageOp;
typedef LanguageOperation();
+
+Language primlang;
+
#endif
struct Language {
String name;
String suffix;
- LanguageOperation *op[10];
+ LanguageOperation *op[20];
Language next;
};
public language_init()
{
+ primlang = language_define("$builtin symbols", ".?");
c_init();
fortran_init();
pascal_init();
+ modula2_init();
asm_init();
}
LanguageOperation *operation;
{
checkref(lang);
- assert(ord(op) <= ord(L_EVALAREF));
+ assert(ord(op) < ord(L_ENDOP));
lang->op[ord(op)] = operation;
}