[ Syntax Settings | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]

# set_chtab(+Char, +Class)

Sets the lexical class of character Char to class Class, this provides an interface to ECLiPSe 's lexical analyser.

Char
  Integer in range 0 to 255.
Class
  Atom indicating the character class.

## Description

Changes the lexical class of a given character. This is especially useful for implementing compatibility packages. The possible character classes which a character may have been given are shown below.

Note It is not recommended to change the class of the special characters, since in some cases it might make it impossible to correctly parse Prolog terms.

The following table lists the character classes and the default corresponding characters:

     Class          Default member characters
    ---------------------------------------------------------
     upper_case     all upper case letters
     underline      _
     lower_case     all lower case letters
     digit          digits
     blank_space    space, tab and nonprintable characters
     end_of_line    newline (NL)
     atom_quote     '
     string_quote   "
     list_quote
     radix
     ascii
     solo           ! ;
     special        ( [ { ) ] } , |
     line_comment   %
     escape         \
     first_comment  /
     second_comment *
     symbol         # + - . : < = > ? @ ^ ` ~ & $
     terminator

### Modes and Determinism

- set_chtab(+, +) is det

### Modules

This predicate is sensitive to its module context (tool predicate, see @/2).

### Exceptions

(4) instantiation fault
  Char and/or Class are not instantiated.
(5) type error
  Char is not an integer in the range 0 to 255.
(6) out of range
  Class is not a valid lexical class.

## Examples

    Success:
       % The following example illustrates the use
       % of set_chtab/2 to redefine the class of the
       % dollar symbol.
       %
       [eclipse]: X = $a.
                     ^ (here?)
       syntax error: postfix/infix operator expected
       [eclipse]: set_chtab(0'$, lower_case).

       yes.
       [eclipse]: X = $a.

       X = $a
       yes.
       [eclipse]:

    Error:
       set_chtab("a",symbol).       (Error 5)
       set_chtab(97,fred).          (Error 6)

## See Also

local / 1, get_chtab / 2, read_token / 2, read_token / 3