(linenum→info "unix/slp.c:2238")

gauche/0.8.12/src/builtin-syms.scm

    1: ;;;
    2: ;;; Generates builtin symbols
    3: ;;;
    4: ;;; $Id: builtin-syms.scm,v 1.13 2007/09/13 12:30:27 shirok Exp $
    5: ;;;
    6: 
    7: (use srfi-1)
    8: (use util.list)
    9: (use gauche.cgen)
   10: (use gauche.parameter)
   11: (use gauche.sequence)
   12: 
   13: (define *unit*
   14:   (make <cgen-unit>
   15:     :name "builtin-syms"
   16:     :preamble "/* Generated from builtin-syms.scm $Revision: 1.13 $.  DO NOT EDIT */"
   17:     :pre-decl "#define LIBGAUCHE_BODY"
   18:     :c-file "builtin-syms.c"
   19:     :h-file "gauche/builtin-syms.h"
   20:     :init-prologue "static void init_builtin_syms(void)\n{"
   21:     :init-epilogue "}"
   22:     ))
   23: 
   24: (define (main args)
   25:   (parameterize ((cgen-current-unit *unit*))
   26: 
   27:     (cgen-extern "SCM_EXTERN ScmSymbol Scm_BuiltinSymbols[];")
   28:     (cgen-body "ScmSymbol Scm_BuiltinSymbols[] = {")
   29:     (cgen-body "#define ENTRY(s) \\"
   30:                "  {{ SCM_CLASS_STATIC_TAG(Scm_SymbolClass) }, \\"
   31:                "     SCM_STRING(s) }")
   32:     (cgen-init "#define INTERN(s, i) \\"
   33:                "Scm_HashTablePut(obtable, s, SCM_OBJ(&Scm_BuiltinSymbols[i]))")
   34:     
   35:     (for-each-with-index
   36:      (lambda (index entry)
   37:        (let* ((str (cgen-literal (symbol->string (car entry))))
   38:               (strref (cgen-cexpr str))
   39:               (macro-name (cadr entry)))
   40:          (cgen-extern (format "#define ~a SCM_OBJ(&Scm_BuiltinSymbols[~a])"
   41:                               macro-name index))
   42:          (cgen-body (format "ENTRY(~a)," strref))
   43:          (cgen-init (format "INTERN(~a, ~a);" strref index))
   44:          ))
   45:      (symbols))
   46: 
   47:     (cgen-body "#undef ENTRY")
   48:     (cgen-body "};")
   49:     (cgen-init "#undef INTERN")
   50:       
   51:     (cgen-emit-h (cgen-current-unit))
   52:     (cgen-emit-c (cgen-current-unit))
   53:     0))
   54: 
   55: ;; add predefined symbols below -------------------------------
   56: 
   57: (define (symbols)
   58:   '((quote                     SCM_SYM_QUOTE)
   59:     (quasiquote                SCM_SYM_QUASIQUOTE)
   60:     (unquote                   SCM_SYM_UNQUOTE)
   61:     (unquote-splicing          SCM_SYM_UNQUOTE_SPLICING)
   62:     (define                    SCM_SYM_DEFINE)
   63:     (define-constant           SCM_SYM_DEFINE_CONSTANT)
   64:     (define-in-module          SCM_SYM_DEFINE_IN_MODULE)
   65:     (lambda                    SCM_SYM_LAMBDA)
   66:     (if                        SCM_SYM_IF)
   67:     (set!                      SCM_SYM_SET)
   68:     (let                       SCM_SYM_LET)
   69:     (let*                      SCM_SYM_LET_STAR)
   70:     (letrec                    SCM_SYM_LETREC)
   71:     (begin                     SCM_SYM_BEGIN)
   72:     (when                      SCM_SYM_WHEN)
   73:     (unless                    SCM_SYM_UNLESS)
   74:     (and                       SCM_SYM_AND)
   75:     (or                        SCM_SYM_OR)
   76:     (cond                      SCM_SYM_COND)
   77:     (case                      SCM_SYM_CASE)
   78:     (else                      SCM_SYM_ELSE)
   79:     (=>                        SCM_SYM_YIELDS)
   80:     (do                        SCM_SYM_DO)
   81:     (delay                     SCM_SYM_DELAY)
   82:     (receive                   SCM_SYM_RECEIVE)
   83:     (define-module             SCM_SYM_DEFINE_MODULE)
   84:     (with-module               SCM_SYM_WITH_MODULE)
   85:     (select-module             SCM_SYM_SELECT_MODULE)
   86:     (current-module            SCM_SYM_CURRENT_MODULE)
   87:     (import                    SCM_SYM_IMPORT)
   88:     (export                    SCM_SYM_EXPORT)
   89:     (define-macro              SCM_SYM_DEFINE_MACRO)
   90:     (define-syntax             SCM_SYM_DEFINE_SYNTAX)
   91:     (let-syntax                SCM_SYM_LET_SYNTAX)
   92:     (letrec-syntax             SCM_SYM_LETREC_SYNTAX)
   93:     (%syntax-rules             SCM_SYM_SYNTAX_RULES_INT)
   94:     (syntax-rules              SCM_SYM_SYNTAX_RULES)
   95:     (...                       SCM_SYM_ELLIPSIS)
   96:     (%macroexpand              SCM_SYM_MACRO_EXPAND)
   97:     (%macroexpand-1            SCM_SYM_MACRO_EXPAND_1)
   98:     (%asm                      SCM_SYM_ASM)
   99: 
  100:     ;; class category
  101:     (builtin                   SCM_SYM_BUILTIN)
  102:     (abstract                  SCM_SYM_ABSTRACT)
  103:     (base                      SCM_SYM_BASE)
  104: 
  105:     ;; core
  106:     (*cond-features*           SCM_SYM_COND_FEATURES)
  107: 
  108:     ;; modules
  109:     (null                      SCM_SYM_NULL)
  110:     (scheme                    SCM_SYM_SCHEME)
  111:     (gauche                    SCM_SYM_GAUCHE)
  112:     (gauche.gf                 SCM_SYM_GAUCHE_GF)
  113:     (gauche.internal           SCM_SYM_GAUCHE_INTERNAL)
  114:     (user                      SCM_SYM_USER)
  115:     (|#|                       SCM_SYM_SHARP)
  116: 
  117:     ;; load
  118:     (*load-path*               SCM_SYM_LOAD_PATH)
  119:     (*load-next*               SCM_SYM_LOAD_NEXT)
  120:     (*load-history*            SCM_SYM_LOAD_HISTORY)
  121:     (*load-port*               SCM_SYM_LOAD_PORT)
  122:     (*load-suffixes*           SCM_SYM_LOAD_SUFFIXES)
  123:     (*dynamic-load-path*       SCM_SYM_DYNAMIC_LOAD_PATH)
  124: 
  125:     ;; reader, compiler, vm
  126:     (source-info               SCM_SYM_SOURCE_INFO)
  127:     (bind-info                 SCM_SYM_BIND_INFO)
  128:     (arg-info                  SCM_SYM_ARG_INFO)
  129:     (debug-print               SCM_SYM_DEBUG_PRINT)
  130:     (define-reader-ctor        SCM_SYM_DEFINE_READER_CTOR)
  131:     (string-interpolate        SCM_SYM_STRING_INTERPOLATE)
  132:     (big-endian                SCM_SYM_BIG_ENDIAN)    ;; for binary.io, uvector
  133:     (little-endian             SCM_SYM_LITTLE_ENDIAN) ;; ditto
  134:     (arm-little-endian         SCM_SYM_ARM_LITTLE_ENDIAN) ;; ditto
  135:     (%internal-eval            SCM_SYM_INTERNAL_EVAL)
  136:     (%internal-apply           SCM_SYM_INTERNAL_APPLY)
  137:     (%eval-before              SCM_SYM_EVAL_BEFORE)
  138:     (%eval-after               SCM_SYM_EVAL_AFTER)
  139:     (%toplevel                 SCM_SYM_TOPLEVEL)
  140:     (syntax                    SCM_SYM_SYNTAX)
  141:     (macro                     SCM_SYM_MACRO)
  142:     (inline                    SCM_SYM_INLINE)
  143: 
  144:     ;; regexp
  145:     (seq                       SCM_SYM_SEQ)
  146:     (seq-case                  SCM_SYM_SEQ_CASE)
  147:     (seq-uncase                SCM_SYM_SEQ_UNCASE)
  148:     (alt                       SCM_SYM_ALT)
  149:     (rep                       SCM_SYM_REP)
  150:     (rep-min                   SCM_SYM_REP_MIN)
  151:     (rep-while                 SCM_SYM_REP_WHILE)
  152:     (any                       SCM_SYM_ANY)
  153:     (bol                       SCM_SYM_BOL)
  154:     (eol                       SCM_SYM_EOL)
  155:     (wb                        SCM_SYM_WB)
  156:     (nwb                       SCM_SYM_NWB)
  157:     (comp                      SCM_SYM_COMP)
  158:     (*                         SCM_SYM_STAR)
  159:     (*?                        SCM_SYM_STARQ)
  160:     (*+                        SCM_SYM_STARP)
  161:     (+                         SCM_SYM_PLUS)
  162:     (+?                        SCM_SYM_PLUSQ)
  163:     (+?                        SCM_SYM_PLUSP)
  164:     (?                         SCM_SYM_QUESTION)
  165:     (??                        SCM_SYM_QUESTIONQ)
  166:     (?+                        SCM_SYM_QUESTIONP)
  167:     (backref                   SCM_SYM_BACKREF)
  168:     (once                      SCM_SYM_ONCE)
  169:     (reg                       SCM_SYM_REG)
  170:     (assert                    SCM_SYM_ASSERT)
  171:     (nassert                   SCM_SYM_NASSERT)
  172:     (lookbehind                SCM_SYM_LOOKBEHIND)
  173:     (nlookbehind               SCM_SYM_NLOOKBEHIND)
  174:     (cpat                      SCM_SYM_CPAT)
  175:     (open-paren                SCM_SYM_OPEN_PAREN)
  176:     (close-paren               SCM_SYM_CLOSE_PAREN)
  177: 
  178:     ;; system
  179:     (directory                 SCM_SYM_DIRECTORY)
  180:     (regular                   SCM_SYM_REGULAR)
  181:     (character                 SCM_SYM_CHARACTER)
  182:     (block                     SCM_SYM_BLOCK)
  183:     (fifo                      SCM_SYM_FIFO)
  184:     (symlink                   SCM_SYM_SYMLINK)
  185:     (socket                    SCM_SYM_SOCKET)
  186:     (time-utc                  SCM_SYM_TIME_UTC)
  187:     ))
  188: 
  189:                 
Syntax (Markdown)