1 /******************************************************************************
2 *
3 * Copyright (C) 2006, The Gentee Group. All rights reserved.
4 * This file is part of the Gentee open source project - http://www.gentee.com.
5 *
6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT").
7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS
8 * ACCEPTANCE OF THE AGREEMENT.
9 *
10 * ID: fgentee 18.10.06 0.0.A.
11 *
12 * Author: Alexey Krivonogov ( gentee )
13 *
14 * Summary: Full C's lexical table
15 *
16 ******************************************************************************/
17
18 <fc prefix = "FC_" desc = "Full C sources" gout =
19 "..\..\example\autoformat\lexfc.g" >
20 <MAIN state = UNKNOWN itstate pos >
21 <_ ch = ' ' state = SPACE pos itstate />
22 <_ ch = '.?' cmd = OPERCHAR pos itcmd value/>
23 <_ ch = '~' cmd = OPERCHAR pos itcmd value/>
24 <_ hexch = '09' state = TAB pos itstate />
25 <_ hexch = '0A' cmd = LINE pos itcmd />
26 <_ hexch = '0D' state = ISLINE pos />
27 <_ ch = '/' state = ISCOMMENT pos/>
28 <_ ch = '!=*' state = ISEQUAL pos/>
29 <_ ch = '^' state = ISEQUAL pos/>
30 <_ ch = '+' state = ISPLUS pos/>
31 <_ ch = '-' state = ISMINUS pos/>
32 <_ ch = '<' state = ISLESS pos/>
33 <_ ch = '>' state = ISGREAT pos/>
34 <_ ch = '\' state = IGNLINE pos itstate/>
35 <_ ch = '%' cmd = OPERCHAR pos itcmd value />
36 <_ ch = '&' state = ISAND pos/>
37 <_ ch = '|' state = ISOR pos/>
38 <_ ch = '#' state = NAME pos itstate keyword/>
39 <_ name state = NAME pos itstate keyword/>
40 <_ ch = '"' state = STRING pos itstate push />
41 <_ ch = "'" state = BINARY pos itstate push />
42 <_ ch = '0' pos cmd = NUMBER state = ISNUMBER itcmd />
43 <_ range = '19' pos cmd = NUMBER state = DECIMAL itcmd />
44 <_ ch = ',()' cmd = SYSCHAR pos itcmd value/>
45 <_ ch = ';{}' cmd = SYSCHAR pos itcmd value/>
46 <_ ch = ':[]' cmd = SYSCHAR pos itcmd value/>
47 </>
48 <IGNLINE state = MAIN stay comment = "Ignore line character \">
49 <_ hexch = '0D' cmd = OK />
50 <_ hexch = '0A' cmd = OK state = MAIN />
51 </>
52 <UNKNOWN cmd = OK comment = "Unknown characters">
53 <_ hexrange = '20FF' state = MAIN stay />
54 <_ hexch = '090D0A' state = MAIN stay />
55 </>
56 <SPACE state = MAIN stay comment = "Space characters">
57 <_ ch = ' ' cmd = OK />
58 </>
59 <TAB state = MAIN stay comment = "Tab characters">
60 <_ hexch = '09' cmd = OK />
61 </>
62 <ISLINE state = UNKNOWN itstate stay >
63 <_ hexch = '0A' cmd = LINE itcmd state = MAIN />
64 </>
65 <ISCOMMENT cmd = OPERCHAR itcmd state = MAIN stay value >
66 <_ ch = '*' state = COMMENT itstate />
67 <_ ch = '/' state = LINECOMMENT itstate />
68 <_ ch = '=' cmd = OPERCHAR itcmd state = MAIN value />
69 </>
70 <COMMENT cmd = OK comment = "Comment /* ... */">
71 <_ multi = '*/' cmd = OK state = MAIN />
72 </>
73 <LINECOMMENT cmd = OK comment = "Comment //... ">
74 <_ hexch = '0D0A' state = MAIN stay />
75 </>
76 <NAME state = MAIN stay comment = "Name identifier">
77 <_ numname cmd = OK />
78 </>
79 <ISNUMBER state = MAIN stay >
80 <_ range = '09' state = DECIMAL cmd = OK />
81 <_ ch = 'xX' state = HEX cmd = OK />
82 <_ ch = 'lL' cmd = OK state = MAIN />
83 <_ ch = 'eE' cmd = OK state = EXPONENT />
84 <_ ch = '.' cmd = OK state = DOUBLE />
85 </>
86 <DECIMAL state = MAIN stay >
87 <_ range = '09' cmd = OK />
88 <_ ch = 'lL' cmd = OK state = MAIN />
89 <_ ch = 'eE' cmd = OK state = EXPONENT />
90 <_ ch = '.' cmd = OK state = DOUBLE />
91 </>
92 <HEX state = MAIN stay >
93 <_ numhex cmd = OK />
94 <_ ch = 'lL' cmd = OK state = MAIN />
95 </>
96 <DOUBLE state = MAIN stay >
97 <_ ch = 'eE' cmd = OK state = EXPONENT />
98 <_ range = '09' cmd = OK />
99 </>
100 <EXPONENT state = FRACTION stay >
101 <_ ch = '+-' cmd = OK state = FRACTION />
102 </>
103 <FRACTION state = MAIN stay >
104 <_ range = '09' cmd = OK />
105 </>
106 <ISEQUAL cmd = OPERCHAR itcmd state = MAIN stay value >
107 <_ ch = '=' cmd = OPERCHAR itcmd state = MAIN value />
108 </>
109 <ISPLUS cmd = OPERCHAR itcmd state = MAIN stay value >
110 <_ ch = '=+' cmd = OPERCHAR itcmd state = MAIN value />
111 </>
112 <ISMINUS cmd = OPERCHAR itcmd state = MAIN stay value >
113 <_ ch = '=->' cmd = OPERCHAR itcmd state = MAIN value />
114 </>
115 <ISLESS cmd = OPERCHAR itcmd state = MAIN stay value >
116 <_ ch = '=' cmd = OPERCHAR itcmd state = MAIN value />
117 <_ ch = '<' state = ISEQUAL />
118 </>
119 <ISGREAT cmd = OPERCHAR itcmd state = MAIN stay value >
120 <_ ch = '=' cmd = OPERCHAR itcmd state = MAIN value />
121 <_ ch = '>' state = ISEQUAL />
122 </>
123 <ISAND cmd = OPERCHAR itcmd state = MAIN stay value >
124 <_ ch = '=&' cmd = OPERCHAR itcmd state = MAIN value />
125 </>
126 <ISOR cmd = OPERCHAR itcmd state = MAIN stay value >
127 <_ ch = '=|' cmd = OPERCHAR itcmd state = MAIN value />
128 </>
129 <STRING cmd = OK comment = 'String'>
130 <_ ch = '"' pop cmd = OK />
131 <_ multi = '\\' cmd = OK />
132 <_ multi = '\"' cmd = OK />
133 </>
134 <BINARY cmd = OK comment = 'Binary data'>
135 <_ ch = "'" pop cmd = OK />
136 </>
137 <commands skip>
138 <LINE comment = "New line 0x0D0A or 0x0A" />
139 <OPERCHAR comment = "Operations" />
140 <SYSCHAR comment = "Punctuation marks" />
141 <NUMBER comment = "Number decimal, hexadecimal, float or double" />
142 </commands>
143 <keywords skip>
144 <cmd id = 1>
145 break case CDECLCALL continue default #define do #elif else extern for foreach goto if #ifdef #include return sizeof STDCALL switch typedef while #else #endif #ifndef enum const struct
146 </>
147 <type id = 256>
148 byte double float int long short ubyte uint ulong ushort void pvoid
149 pubyte
150 </>
151 </keywords>
152 </fgentee>
153