languages.c
来自「<B>Digital的Unix操作系统VAX 4.2源码</B>」· C语言 代码 · 共 119 行
C
119 行
/*#@(#)languages.c 4.1 Ultrix 7/17/90*//* Copyright (c) 1982 Regents of the University of California */static char sccsid[] = "@(#)languages.c 1.3 5/18/83";static char rcsid[] = "$Header: languages.c,v 1.3 84/03/27 10:21:09 linton Exp $";/* * Language management. */#include "defs.h"#include "languages.h"#include "c.h"#include "pascal.h"#include "modula-2.h"#include "asm.h"#ifndef publictypedef struct Language *Language;typedef enum { L_PRINTDECL, L_PRINTVAL, L_TYPEMATCH, L_BUILDAREF, L_EVALAREF, L_MODINIT, L_HASMODULES, L_PASSADDR, L_ENDOP} LanguageOp;typedef LanguageOperation();Language primlang;#endifstruct Language { String name; String suffix; LanguageOperation *op[20]; Language next;};private Language head;/* * Initialize language information. * * The last language initialized will be the default one * for otherwise indistinguised symbols. */public language_init(){ primlang = language_define("$builtin symbols", ".?"); c_init(); fortran_init(); pascal_init(); modula2_init(); asm_init();}public Language findlanguage(suffix)String suffix;{ Language lang; lang = head; if (suffix != nil) { while (lang != nil and not streq(lang->suffix, suffix)) { lang = lang->next; } if (lang == nil) { lang = head; } } return lang;}public String language_name(lang)Language lang;{ return (lang == nil) ? "(nil)" : lang->name;}public Language language_define(name, suffix)String name;String suffix;{ Language p; p = new(Language); p->name = name; p->suffix = suffix; p->next = head; head = p; return p;}public language_setop(lang, op, operation)Language lang;LanguageOp op;LanguageOperation *operation;{ checkref(lang); assert(ord(op) < ord(L_ENDOP)); lang->op[ord(op)] = operation;}public LanguageOperation *language_op(lang, op)Language lang;LanguageOp op;{ LanguageOperation *o; checkref(lang); o = lang->op[ord(op)]; checkref(o); return o;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?