1: /* Declarations having to do with GNU Emacs syntax tables.
   2:    Copyright (C) 1985 Richard M. Stallman.
   3: 
   4: This file is part of GNU Emacs.
   5: 
   6: GNU Emacs is distributed in the hope that it will be useful,
   7: but WITHOUT ANY WARRANTY.  No author or distributor
   8: accepts responsibility to anyone for the consequences of using it
   9: or for whether it serves any particular purpose or works at all,
  10: unless he says so in writing.  Refer to the GNU Emacs General Public
  11: License for full details.
  12: 
  13: Everyone is granted permission to copy, modify and redistribute
  14: GNU Emacs, but only under the conditions described in the
  15: GNU Emacs General Public License.   A copy of this license is
  16: supposed to have been given to you along with GNU Emacs so you
  17: can know your rights and responsibilities.  It should be in a
  18: file named COPYING.  Among other things, the copyright notice
  19: and this notice must be preserved on all copies.  */
  20: 
  21: 
  22: extern Lisp_Object Qsyntax_table_p;
  23: extern Lisp_Object Fsyntax_table_p (), Fsyntax_table (), Fset_syntax_table ();
  24: 
  25: extern Lisp_Object Vstandard_syntax_table;
  26: 
  27: /* A syntax table is a Lisp vector of length 0400, whose elements are integers.
  28: 
  29: The low 8 bits of the integer is a code, as follows:
  30: */
  31: 
  32: enum syntaxcode
  33:   {
  34:     Swhitespace, /* for a whitespace character */
  35:     Spunct,  /* for random punctuation characters */
  36:     Sword,   /* for a word constituent */
  37:     Ssymbol,     /* symbol constituent but not word constituent */
  38:     Sopen,   /* for a beginning delimiter */
  39:     Sclose,      /* for an ending delimiter */
  40:     Squote,  /* for a prefix character like Lisp ' */
  41:     Sstring,     /* for a string-grouping character like Lisp " */
  42:     Smath,   /* for delimiters like $ in Tex. */
  43:     Sescape,     /* for a character that begins a C-style escape */
  44:     Scharquote,  /* for a character that quotes the following character */
  45:     Scomment,    /* for a comment-starting character */
  46:     Sendcomment, /* for a comment-ending character */
  47:     Smax     /* Upper bound on codes that are meaningful */
  48:   };
  49: 
  50: #define SYNTAX(c) \
  51:   ((enum syntaxcode) (XINT (bf_cur->syntax_table_v->contents[c]) & 0377))
  52: 
  53: /* The next 8 bits of the number is a character,
  54:  the matching delimiter in the case of Sopen or Sclose. */
  55: 
  56: #define SYNTAX_MATCH(c) \
  57:   ((XINT (bf_cur->syntax_table_v->contents[c]) >> 8) & 0377)
  58: 
  59: /* Then there are four single-bit flags that have the following meanings:
  60:   1. This character is the first of a two-character comment-start sequence.
  61:   2. This character is the second of a two-character comment-start sequence.
  62:   3. This character is the first of a two-character comment-end sequence.
  63:   4. This character is the second of a two-character comment-end sequence.
  64:  Note that any two-character sequence whose first character has flag 1
  65:   and whose second character has flag 2 will be interpreted as a comment start. */
  66: 
  67: #define SYNTAX_COMSTART_FIRST(c) \
  68:   ((XINT (bf_cur->syntax_table_v->contents[c]) >> 16) & 1)
  69: 
  70: #define SYNTAX_COMSTART_SECOND(c) \
  71:   ((XINT (bf_cur->syntax_table_v->contents[c]) >> 17) & 1)
  72: 
  73: #define SYNTAX_COMEND_FIRST(c) \
  74:   ((XINT (bf_cur->syntax_table_v->contents[c]) >> 18) & 1)
  75: 
  76: #define SYNTAX_COMEND_SECOND(c) \
  77:   ((XINT (bf_cur->syntax_table_v->contents[c]) >> 19) & 1)
  78: 
  79: /* This array, indexed by a character, contains the syntax code which that
  80:  character signifies (as a char).  For example,
  81:  (enum syntaxcode) syntax_spec_code['w'] is Sword. */
  82: 
  83: extern char syntax_spec_code[0400];

Defined enum's

syntaxcode defined in line 32; used 24 times

Defined macros

SYNTAX_COMEND_FIRST defined in line 73; used 3 times
SYNTAX_COMEND_SECOND defined in line 76; used 3 times
SYNTAX_COMSTART_FIRST defined in line 67; used 3 times
SYNTAX_COMSTART_SECOND defined in line 70; used 3 times
SYNTAX_MATCH defined in line 56; never used

Usage of this include

Last modified: 1985-11-23
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 592
Valid CSS Valid XHTML 1.0 Strict