# 2.11BSD#431 - /usr/src/new/PORT/B/src/bed/lexi.c

##### Functions

    maycontinue       X
    maystart          X

##### Variables

    digits            X
    lowercase         X
    uppercase         X

##### Macros

    NCHCLASS          X

       1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1984. */
       2: static char rcsid[] = "$Header: lexi.c,v 2.4 84/10/26 12:01:34 guido Exp $";
       3:
       4: /*
       5:  * B editor -- Lexical elements (identifiers, keywords, numbers etc.)
       6:  */
       7:
       8: #include <ctype.h>
       9:
      10: #include "b.h"
      11: #include "bobj.h"
      12: #include "node.h"
      13: #include "gram.h"
      14:
      15:
      16: /*
      17:  * Table defining lexical elements.
      18:  *
      19:  * ********** Indexed by (symbol-LEXICAL).
      20:  */
      21:
      22: Hidden char lowercase[] = "0123456789'\"abcdefghijklmnopqrstuvwxyz";
      23: Hidden char uppercase[] = "0123456789'\"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
      24: Hidden char digits[] = "0123456789";
      25:
      26: Hidden struct {
      27:     string l_start;
      28:     string l_continue;
      29: } chclass[] = {
      30:     {lowercase+12, lowercase,}, /* IDENT */
      31:     {uppercase+12, uppercase,}, /* KEYWORD */
      32:     {digits, digits,}, /* NUMBER */
      33:     {"\\", "^",}, /* COMMENT */
      34:     {"^`'", "^`'",}, /* TEXT1 */
      35:     {"^`\"", "^`\"",}, /* TEXT2 */
      36:     {".+-*/#^~@|<=>", "",}, /* OPERATORS */
      37:     {"^", "^",}, /* RAW_INPUT */
      38:     {"", "",}, /* SUGGESTION (dummy) */
      39: };
      40:
      41: #define NCHCLASS (sizeof(chclass)/sizeof(chclass[0]))
      42:
      43:
      44: /*
      45:  * Test whether character `c' may start a lexical element with
      46:  * symbolic name `lex'.
      47:  */
      48:
      49: Visible bool
      50: maystart(c, lex)
      51:     char c;
      52:     int lex;
      53: {
      54:     string cp;
      55:
      56:     lex -= LEXICAL;
      57:     Assert(lex >= 0);
      58:     if (lex >= NCHCLASS || !isascii(c) || c != ' ' && !isprint(c))
      59:         return No;
      60:     cp = chclass[lex].l_start;
      61:     if (*cp == '^')
      62:         return !index(cp+1, c);
      63:     return index(cp, c) != 0;
      64: }
      65:
      66:
      67: /*
      68:  * Test whether character `c' may continue a lexical element with
      69:  * symbolic name `lex'.
      70:  */
      71:
      72: Visible bool
      73: maycontinue(c, lex)
      74:     char c;
      75:     int lex;
      76: {
      77:     string cp;
      78:
      79:     lex -= LEXICAL;
      80:     Assert(lex >= 0);
      81:     if (lex >= NCHCLASS || !isascii(c) || c != ' ' && !isprint(c))
      82:         return No;
      83:     cp = chclass[lex].l_continue;
      84:     if (*cp == '^')
      85:         return !index(cp+1, c);
      86:     return index(cp, c) != 0;
      87: }

#### Defined functions

maycontinue defined in line 72; used 3 times

- in /usr/src/new/PORT/B/src/bed/inse.c line 106-109(3)

maystart defined in line 49; used 5 times

- in /usr/src/new/PORT/B/src/bed/inse.c line 107-109(3)
- in /usr/src/new/PORT/B/src/bed/mkboot.c line 198, 224

#### Defined variables

digits defined in line 24; used 2 times

- in line 32(2)

lowercase defined in line 22; used 2 times

- in line 30(2)

rcsid defined in line 2; never used
uppercase defined in line 23; used 2 times

- in line 31(2)

#### Defined macros

NCHCLASS defined in line 41; used 2 times

- in line 58, 81

Last modified: 1985-08-27 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 520 |