|
|
1.1 ! root 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];
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.