Initial import of the CDE 2.1.30 sources from the Open Group.
[oweals/cde.git] / cde / lib / DtSearch / langmap.c
1 /*
2  *   COMPONENT_NAME: austext
3  *
4  *   FUNCTIONS: none
5  *
6  *   ORIGINS: 27
7  *
8  *
9  *   (C) COPYRIGHT International Business Machines Corp. 1996
10  *   All Rights Reserved
11  *   Licensed Materials - Property of IBM
12  *   US Government Users Restricted Rights - Use, duplication or
13  *   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
14  */
15 /******************** LANGMAP.C ********************
16  * $XConsortium: langmap.c /main/3 1996/05/07 13:38:58 drk $
17  * January 1996.
18  * Contains European single byte character maps for
19  * teskey parser and Paice/Porter stemmers.
20  * Formerly coded in lang.c.
21  *
22  * Contains two code pages: ascii and iso-latin-1.
23  * From F. N. Teskey (Principles of Text Processing, Elis Horwood Ltd,
24  * 1982), a word is "a finite sequence of concordable and optionally
25  * concordable characters delimited by either a nonconcordable character or an
26  * optionally concordable character adjacent to a nonconcordable or optionally
27  * concordable one."  Optionally concordable characters are symbols like
28  * "./-" which may or may not occur within words (TCP/IP, file.dos, co-op).
29  * Concordable characters are alphas and numbers.
30  * Nonconcordables are whitespace, punctuation, control chars, etc.
31  *
32  * Lowest order byte = 'uppercase' of indexing char.
33  * Next higher order byte = mask for teskey parse bits.
34  * 
35  * $Log$
36  * Revision 1.3  1996/03/13  22:58:28  miker
37  * Added prolog.
38  *
39  * Revision 1.2  1996/03/05  16:35:04  miker
40  * Changed usage of WHITESPACE to replace isspace() function calls.
41  *
42  * Revision 1.1  1996/02/01  19:15:52  miker
43  * Initial revision
44  */
45 #include "SearchP.h"
46
47 /************************************************/
48 /*                                              */
49 /*               latin_charmap                  */
50 /*                                              */
51 /************************************************/
52 /* Teskey character map for iso-latin-1 character set. */
53 int     latin_charmap [] = {
54      NON_CONCORD |               0      /* NULL, Teskey EOT char */
55     ,NON_CONCORD |               1      /* CTRL-A */
56     ,NON_CONCORD |               2      /* CTRL-B */
57     ,NON_CONCORD |               3      /* CTRL-C */
58     ,NON_CONCORD |               4      /* CTRL-D */
59     ,NON_CONCORD |               5      /* CTRL-E */
60     ,NON_CONCORD |               6      /* CTRL-F */
61     ,NON_CONCORD |               7      /* BEL \a */
62     ,NON_CONCORD |               8      /* BS  \b */
63     ,NON_CONCORD | WHITESPACE |  9      /* TAB \t */
64     ,NON_CONCORD | WHITESPACE | 10      /* LF  \n */ 
65     ,NON_CONCORD | WHITESPACE | 11      /* VT  \v */
66     ,NON_CONCORD | WHITESPACE | 12      /* FF  \f */
67     ,NON_CONCORD | WHITESPACE | 13      /* CR  \r */
68     ,NON_CONCORD |              14      /* CTRL-N */
69     ,NON_CONCORD |              15      /* CTRL-O */
70     ,NON_CONCORD |              16      /* CTRL-P */
71     ,NON_CONCORD |              17      /* CTRL-Q */
72     ,NON_CONCORD |              18      /* CTRL-R */
73     ,NON_CONCORD |              19      /* CTRL-S */
74     ,NON_CONCORD |              20      /* CTRL-T */
75     ,NON_CONCORD |              21      /* CTRL-U */
76     ,NON_CONCORD |              22      /* CTRL-V */
77     ,NON_CONCORD |              23      /* CTRL-W */
78     ,NON_CONCORD |              24      /* CTRL-X */
79     ,NON_CONCORD |              25      /* CTRL-Y */
80     ,NON_CONCORD |              26      /* CTRL-Z (EOF) */
81     ,NON_CONCORD |              27      /* ESC */
82     ,NON_CONCORD |              28
83     ,NON_CONCORD |              29
84     ,NON_CONCORD |              30
85     ,NON_CONCORD |              31
86     ,NON_CONCORD | WHITESPACE | 32      /* SPACE (blank) */
87     ,NON_CONCORD |              33      /* ! */
88     ,NON_CONCORD |              34      /* " */
89     ,NON_CONCORD |              35      /* # */
90     ,NON_CONCORD |              36      /* $ */
91     ,NON_CONCORD |              37      /* % */
92     ,NON_CONCORD |              38      /* & */
93     ,NON_CONCORD |              39      /* ' (apostrophe) */
94     ,NON_CONCORD |              40      /* ( */
95     ,NON_CONCORD |              41      /* ) */
96     ,NON_CONCORD |              42      /* * */
97     ,NON_CONCORD |              43      /* + */
98     ,NON_CONCORD |              44      /* , (comma) */
99
100     ,OPT_CONCORD |              45      /* - (dash) */
101     ,OPT_CONCORD |              46      /* . (period) */
102     ,OPT_CONCORD |              47      /* / (slash) */
103
104     ,CONCORDABLE | NUMERAL |    48      /* 0 */
105     ,CONCORDABLE | NUMERAL |    49      /* 1 */
106     ,CONCORDABLE | NUMERAL |    50      /* 2 */
107     ,CONCORDABLE | NUMERAL |    51      /* 3 */
108     ,CONCORDABLE | NUMERAL |    52      /* 4 */
109     ,CONCORDABLE | NUMERAL |    53      /* 5 */
110     ,CONCORDABLE | NUMERAL |    54      /* 6 */
111     ,CONCORDABLE | NUMERAL |    55      /* 7 */
112     ,CONCORDABLE | NUMERAL |    56      /* 8 */
113     ,CONCORDABLE | NUMERAL |    57      /* 9 */
114
115     ,NON_CONCORD |              58      /* : */
116     ,NON_CONCORD |              59      /* ; */
117     ,NON_CONCORD |              60      /* < */
118     ,NON_CONCORD |              61      /* = */
119     ,NON_CONCORD |              62      /* > */
120     ,NON_CONCORD |              63      /* ? */
121     ,NON_CONCORD |              64      /* @ */
122
123     ,CONCORDABLE | VOWEL |      65      /* A */
124     ,CONCORDABLE | CONSONANT |  66      /* B */
125     ,CONCORDABLE | CONSONANT |  67      /* C */
126     ,CONCORDABLE | CONSONANT |  68      /* D */
127     ,CONCORDABLE | VOWEL |      69      /* E */
128     ,CONCORDABLE | CONSONANT |  70      /* F */
129     ,CONCORDABLE | CONSONANT |  71      /* G */
130     ,CONCORDABLE | CONSONANT |  72      /* H */
131     ,CONCORDABLE | VOWEL |      73      /* I */
132     ,CONCORDABLE | CONSONANT |  74      /* J */
133     ,CONCORDABLE | CONSONANT |  75      /* K */
134     ,CONCORDABLE | CONSONANT |  76      /* L */
135     ,CONCORDABLE | CONSONANT |  77      /* M */
136     ,CONCORDABLE | CONSONANT |  78      /* N */
137     ,CONCORDABLE | VOWEL |      79      /* O */
138     ,CONCORDABLE | CONSONANT |  80      /* P */
139     ,CONCORDABLE | CONSONANT |  81      /* Q */
140     ,CONCORDABLE | CONSONANT |  82      /* R */
141     ,CONCORDABLE | CONSONANT |  83      /* S */
142     ,CONCORDABLE | CONSONANT |  84      /* T */
143     ,CONCORDABLE | VOWEL |      85      /* U */
144     ,CONCORDABLE | CONSONANT |  86      /* V */
145     ,CONCORDABLE | CONSONANT |  87      /* W */
146     ,CONCORDABLE | CONSONANT |  88      /* X */
147     ,CONCORDABLE | CONSONANT |  89      /* Y */
148     ,CONCORDABLE | CONSONANT |  90      /* Z */
149
150     ,NON_CONCORD |              91      /* [ */
151     ,NON_CONCORD |              92      /* \ (backslash) */
152     ,NON_CONCORD |              93      /* ] */
153     ,NON_CONCORD |              94      /* ^ */
154
155     ,OPT_CONCORD |              95      /* _ (underscore) */
156
157     ,NON_CONCORD |              96      /* ` (grave accent) */
158
159     ,CONCORDABLE | VOWEL |      'A'     /*  97 = lowercase a */
160     ,CONCORDABLE | CONSONANT |  'B'     /*  98 = lowercase b */
161     ,CONCORDABLE | CONSONANT |  'C'     /*  99 = lowercase c */
162     ,CONCORDABLE | CONSONANT |  'D'     /* 100 = lowercase d */
163     ,CONCORDABLE | VOWEL |      'E'     /* 101 = lowercase e */
164     ,CONCORDABLE | CONSONANT |  'F'     /* 102 = lowercase f */
165     ,CONCORDABLE | CONSONANT |  'G'     /* 103 = lowercase g */
166     ,CONCORDABLE | CONSONANT |  'H'     /* 104 = lowercase h */
167     ,CONCORDABLE | VOWEL |      'I'     /* 105 = lowercase i */
168     ,CONCORDABLE | CONSONANT |  'J'     /* 106 = lowercase j */
169     ,CONCORDABLE | CONSONANT |  'K'     /* 107 = lowercase k */
170     ,CONCORDABLE | CONSONANT |  'L'     /* 108 = lowercase l */
171     ,CONCORDABLE | CONSONANT |  'M'     /* 109 = lowercase m */
172     ,CONCORDABLE | CONSONANT |  'N'     /* 110 = lowercase n */
173     ,CONCORDABLE | VOWEL |      'O'     /* 111 = lowercase o */
174     ,CONCORDABLE | CONSONANT |  'P'     /* 112 = lowercase p */
175     ,CONCORDABLE | CONSONANT |  'Q'     /* 113 = lowercase q */
176     ,CONCORDABLE | CONSONANT |  'R'     /* 114 = lowercase r */
177     ,CONCORDABLE | CONSONANT |  'S'     /* 115 = lowercase s */
178     ,CONCORDABLE | CONSONANT |  'T'     /* 116 = lowercase t */
179     ,CONCORDABLE | VOWEL |      'U'     /* 117 = lowercase u */
180     ,CONCORDABLE | CONSONANT |  'V'     /* 118 = lowercase v */
181     ,CONCORDABLE | CONSONANT |  'W'     /* 119 = lowercase w */
182     ,CONCORDABLE | CONSONANT |  'X'     /* 120 = lowercase x */
183     ,CONCORDABLE | CONSONANT |  'Y'     /* 121 = lowercase y */
184     ,CONCORDABLE | CONSONANT |  'Z'     /* 122 = lowercase z */
185
186     ,NON_CONCORD |              123     /* { */
187     ,NON_CONCORD |              124     /* | (virgule, vertical line) */
188     ,NON_CONCORD |              125     /* } */
189     ,NON_CONCORD |              126     /* ~ */
190     ,NON_CONCORD |              127     /* DEL */
191
192     ,NON_CONCORD |              128
193     ,NON_CONCORD |              129
194     ,NON_CONCORD |              130
195     ,NON_CONCORD |              131
196     ,NON_CONCORD |              132
197     ,NON_CONCORD |              133
198     ,NON_CONCORD |              134
199     ,NON_CONCORD |              135
200
201     ,NON_CONCORD |              136
202     ,NON_CONCORD |              137
203     ,NON_CONCORD |              138
204     ,NON_CONCORD |              139
205     ,NON_CONCORD |              140
206     ,NON_CONCORD |              141
207     ,NON_CONCORD |              142
208     ,NON_CONCORD |              143
209
210     ,NON_CONCORD |              144
211     ,NON_CONCORD |              145
212     ,NON_CONCORD |              146
213     ,NON_CONCORD |              147
214     ,NON_CONCORD |              148
215     ,NON_CONCORD |              149
216     ,NON_CONCORD |              150
217     ,NON_CONCORD |              151
218
219     ,NON_CONCORD |              152
220     ,NON_CONCORD |              153
221     ,NON_CONCORD |              154
222     ,NON_CONCORD |              155
223     ,NON_CONCORD |              156
224     ,NON_CONCORD |              157
225     ,NON_CONCORD |              158
226     ,NON_CONCORD |              159
227
228     ,CONCORDABLE |              160     /* RSP, 'Reqd SPace' (nonbreak?) */ 
229     ,NON_CONCORD |              161     /* inverted exclamation point */
230     ,NON_CONCORD |              162     /* cent sign, C slash */
231     ,NON_CONCORD |              163     /* pounds sterling */
232     ,NON_CONCORD |              164     /* generic international currency */
233     ,NON_CONCORD |              165     /* yen */
234     ,NON_CONCORD |              166     /* broken vertical line */
235     ,NON_CONCORD |              167     /* section/paragraph symbol */
236
237     ,NON_CONCORD |              168     /* diaeresis-umlaut */
238     ,NON_CONCORD |              169     /* copyright symbol, c circle */
239     ,NON_CONCORD |              170     /* 'a' small superscript, feminine */
240     ,NON_CONCORD |              171     /* left angle quotes */
241     ,NON_CONCORD |              172     /* logical not, eol */
242     ,CONCORDABLE |              173     /* SHY, 'Syllable HYphen' (nonbreak?) */
243     ,NON_CONCORD |              174     /* registered trademark, r circle */
244     ,NON_CONCORD |              175     /* overline */
245
246     ,NON_CONCORD |              176     /* degree symbol, xB0 */
247     ,NON_CONCORD |              177     /* plus-minus symbol */
248     ,NON_CONCORD |              178     /* squared, '2' superscript */
249     ,NON_CONCORD |              179     /* cubed, '3' superscript */
250     ,NON_CONCORD |              180     /* acute accent */
251     ,NON_CONCORD |              181     /* micro symbol (greek mu) */
252     ,NON_CONCORD |              182     /* paragraph symbol */
253     ,NON_CONCORD |              183     /* middle dot */
254
255     ,NON_CONCORD |              184     /* cedilla */
256     ,NON_CONCORD |              185     /* '1' superscript */
257     ,NON_CONCORD |              186     /* 'o' small superscript, masculine */
258     ,NON_CONCORD |              187     /* right angle quotes */
259     ,NON_CONCORD |              188     /* one fourth */
260     ,NON_CONCORD |              189     /* one half */
261     ,NON_CONCORD |              190     /* three fourths */
262     ,NON_CONCORD |              191     /* inverted question mark */
263
264     ,CONCORDABLE | VOWEL |      192     /* uppercase 'A' grave accent, xC0 */
265     ,CONCORDABLE | VOWEL |      193     /* uppercase 'A' acute accent */
266     ,CONCORDABLE | VOWEL |      194     /* uppercase 'A' circumflex */
267     ,CONCORDABLE | VOWEL |      195     /* uppercase 'A' tilde */
268     ,CONCORDABLE | VOWEL |      196     /* uppercase 'A' diaeresis-umlaut */
269     ,CONCORDABLE | VOWEL |      197     /* uppercase 'A' overcircle */
270     ,CONCORDABLE | VOWEL |      198     /* uppercase 'AE' diphthong */
271     ,CONCORDABLE | CONSONANT |  199     /* uppercase 'C' cedilla */
272
273     ,CONCORDABLE | VOWEL |      200     /* uppercase 'E' grave accent */
274     ,CONCORDABLE | VOWEL |      201     /* uppercase 'E' acute accent */
275     ,CONCORDABLE | VOWEL |      202     /* uppercase 'E' circumflex */
276     ,CONCORDABLE | VOWEL |      203     /* uppercase 'E' diaeresis-umlaut */
277     ,CONCORDABLE | VOWEL |      204     /* uppercase 'I' grave accent */
278     ,CONCORDABLE | VOWEL |      205     /* uppercase 'I' acute accent */
279     ,CONCORDABLE | VOWEL |      206     /* uppercase 'I' circumflex */
280     ,CONCORDABLE | VOWEL |      207     /* uppercase 'I' diaeresis-umlaut */
281
282     ,CONCORDABLE | CONSONANT |  208     /* uppercase 'D' stroke (eth), xD0 */
283     ,CONCORDABLE | CONSONANT |  209     /* uppercase 'N' tilde */
284     ,CONCORDABLE | VOWEL |      210     /* uppercase 'O' grave accent */
285     ,CONCORDABLE | VOWEL |      211     /* uppercase 'O' acute accent */
286     ,CONCORDABLE | VOWEL |      212     /* uppercase 'O' circumflex */
287     ,CONCORDABLE | VOWEL |      213     /* uppercase 'O' tilde */
288     ,CONCORDABLE | VOWEL |      214     /* uppercase 'O' diaeresis-umlaut */
289     ,NON_CONCORD |              215     /* multiply sign 'x' */
290
291     ,CONCORDABLE | VOWEL |      216     /* uppercase 'O' slash */
292     ,CONCORDABLE | VOWEL |      217     /* uppercase 'U' grave accent */
293     ,CONCORDABLE | VOWEL |      218     /* uppercase 'U' acute accent */
294     ,CONCORDABLE | VOWEL |      219     /* uppercase 'U' circumflex */
295     ,CONCORDABLE | VOWEL |      220     /* uppercase 'U' diaeresis-umlaut */
296     ,CONCORDABLE | VOWEL |      221     /* uppercase 'Y' acute accent */
297     ,CONCORDABLE | CONSONANT |  222     /* uppercase Thorn (Iceland) */
298     ,CONCORDABLE | CONSONANT |  223     /* lowercase s sharp (German ss) */
299
300     ,CONCORDABLE | VOWEL |      192     /* 224, lcase 'a' grave accent, xE0 */
301     ,CONCORDABLE | VOWEL |      193     /* lowercase 'a' acute accent */
302     ,CONCORDABLE | VOWEL |      194     /* lowercase 'a' circumflex */
303     ,CONCORDABLE | VOWEL |      195     /* lowercase 'a' tilde */
304     ,CONCORDABLE | VOWEL |      196     /* lowercase 'a' diaeresis-umlaut */
305     ,CONCORDABLE | VOWEL |      197     /* lowercase 'a' overcircle */
306     ,CONCORDABLE | VOWEL |      198     /* lowercase 'ae' diphthong */
307     ,CONCORDABLE | CONSONANT |  199     /* lowercase 'c' cedilla */
308
309     ,CONCORDABLE | VOWEL |      200     /* 232, lowercase 'e' grave accent */
310     ,CONCORDABLE | VOWEL |      201     /* lowercase 'e' acute accent */
311     ,CONCORDABLE | VOWEL |      202     /* lowercase 'e' circumflex */
312     ,CONCORDABLE | VOWEL |      203     /* lowercase 'e' diaeresis-umlaut */
313     ,CONCORDABLE | VOWEL |      204     /* lowercase 'i' grave accent */
314     ,CONCORDABLE | VOWEL |      205     /* lowercase 'i' acute accent */
315     ,CONCORDABLE | VOWEL |      206     /* lowercase 'i' circumflex */
316     ,CONCORDABLE | VOWEL |      207     /* lowercase 'i' diaeresis-umlaut */
317
318     ,CONCORDABLE | CONSONANT |  208     /* 240, lcase 'd' stroke (eth), xF0 */
319     ,CONCORDABLE | CONSONANT |  209     /* lowercase 'n' tilde */
320     ,CONCORDABLE | VOWEL |      210     /* lowercase 'o' grave accent */
321     ,CONCORDABLE | VOWEL |      211     /* lowercase 'o' acute accent */
322     ,CONCORDABLE | VOWEL |      212     /* lowercase 'o' circumflex */
323     ,CONCORDABLE | VOWEL |      213     /* lowercase 'o' tilde */
324     ,CONCORDABLE | VOWEL |      214     /* lowercase 'o' diaeresis-umlaut */
325     ,NON_CONCORD |              247     /* divide sign */
326
327     ,CONCORDABLE | VOWEL |      216     /* 248, lowercase 'o' slash */
328     ,CONCORDABLE | VOWEL |      217     /* lowercase 'u' grave accent */
329     ,CONCORDABLE | VOWEL |      218     /* lowercase 'u' acute accent */
330     ,CONCORDABLE | VOWEL |      219     /* lowercase 'u' circumflex */
331     ,CONCORDABLE | VOWEL |      220     /* lowercase 'u' diaeresis-umlaut */
332     ,CONCORDABLE | VOWEL |      221     /* lowercase 'y' acute accent */
333     ,CONCORDABLE | CONSONANT |  222     /* lowercase thorn (Icelandic) */
334     ,CONCORDABLE | CONSONANT |  255     /* lowercase 'y' diaeresis-umlaut */
335
336     ,NON_CONCORD                        /* 256, an extra one... */
337     }; /* latin_charmap[] */
338
339
340 /************************************************/
341 /*                                              */
342 /*               ascii_charmap                  */
343 /*                                              */
344 /************************************************/
345 /* Teskey character map for 7-bit ascii
346  * character set in 8-bit octets.
347  * Also accessed in packed EUC parsing in jpn.c.
348  */
349 int     ascii_charmap [] = {
350      NON_CONCORD |               0      /* NULL, Teskey EOT char */
351     ,NON_CONCORD |               1      /* CTRL-A */
352     ,NON_CONCORD |               2      /* CTRL-B */
353     ,NON_CONCORD |               3      /* CTRL-C */
354     ,NON_CONCORD |               4      /* CTRL-D */
355     ,NON_CONCORD |               5      /* CTRL-E */
356     ,NON_CONCORD |               6      /* CTRL-F */
357     ,NON_CONCORD |               7      /* BEL \a */
358     ,NON_CONCORD |               8      /* BS  \b */
359     ,NON_CONCORD | WHITESPACE |  9      /* TAB \t */
360     ,NON_CONCORD | WHITESPACE | 10      /* LF  \n */ 
361     ,NON_CONCORD | WHITESPACE | 11      /* VT  \v */
362     ,NON_CONCORD | WHITESPACE | 12      /* FF  \f */
363     ,NON_CONCORD | WHITESPACE | 13      /* CR  \r */
364     ,NON_CONCORD |              14      /* CTRL-N */
365     ,NON_CONCORD |              15      /* CTRL-O */
366     ,NON_CONCORD |              16      /* CTRL-P */
367     ,NON_CONCORD |              17      /* CTRL-Q */
368     ,NON_CONCORD |              18      /* CTRL-R */
369     ,NON_CONCORD |              19      /* CTRL-S */
370     ,NON_CONCORD |              20      /* CTRL-T */
371     ,NON_CONCORD |              21      /* CTRL-U */
372     ,NON_CONCORD |              22      /* CTRL-V */
373     ,NON_CONCORD |              23      /* CTRL-W */
374     ,NON_CONCORD |              24      /* CTRL-X */
375     ,NON_CONCORD |              25      /* CTRL-Y */
376     ,NON_CONCORD |              26      /* CTRL-Z (EOF) */
377     ,NON_CONCORD |              27      /* ESC */
378     ,NON_CONCORD |              28
379     ,NON_CONCORD |              29
380     ,NON_CONCORD |              30
381     ,NON_CONCORD |              31
382     ,NON_CONCORD | WHITESPACE | 32      /* SPACE (blank) */
383     ,NON_CONCORD |              33      /* ! */
384     ,NON_CONCORD |              34      /* " */
385     ,NON_CONCORD |              35      /* # */
386     ,NON_CONCORD |              36      /* $ */
387     ,NON_CONCORD |              37      /* % */
388     ,NON_CONCORD |              38      /* & */
389     ,NON_CONCORD |              39      /* ' (apostrophe) */
390     ,NON_CONCORD |              40      /* ( */
391     ,NON_CONCORD |              41      /* ) */
392     ,NON_CONCORD |              42      /* * */
393     ,NON_CONCORD |              43      /* + */
394     ,NON_CONCORD |              44      /* , (comma) */
395
396     ,OPT_CONCORD |              45      /* - (dash) */
397     ,OPT_CONCORD |              46      /* . (period) */
398     ,OPT_CONCORD |              47      /* / (slash) */
399
400     ,CONCORDABLE | NUMERAL |    48      /* 0 */
401     ,CONCORDABLE | NUMERAL |    49      /* 1 */
402     ,CONCORDABLE | NUMERAL |    50      /* 2 */
403     ,CONCORDABLE | NUMERAL |    51      /* 3 */
404     ,CONCORDABLE | NUMERAL |    52      /* 4 */
405     ,CONCORDABLE | NUMERAL |    53      /* 5 */
406     ,CONCORDABLE | NUMERAL |    54      /* 6 */
407     ,CONCORDABLE | NUMERAL |    55      /* 7 */
408     ,CONCORDABLE | NUMERAL |    56      /* 8 */
409     ,CONCORDABLE | NUMERAL |    57      /* 9 */
410
411     ,NON_CONCORD |              58      /* : */
412     ,NON_CONCORD |              59      /* ; */
413     ,NON_CONCORD |              60      /* < */
414     ,NON_CONCORD |              61      /* = */
415     ,NON_CONCORD |              62      /* > */
416     ,NON_CONCORD |              63      /* ? */
417     ,NON_CONCORD |              64      /* @ */
418
419     ,CONCORDABLE | VOWEL |      65      /* A */
420     ,CONCORDABLE | CONSONANT |  66      /* B */
421     ,CONCORDABLE | CONSONANT |  67      /* C */
422     ,CONCORDABLE | CONSONANT |  68      /* D */
423     ,CONCORDABLE | VOWEL |      69      /* E */
424     ,CONCORDABLE | CONSONANT |  70      /* F */
425     ,CONCORDABLE | CONSONANT |  71      /* G */
426     ,CONCORDABLE | CONSONANT |  72      /* H */
427     ,CONCORDABLE | VOWEL |      73      /* I */
428     ,CONCORDABLE | CONSONANT |  74      /* J */
429     ,CONCORDABLE | CONSONANT |  75      /* K */
430     ,CONCORDABLE | CONSONANT |  76      /* L */
431     ,CONCORDABLE | CONSONANT |  77      /* M */
432     ,CONCORDABLE | CONSONANT |  78      /* N */
433     ,CONCORDABLE | VOWEL |      79      /* O */
434     ,CONCORDABLE | CONSONANT |  80      /* P */
435     ,CONCORDABLE | CONSONANT |  81      /* Q */
436     ,CONCORDABLE | CONSONANT |  82      /* R */
437     ,CONCORDABLE | CONSONANT |  83      /* S */
438     ,CONCORDABLE | CONSONANT |  84      /* T */
439     ,CONCORDABLE | VOWEL |      85      /* U */
440     ,CONCORDABLE | CONSONANT |  86      /* V */
441     ,CONCORDABLE | CONSONANT |  87      /* W */
442     ,CONCORDABLE | CONSONANT |  88      /* X */
443     ,CONCORDABLE | CONSONANT |  89      /* Y */
444     ,CONCORDABLE | CONSONANT |  90      /* Z */
445
446     ,NON_CONCORD |              91      /* [ */
447     ,NON_CONCORD |              92      /* \ (backslash) */
448     ,NON_CONCORD |              93      /* ] */
449     ,NON_CONCORD |              94      /* ^ */
450
451     ,OPT_CONCORD |              95      /* _ (underscore) */
452
453     ,NON_CONCORD |              96      /* ` (grave accent) */
454
455     ,CONCORDABLE | VOWEL |      'A'     /*  97 = lowercase a */
456     ,CONCORDABLE | CONSONANT |  'B'     /*  98 = lowercase b */
457     ,CONCORDABLE | CONSONANT |  'C'     /*  99 = lowercase c */
458     ,CONCORDABLE | CONSONANT |  'D'     /* 100 = lowercase d */
459     ,CONCORDABLE | VOWEL |      'E'     /* 101 = lowercase e */
460     ,CONCORDABLE | CONSONANT |  'F'     /* 102 = lowercase f */
461     ,CONCORDABLE | CONSONANT |  'G'     /* 103 = lowercase g */
462     ,CONCORDABLE | CONSONANT |  'H'     /* 104 = lowercase h */
463     ,CONCORDABLE | VOWEL |      'I'     /* 105 = lowercase i */
464     ,CONCORDABLE | CONSONANT |  'J'     /* 106 = lowercase j */
465     ,CONCORDABLE | CONSONANT |  'K'     /* 107 = lowercase k */
466     ,CONCORDABLE | CONSONANT |  'L'     /* 108 = lowercase l */
467     ,CONCORDABLE | CONSONANT |  'M'     /* 109 = lowercase m */
468     ,CONCORDABLE | CONSONANT |  'N'     /* 110 = lowercase n */
469     ,CONCORDABLE | VOWEL |      'O'     /* 111 = lowercase o */
470     ,CONCORDABLE | CONSONANT |  'P'     /* 112 = lowercase p */
471     ,CONCORDABLE | CONSONANT |  'Q'     /* 113 = lowercase q */
472     ,CONCORDABLE | CONSONANT |  'R'     /* 114 = lowercase r */
473     ,CONCORDABLE | CONSONANT |  'S'     /* 115 = lowercase s */
474     ,CONCORDABLE | CONSONANT |  'T'     /* 116 = lowercase t */
475     ,CONCORDABLE | VOWEL |      'U'     /* 117 = lowercase u */
476     ,CONCORDABLE | CONSONANT |  'V'     /* 118 = lowercase v */
477     ,CONCORDABLE | CONSONANT |  'W'     /* 119 = lowercase w */
478     ,CONCORDABLE | CONSONANT |  'X'     /* 120 = lowercase x */
479     ,CONCORDABLE | CONSONANT |  'Y'     /* 121 = lowercase y */
480     ,CONCORDABLE | CONSONANT |  'Z'     /* 122 = lowercase z */
481
482     ,NON_CONCORD |              123     /* { */
483     ,NON_CONCORD |              124     /* | (virgule, vertical line) */
484     ,NON_CONCORD |              125     /* } */
485     ,NON_CONCORD |              126     /* ~ */
486     ,NON_CONCORD |              127     /* DEL */
487
488     ,NON_CONCORD |              128
489     ,NON_CONCORD |              129
490     ,NON_CONCORD |              130
491     ,NON_CONCORD |              131
492     ,NON_CONCORD |              132
493     ,NON_CONCORD |              133
494     ,NON_CONCORD |              134
495     ,NON_CONCORD |              135
496
497     ,NON_CONCORD |              136
498     ,NON_CONCORD |              137
499     ,NON_CONCORD |              138
500     ,NON_CONCORD |              139
501     ,NON_CONCORD |              140
502     ,NON_CONCORD |              141
503     ,NON_CONCORD |              142
504     ,NON_CONCORD |              143
505
506     ,NON_CONCORD |              144
507     ,NON_CONCORD |              145
508     ,NON_CONCORD |              146
509     ,NON_CONCORD |              147
510     ,NON_CONCORD |              148
511     ,NON_CONCORD |              149
512     ,NON_CONCORD |              150
513     ,NON_CONCORD |              151
514
515     ,NON_CONCORD |              152
516     ,NON_CONCORD |              153
517     ,NON_CONCORD |              154
518     ,NON_CONCORD |              155
519     ,NON_CONCORD |              156
520     ,NON_CONCORD |              157
521     ,NON_CONCORD |              158
522     ,NON_CONCORD |              159
523
524     ,NON_CONCORD |              160
525     ,NON_CONCORD |              161
526     ,NON_CONCORD |              162
527     ,NON_CONCORD |              163
528     ,NON_CONCORD |              164
529     ,NON_CONCORD |              165
530     ,NON_CONCORD |              166
531     ,NON_CONCORD |              167
532
533     ,NON_CONCORD |              168
534     ,NON_CONCORD |              169
535     ,NON_CONCORD |              170
536     ,NON_CONCORD |              171
537     ,NON_CONCORD |              172
538     ,NON_CONCORD |              173
539     ,NON_CONCORD |              174
540     ,NON_CONCORD |              175
541
542     ,NON_CONCORD |              176
543     ,NON_CONCORD |              177
544     ,NON_CONCORD |              178
545     ,NON_CONCORD |              179
546     ,NON_CONCORD |              180
547     ,NON_CONCORD |              181
548     ,NON_CONCORD |              182
549     ,NON_CONCORD |              183
550
551     ,NON_CONCORD |              184
552     ,NON_CONCORD |              185
553     ,NON_CONCORD |              186
554     ,NON_CONCORD |              187
555     ,NON_CONCORD |              188
556     ,NON_CONCORD |              189
557     ,NON_CONCORD |              190
558     ,NON_CONCORD |              191
559
560     ,NON_CONCORD |              192
561     ,NON_CONCORD |              193
562     ,NON_CONCORD |              194
563     ,NON_CONCORD |              195
564     ,NON_CONCORD |              196
565     ,NON_CONCORD |              197
566     ,NON_CONCORD |              198
567     ,NON_CONCORD |              199
568
569     ,NON_CONCORD |              200
570     ,NON_CONCORD |              201
571     ,NON_CONCORD |              202
572     ,NON_CONCORD |              203
573     ,NON_CONCORD |              204
574     ,NON_CONCORD |              205
575     ,NON_CONCORD |              206
576     ,NON_CONCORD |              207
577
578     ,NON_CONCORD |              208
579     ,NON_CONCORD |              209
580     ,NON_CONCORD |              210
581     ,NON_CONCORD |              211
582     ,NON_CONCORD |              212
583     ,NON_CONCORD |              213
584     ,NON_CONCORD |              214
585     ,NON_CONCORD |              215
586
587     ,NON_CONCORD |              216
588     ,NON_CONCORD |              217
589     ,NON_CONCORD |              218
590     ,NON_CONCORD |              219
591     ,NON_CONCORD |              220
592     ,NON_CONCORD |              221
593     ,NON_CONCORD |              222
594     ,NON_CONCORD |              223
595
596     ,NON_CONCORD |              224
597     ,NON_CONCORD |              225
598     ,NON_CONCORD |              226
599     ,NON_CONCORD |              227
600     ,NON_CONCORD |              228
601     ,NON_CONCORD |              229
602     ,NON_CONCORD |              230
603     ,NON_CONCORD |              231
604
605     ,NON_CONCORD |              232
606     ,NON_CONCORD |              233
607     ,NON_CONCORD |              234
608     ,NON_CONCORD |              235
609     ,NON_CONCORD |              236
610     ,NON_CONCORD |              237
611     ,NON_CONCORD |              238
612     ,NON_CONCORD |              239
613
614     ,NON_CONCORD |              240
615     ,NON_CONCORD |              241
616     ,NON_CONCORD |              242
617     ,NON_CONCORD |              243
618     ,NON_CONCORD |              244
619     ,NON_CONCORD |              245
620     ,NON_CONCORD |              246
621     ,NON_CONCORD |              247
622
623     ,NON_CONCORD |              248
624     ,NON_CONCORD |              249
625     ,NON_CONCORD |              250
626     ,NON_CONCORD |              251
627     ,NON_CONCORD |              252
628     ,NON_CONCORD |              253
629     ,NON_CONCORD |              254
630     ,NON_CONCORD |              255
631
632     ,NON_CONCORD                /* 256 = an extra one... */
633     }; /* ascii_charmap[] */
634
635 /******************** LANGMAP.C ********************/
636