modify code
[build-config.git] / src / config / lxrgmr-code / token / chartype.h
blob5f3fc6708be33844537c92a77f3ffe27f6c8bb38
1 #ifndef __CHAR_TYPE__
2 #define __CHAR_TYPE__
4 #include "charbit.h"
6 enum TOKEN_CHAR_TYPE {
7 CH_DIGIT = _______X,
8 CH_HEX = ______X_,
9 CH_ALPHA = _____X__,
10 CH_ALNUM = ____X___,
11 CH_VNAME = ___X____,
12 CH_PORTABLE = __X_____,
16 [:alpha:] Ï൱ÓÚ [a-zA-Z]
17 [:lower:] Ï൱ÓÚ [a-z]
18 [:upper:] Ï൱ÓÚ [A-Z]
19 [:digit:] Ï൱ÓÚ [0-9]
20 [:alnum:] Ï൱ÓÚ [a-zA-Z0-9]
21 [:blank:] Æ¥Åä ' '(¿Õ¸ñ)¡¢ '\t'(ÖƱí·û)
22 [:space:] Æ¥Åä ' '(¿Õ¸ñ)¡¢'\t'(ÖƱí·û)¡¢'\n'(ÐÂÐÐ)¡¢'\f'()¡¢'\v'(´¹Ö±ÖƱí·û)¡¢'\r'(»Ø³µ·û)
23 [:cntrl:] Æ¥Åä¿ØÖÆ×Ö·û¡£ÔÚ ASCII ÂëÖУ¬ÕâЩ¿ØÖÆ×Ö·ûÊǴӰ˽øÖÆÊý×Ö 000 µ½ 037, ºÍ 177 (DEL)
24 [:print:] Æ¥Åä Ï൱ÓÚ [:alnum:]¡¢[:punct:] ºÍ ¿Õ¸ñ
25 [:graph:] Æ¥Åä Ï൱ÓÚ [:alnum:] ¡¢ [:punct:]
26 [:punct:] Æ¥Åä `! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ ' µÈ±êµã·ûºÅ
27 [:xdigit:] Æ¥ÅäÊ®Áù½øÖÆ×Ö·û '0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
30 enum CHARTYPE_MASK1 {
31 CTM_DIGIT = (1<<0),
32 CTM_HEX = (1<<1),
33 CTM_OCT = (1<<2),
34 CTM_ALPHA = (1<<3),
35 CTM_ALNUM = (1<<4),
36 CTM_VNAME = (1<<5),
37 CTM_PORTABLE = (1<<6),
38 CTM_PUNCT = (1<<7),
41 enum CHARTYPE_MASK2 {
42 CTM_BLANK = (1<<0),
43 CTM_SPACE = (1<<1),
44 CTM_PRINT = (1<<2),
45 CTM_GRAPH = (1<<3),
46 CTM_CNTRL = (1<<4),
47 CTM_LOWER = (1<<5),
48 CTM_UPPER = (1<<6),
49 // CTM_UPPER = (1<<7),
54 * default, 0
56 * '(', 5
57 * '[', 3
58 * '{', 2
59 * 'a' - 'z', 'A' - 'Z', 6
60 * "\'", 4
62 * '0' - '9', 7
63 * '?', 1
64 * '!', 1
65 * '$', 1
66 * '#', 1
67 * '@', 1
68 * '*', 1
71 enum ENV_CHAR_TYPE {
72 ECT_DEFAULT = 0,
73 ECT_SH_VAR,
74 ECT_BRACKET3_VAR,
75 ECT_BRACKET2,
76 ECT_QUOTE,
77 ECT_BRACKET1,
78 ECT_VAR,
79 ECT_PARAM_VAR,
82 extern char chsetmap[128];
83 extern char chsetmap2[128];
84 extern char oprchmap[128];
86 inline int chtype (char *map, char c, unsigned int type)
88 return (c & 0x80) ? 0 : map[c & 0x7f] & type;
91 inline int typestrlen (char *str, char *map, char c, unsigned int type)
93 int i;
94 char *p = str;
96 for (p = str; *p != 0; p++)
98 if (chtype(map, *p, type) == 0)
99 break;
101 return (int)(p - str);
104 inline int typestrcpy (char *dest, char *str, char *map, char c, unsigned int type)
106 int i;
107 char *p = str;
109 for (p = str; *p != 0; p++)
111 if (chtype(map, *p, type) == 0)
112 break;
113 *dest = *p;
114 dest++;
116 return (int)(p - str);
119 inline int is_digital (char c)
121 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_DIGIT;
124 inline int is_hex (char c)
126 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_HEX;
129 inline int is_oct (char c)
131 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_OCT;
134 inline int is_alpha (char c)
136 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_ALPHA;
139 inline int is_alnum (char c)
141 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_ALNUM;
144 inline int is_vname (char c)
146 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_VNAME;
149 inline int is_portable (char c)
151 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_PORTABLE;
154 inline int is_punct (char c)
156 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_PUNCT;
159 inline int is_blank (char c)
161 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_BLANK;
164 inline int is_space (char c)
166 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_SPACE;
169 inline int is_print (char c)
171 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_PRINT;
174 inline int is_graph (char c)
176 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_GRAPH;
179 inline int is_cntrl (char c)
181 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_CNTRL;
184 inline int is_lower (char c)
186 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_LOWER;
189 inline int is_upper (char c)
191 return (c & 0x80) ? 0 : chsetmap[c & 0x7f] & CTM_UPPER;
199 #endif /* __CHAR_TYPE__ */