|
|
1.1 root 1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1984. */
2: /* $Header: b2syn.h,v 1.1 84/06/28 00:48:52 timo Exp $ */
3:
4: /* bsyn.h: syntax */
5:
6: /* General parsing routines */
7:
8: #define Eotc '\0'
9: #define Eouc '\036'
10: /* The character Eotc (end of text char) */
11: /* is placed after the last read character in txbuf. */
12: /* In general it follows a newline. */
13: /* If Eotc is encountered and more input is required, */
14: /* getline() is called. */
15: /* Eouc (end of unit char) is similar except the system */
16: /* never has to read beyond it. */
17:
18: #define Char(tx) (*(tx))
19: #define Eol(tx) (Char(tx) == '\n' || Char(tx) == Eouc)
20: #define Ceol(tx) (Char(tx) == '\\' || Eol(tx))
21: #define To_eol(tx) while (!Eol(tx)) tx++;
22: #define Mark_unit_end(tx) *tx= Eouc;
23:
24: #define Space(c) ((c) == ' ' || (c) == '\t')
25: #define Skipsp(tx) while(Space(Char(tx))) tx++
26:
27: #define Letter(c) ('a'<=c&&c<='z')
28: #define Cap(c) ('A'<=c&&c<='Z')
29: #define Dig(c) ('0'<=c&&c<='9')
30: #define Keymark(c) (Cap(c) || Dig(c) || c=='\'' || c=='"')
31: #define Tagmark(c) (Letter(c) || Dig(c) || c=='\'' || c=='"')
32: #define Keytagmark(c) (Keymark(c) || Letter(c))
33: #define Anytormark(c) (c=='+' || c=='-' || c=='*' || c=='/' || c=='#')
34: #define Montormark(c) (c=='~' || Anytormark(c))
35: #define Dyatormark(c) (Anytormark(c) || c=='^' || c=='<' || c=='>')
36:
37: /* Procedure upto(); */
38: /* Procedure need(); */
39: /* Procedure nothing(); */
40: /* Procedure thought(); */
41: /* Procedure findceol(); */
42: bool ateol();
43:
44: value findkw();
45: value keyword();
46: /* Procedure reqkw(); */
47: /* Procedure req(); */
48: value tag();
49:
50: bool atkw();
51: bool find();
52: intlet count();
53:
54: txptr fcol();
55: txptr lcol();
56: extern intlet alino;
57: extern txptr txstart, txend; /*TEMPORARY if possible*/
58:
59: /* Procedure getline(); */
60: intlet ilev();
61: /* Procedure veli(); */
62: /* Procedure inistreams(); */
63: /* Procedure re_streams(); */
64: /* Procedure open_stream(); */
65: /* Procedure close_stream(); */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.