Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <precomp.h>
21 : #include <s2_luidl/cx_idlco.hxx>
22 :
23 :
24 : // NOT FULLY DECLARED SERVICES
25 : #include <s2_luidl/cx_sub.hxx>
26 : #include <s2_dsapi/cx_dsapi.hxx>
27 : #include <tools/tkpchars.hxx>
28 : #include <tokens/tkpstam2.hxx>
29 : #include <s2_luidl/tk_ident.hxx>
30 : #include <s2_luidl/tk_keyw.hxx>
31 : #include <s2_luidl/tk_punct.hxx>
32 : #include <s2_luidl/tokrecv.hxx>
33 : #include <x_parse2.hxx>
34 :
35 :
36 : namespace csi
37 : {
38 : namespace uidl
39 : {
40 :
41 :
42 : const intt C_nCppInitialNrOfStati = 400;
43 : const intt C_nStatusSize = 128;
44 :
45 :
46 :
47 : const uintt nF_fin_Error = 1;
48 : const uintt nF_fin_Ignore = 2;
49 : const uintt nF_fin_Identifier = 3;
50 : const uintt nF_fin_Keyword = 4;
51 : const uintt nF_fin_Punctuation = 5;
52 : const uintt nF_fin_EOL = 6;
53 : const uintt nF_fin_EOF = 7;
54 :
55 : const uintt nF_goto_MLDocu = 10;
56 : const uintt nF_goto_SLDocu = 11;
57 : const uintt nF_goto_MLComment = 12;
58 : const uintt nF_goto_SLComment = 13;
59 : const uintt nF_goto_Praeprocessor = 14;
60 : const uintt nF_goto_Assignment = 15;
61 :
62 :
63 :
64 : const UINT16 nTok_bty_any = 100 + TokBuiltInType::bty_any;
65 : const UINT16 nTok_bty_boolean = 100 + TokBuiltInType::bty_boolean;
66 : const UINT16 nTok_bty_byte = 100 + TokBuiltInType::bty_byte;
67 : const UINT16 nTok_bty_char = 100 + TokBuiltInType::bty_char;
68 : const UINT16 nTok_bty_double = 100 + TokBuiltInType::bty_double;
69 : const UINT16 nTok_bty_hyper = 100 + TokBuiltInType::bty_hyper;
70 : const UINT16 nTok_bty_long = 100 + TokBuiltInType::bty_long;
71 : const UINT16 nTok_bty_short = 100 + TokBuiltInType::bty_short;
72 : const UINT16 nTok_bty_string = 100 + TokBuiltInType::bty_string;
73 : const UINT16 nTok_bty_void = 100 + TokBuiltInType::bty_void;
74 : const UINT16 nTok_bty_ellipse = 100 + TokBuiltInType::bty_ellipse;
75 :
76 : const UINT16 nTok_tmod_unsigned = 200 + TokTypeModifier::tmod_unsigned;
77 : const UINT16 nTok_tmod_sequence = 200 + TokTypeModifier::tmod_sequence;
78 :
79 : const UINT16 nTok_ph_in = 250 + TokParameterHandling::ph_in;
80 : const UINT16 nTok_ph_out = 250 + TokParameterHandling::ph_out;
81 : const UINT16 nTok_ph_inout = 250 + TokParameterHandling::ph_inout;
82 :
83 : const UINT16 nTok_mt_attribute = 300 + TokMetaType::mt_attribute;
84 : const UINT16 nTok_mt_constants = 300 + TokMetaType::mt_constants;
85 : const UINT16 nTok_mt_enum = 300 + TokMetaType::mt_enum;
86 : const UINT16 nTok_mt_exception = 300 + TokMetaType::mt_exception;
87 : const UINT16 nTok_mt_ident = 300 + TokMetaType::mt_ident;
88 : const UINT16 nTok_mt_interface = 300 + TokMetaType::mt_interface;
89 : const UINT16 nTok_mt_module = 300 + TokMetaType::mt_module;
90 : const UINT16 nTok_mt_property = 300 + TokMetaType::mt_property;
91 : const UINT16 nTok_mt_service = 300 + TokMetaType::mt_service;
92 : const UINT16 nTok_mt_singleton = 300 + TokMetaType::mt_singleton;
93 : const UINT16 nTok_mt_struct = 300 + TokMetaType::mt_struct;
94 : const UINT16 nTok_mt_typedef = 300 + TokMetaType::mt_typedef;
95 : const UINT16 nTok_mt_uik = 300 + TokMetaType::mt_uik;
96 :
97 : const UINT16 nTok_ste_bound = 400 + TokStereotype::ste_bound;
98 : const UINT16 nTok_ste_constrained = 400 + TokStereotype::ste_constrained;
99 : const UINT16 nTok_ste_const = 400 + TokStereotype::ste_const;
100 : const UINT16 nTok_ste_maybeambiguous = 400 + TokStereotype::ste_maybeambiguous;
101 : const UINT16 nTok_ste_maybedefault = 400 + TokStereotype::ste_maybedefault;
102 : const UINT16 nTok_ste_maybevoid = 400 + TokStereotype::ste_maybevoid;
103 : const UINT16 nTok_ste_oneway = 400 + TokStereotype::ste_oneway;
104 : const UINT16 nTok_ste_optional = 400 + TokStereotype::ste_optional;
105 : const UINT16 nTok_ste_readonly = 400 + TokStereotype::ste_readonly;
106 : const UINT16 nTok_ste_removable = 400 + TokStereotype::ste_removable;
107 : const UINT16 nTok_ste_virtual = 400 + TokStereotype::ste_virtual;
108 : const UINT16 nTok_ste_transient = 400 + TokStereotype::ste_transient;
109 : const UINT16 nTok_ste_published = 400 + TokStereotype::ste_published;
110 :
111 : const UINT16 nTok_raises = 501;
112 : const UINT16 nTok_needs = 502;
113 : const UINT16 nTok_observes = 503;
114 :
115 : const UINT16 nTok_assignment = 550;
116 :
117 : const UINT16 nTok_ignore = 600;
118 : const UINT16 nTok_none_MLCommentBegin = 601;
119 : const UINT16 nTok_none_SLCommentBegin = 602;
120 : const UINT16 nTok_none_MLDocuBegin = 603;
121 : const UINT16 nTok_none_SLDocuBegin = 604;
122 : const UINT16 nTok_none_PraeprocessorBegin = 605;
123 :
124 :
125 : const UINT16 nTok_punct_BracketOpen = 700 + TokPunctuation::BracketOpen;
126 : const UINT16 nTok_punct_BracketClose = 700 + TokPunctuation::BracketClose;
127 : const UINT16 nTok_punct_ArrayBracketOpen = 700 + TokPunctuation::ArrayBracketOpen;
128 : const UINT16 nTok_punct_ArrayBracketClose = 700 + TokPunctuation::ArrayBracketClose;
129 : const UINT16 nTok_punct_CurledBracketOpen = 700 + TokPunctuation::CurledBracketOpen;
130 : const UINT16 nTok_punct_CurledBracketClose = 700 + TokPunctuation::CurledBracketClose;
131 : const UINT16 nTok_punct_Semicolon = 700 + TokPunctuation::Semicolon;
132 : const UINT16 nTok_punct_Colon = 700 + TokPunctuation::Colon;
133 : const UINT16 nTok_punct_DoubleColon = 700 + TokPunctuation::DoubleColon;
134 : const UINT16 nTok_punct_Comma = 700 + TokPunctuation::Comma;
135 : const UINT16 nTok_punct_Minus = 700 + TokPunctuation::Minus;
136 : const UINT16 nTok_punct_Fullstop = 700 + TokPunctuation::Fullstop;
137 : const UINT16 nTok_punct_Lesser = 700 + TokPunctuation::Lesser;
138 : const UINT16 nTok_punct_Greater = 700 + TokPunctuation::Greater;
139 :
140 : const UINT16 nTok_EOL = 801;
141 : const UINT16 nTok_EOF = 802;
142 :
143 :
144 :
145 3 : Context_UidlCode::Context_UidlCode( Token_Receiver & o_rReceiver,
146 : DYN TkpDocuContext & let_drContext_Docu )
147 : : aStateMachine(C_nStatusSize,C_nCppInitialNrOfStati),
148 : pReceiver(&o_rReceiver),
149 : pDocuContext(&let_drContext_Docu),
150 : dpContext_MLComment(0),
151 : dpContext_SLComment(0),
152 : dpContext_Preprocessor(0),
153 : dpContext_Assignment(0),
154 : pNewToken(0),
155 3 : pFollowUpContext(0)
156 : {
157 3 : dpContext_MLComment = new Context_MLComment(o_rReceiver,*this),
158 3 : dpContext_SLComment = new Context_SLComment(o_rReceiver,*this),
159 3 : dpContext_Preprocessor = new Context_Praeprocessor(o_rReceiver,*this),
160 3 : dpContext_Assignment = new Context_Assignment(o_rReceiver,*this),
161 :
162 12 : pDocuContext->SetParentContext(*this,"*/");
163 3 : SetupStateMachine();
164 3 : }
165 :
166 6 : Context_UidlCode::~Context_UidlCode()
167 : {
168 6 : }
169 :
170 : void
171 685116 : Context_UidlCode::ReadCharChain( CharacterSource & io_rText )
172 : {
173 685116 : pNewToken = 0;
174 :
175 685116 : UINT16 nTokenId = 0;
176 685116 : StmBoundsStatu2 & rBound = aStateMachine.GetCharChain(nTokenId, io_rText);
177 :
178 : // !!!
179 : // The order of the next two lines is essential, because
180 : // pFollowUpContext may be changed by PerformStatusFunction() also,
181 : // which then MUST override the previous assignment.
182 685116 : pFollowUpContext = rBound.FollowUpContext();
183 685116 : PerformStatusFunction(rBound.StatusFunctionNr(), nTokenId, io_rText);
184 685116 : }
185 :
186 : bool
187 685116 : Context_UidlCode::PassNewToken()
188 : {
189 685116 : if (pNewToken)
190 : {
191 439276 : pReceiver->Receive(*pNewToken.Release());
192 439276 : return true;
193 : }
194 245840 : return false;
195 : }
196 :
197 : TkpContext &
198 685116 : Context_UidlCode::FollowUpContext()
199 : {
200 : csv_assert(pFollowUpContext != 0);
201 685116 : return *pFollowUpContext;
202 : }
203 :
204 : void
205 685116 : Context_UidlCode::PerformStatusFunction( uintt i_nStatusSignal,
206 : UINT16 i_nTokenId,
207 : CharacterSource & io_rText )
208 : {
209 685116 : switch (i_nStatusSignal)
210 : {
211 : case nF_fin_Error:
212 : // KORR_FUTURE
213 0 : throw X_AutodocParser(X_AutodocParser::x_InvalidChar);
214 : // no break, because of throw
215 : case nF_fin_Ignore:
216 186431 : pNewToken = 0;
217 186431 : io_rText.CutToken();
218 186431 : break;
219 : case nF_fin_Identifier:
220 96085 : pNewToken = new TokIdentifier(io_rText.CutToken());
221 96085 : break;
222 : case nF_fin_Keyword:
223 61016 : io_rText.CutToken();
224 61016 : switch ( i_nTokenId / 50 )
225 : {
226 : case 2:
227 14653 : pNewToken = new TokBuiltInType(i_nTokenId - 100);
228 14653 : break;
229 : case 4:
230 1181 : pNewToken = new TokTypeModifier(i_nTokenId - 200);
231 1181 : break;
232 : case 5:
233 5658 : pNewToken = new TokParameterHandling(i_nTokenId - 250);
234 5658 : break;
235 : case 6:
236 29167 : pNewToken = new TokMetaType(i_nTokenId - 300);
237 29167 : break;
238 : case 8:
239 8319 : pNewToken = new TokStereotype(i_nTokenId - 400);
240 8319 : break;
241 : case 10:
242 2038 : switch (i_nTokenId-500)
243 : {
244 : case 1:
245 2038 : pNewToken = new TokRaises;
246 2038 : break;
247 : case 2:
248 0 : pNewToken = new TokNeeds;
249 0 : break;
250 : case 3:
251 0 : pNewToken = new TokObserves;
252 0 : break;
253 : default:
254 : csv_assert(false);
255 : }
256 2038 : break;
257 : default:
258 : csv_assert(false);
259 : } // end switch ( i_nTokenId / 50 )
260 61016 : break;
261 : case nF_fin_Punctuation:
262 146867 : io_rText.CutToken();
263 146867 : if (i_nTokenId == nTok_punct_DoubleColon)
264 41675 : pNewToken = new TokNameSeparator;
265 : else
266 105192 : pNewToken = new TokPunctuation(i_nTokenId - 700);
267 146867 : break;
268 : case nF_fin_EOL:
269 135308 : io_rText.CutToken();
270 135308 : pNewToken = new Tok_EOL;
271 135308 : pReceiver->Increment_CurLine();
272 135308 : break;
273 : case nF_fin_EOF:
274 0 : pNewToken = new Tok_EOF;
275 0 : break;
276 : case nF_goto_MLDocu:
277 38010 : while ( io_rText.CurChar() == '*')
278 0 : io_rText.MoveOn();
279 19005 : io_rText.CutToken();
280 19005 : pDocuContext->SetMode_IsMultiLine(true);
281 19005 : break;
282 : case nF_goto_SLDocu:
283 903 : io_rText.CutToken();
284 903 : pDocuContext->SetMode_IsMultiLine(false);
285 903 : break;
286 : case nF_goto_MLComment:
287 12638 : break;
288 : case nF_goto_SLComment:
289 2484 : break;
290 : case nF_goto_Praeprocessor:
291 21031 : break;
292 : case nF_goto_Assignment:
293 3348 : break;
294 : default:
295 : csv_assert(false);
296 : } // end switch (i_nStatusSignal)
297 685116 : }
298 :
299 : void
300 3 : Context_UidlCode::SetupStateMachine()
301 : {
302 : // special array statuses (no tokenfinish or change of context):
303 : // const INT16 top = 0; // top status
304 3 : const INT16 wht = 1; // skip whitespace status
305 3 : const INT16 bez = 2; // read identifier status
306 :
307 : // tokenfinish statuses:
308 3 : const INT16 finErr = 3;
309 3 : const INT16 finIgn = 4;
310 3 : const INT16 finBez = 5;
311 3 : const INT16 finKeyw = 6;
312 3 : const INT16 finPunct = 7;
313 3 : const INT16 finEOL = 8;
314 3 : const INT16 finEOF = 9;
315 :
316 : // change of context statuses:
317 3 : const INT16 gotoMld = 10;
318 3 : const INT16 gotoSld = 11;
319 3 : const INT16 gotoMlc = 12;
320 3 : const INT16 gotoSlc = 13;
321 3 : const INT16 gotoPrp = 14;
322 3 : const INT16 gotoAsg = 15;
323 :
324 : // constants for use in the table:
325 3 : const INT16 err = finErr;
326 3 : const INT16 fbz = finBez;
327 3 : const INT16 fig = finIgn;
328 3 : const INT16 fof = finEOF;
329 : // const INT16 fkw = finKeyw;
330 : // const INT16 fpc = finPunct;
331 :
332 : /// '0's are going to be replaced by AddToken() later
333 :
334 : const INT16 A_nTopStatus[C_nStatusSize] =
335 : // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
336 : {fof,err,err,err,err,err,err,err,err,wht, 0,wht,wht, 0,err,err,
337 : err,err,err,err,err,err,err,err,err,err,fof,err,err,err,err,err, // 16 ...
338 : wht,err,wht, 0,err,err,err,err, 0, 0,err,err, 0, 0, 0,err,
339 : bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,err,err,err,err,err,err, // 48 ...
340 : err,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
341 : bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez, 0,err, 0,err,bez, // 80 ...
342 : err,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
343 : bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez, 0,err, 0,err,err, // 112 ...
344 3 : };
345 :
346 : const INT16 A_nWhitespaceStatus[C_nStatusSize] =
347 : // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
348 : {fof,err,err,err,err,err,err,err,err,wht,fig,wht,wht,fig,err,err,
349 : err,err,err,err,err,err,err,err,err,err,fof,err,err,err,err,err, // 16 ...
350 : wht,fig,wht,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,
351 : fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig, // 48 ...
352 : fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,
353 : fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig, // 80 ...
354 : fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,
355 : fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,fig,err // 112 ...
356 3 : };
357 :
358 : const INT16 A_nBezeichnerStatus[C_nStatusSize] =
359 : // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
360 : {fbz,err,err,err,err,err,err,err,err,fbz,fbz,fbz,fbz,fbz,err,err,
361 : err,err,err,err,err,err,err,err,err,err,fbz,err,err,err,err,err, // 16 ...
362 : fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,
363 : bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,fbz,fbz, // 48 ...
364 : fbz,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
365 : bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,bez, // 80 ...
366 : fbz,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
367 : bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,err // 112 ...
368 3 : };
369 :
370 : const INT16 A_nPunctDefStatus[C_nStatusSize] =
371 : // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
372 : {err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
373 : err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 16 ...
374 : err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
375 : err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 48 ...
376 : err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
377 : err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 80 ...
378 : err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
379 : err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err // 112 ...
380 3 : };
381 :
382 : const INT16 A_nKeywordDefStatus[C_nStatusSize] =
383 : // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
384 : {fbz,err,err,err,err,err,err,err,err,fbz,fbz,fbz,fbz,fbz,err,err,
385 : err,err,err,err,err,err,err,err,err,err,fbz,err,err,err,err,err, // 16 ...
386 : fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,fbz,
387 : bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,fbz,fbz, // 48 ...
388 : fbz,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
389 : bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,bez, // 80 ...
390 : fbz,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,
391 : bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,bez,fbz,fbz,fbz,fbz,err // 112 ...
392 3 : };
393 :
394 : DYN StmArrayStatu2 * dpStatusTop
395 3 : = new StmArrayStatu2( C_nStatusSize, A_nTopStatus, 0, true);
396 : DYN StmArrayStatu2 * dpStatusWhite
397 3 : = new StmArrayStatu2( C_nStatusSize, A_nWhitespaceStatus, 0, true);
398 : DYN StmArrayStatu2 * dpStatusBez
399 3 : = new StmArrayStatu2( C_nStatusSize, A_nBezeichnerStatus, 0, true);
400 :
401 : DYN StmBoundsStatu2 * dpBst_finErr
402 3 : = new StmBoundsStatu2( TkpContext_Null2_(), nF_fin_Error, true );
403 : DYN StmBoundsStatu2 * dpBst_finIgn
404 3 : = new StmBoundsStatu2( *this, nF_fin_Ignore, true );
405 : DYN StmBoundsStatu2 * dpBst_finBez
406 3 : = new StmBoundsStatu2( *this, nF_fin_Identifier, true );
407 : DYN StmBoundsStatu2 * dpBst_finKeyw
408 3 : = new StmBoundsStatu2( *this, nF_fin_Keyword, false );
409 : DYN StmBoundsStatu2 * dpBst_finPunct
410 3 : = new StmBoundsStatu2( *this, nF_fin_Punctuation, false );
411 : DYN StmBoundsStatu2 * dpBst_finEOL
412 3 : = new StmBoundsStatu2( *this, nF_fin_EOL, false );
413 : DYN StmBoundsStatu2 * dpBst_finEOF
414 3 : = new StmBoundsStatu2( TkpContext_Null2_(), nF_fin_EOF, false );
415 :
416 : DYN StmBoundsStatu2 * dpBst_gotoMld
417 3 : = new StmBoundsStatu2( *pDocuContext, nF_goto_MLDocu, false );
418 : DYN StmBoundsStatu2 * dpBst_gotoSld
419 3 : = new StmBoundsStatu2( *pDocuContext, nF_goto_SLDocu, false );
420 : DYN StmBoundsStatu2 * dpBst_gotoMlc
421 3 : = new StmBoundsStatu2( *dpContext_MLComment, nF_goto_MLComment, false );
422 : DYN StmBoundsStatu2 * dpBst_gotoSlc
423 3 : = new StmBoundsStatu2( *dpContext_SLComment, nF_goto_SLComment, false );
424 : DYN StmBoundsStatu2 * dpBst_gotoPrp
425 3 : = new StmBoundsStatu2( *dpContext_Preprocessor, nF_goto_Praeprocessor, false );
426 : DYN StmBoundsStatu2 * dpBst_gotoAsg
427 3 : = new StmBoundsStatu2( *dpContext_Assignment, nF_goto_Assignment, false );
428 :
429 : // construct dpMain:
430 3 : aStateMachine.AddStatus(dpStatusTop);
431 :
432 3 : aStateMachine.AddStatus(dpStatusWhite);
433 3 : aStateMachine.AddStatus(dpStatusBez);
434 :
435 3 : aStateMachine.AddStatus(dpBst_finErr);
436 3 : aStateMachine.AddStatus(dpBst_finIgn);
437 3 : aStateMachine.AddStatus(dpBst_finBez);
438 3 : aStateMachine.AddStatus(dpBst_finKeyw);
439 3 : aStateMachine.AddStatus(dpBst_finPunct);
440 3 : aStateMachine.AddStatus(dpBst_finEOL);
441 3 : aStateMachine.AddStatus(dpBst_finEOF);
442 :
443 3 : aStateMachine.AddStatus(dpBst_gotoMld);
444 3 : aStateMachine.AddStatus(dpBst_gotoSld);
445 3 : aStateMachine.AddStatus(dpBst_gotoMlc);
446 3 : aStateMachine.AddStatus(dpBst_gotoSlc);
447 3 : aStateMachine.AddStatus(dpBst_gotoPrp);
448 3 : aStateMachine.AddStatus(dpBst_gotoAsg);
449 :
450 3 : aStateMachine.AddToken("any", nTok_bty_any, A_nKeywordDefStatus, finKeyw);
451 3 : aStateMachine.AddToken("attribute", nTok_mt_attribute, A_nKeywordDefStatus, finKeyw);
452 3 : aStateMachine.AddToken("boolean", nTok_bty_boolean, A_nKeywordDefStatus, finKeyw);
453 3 : aStateMachine.AddToken("bound", nTok_ste_bound, A_nKeywordDefStatus, finKeyw);
454 3 : aStateMachine.AddToken("byte", nTok_bty_byte, A_nKeywordDefStatus, finKeyw);
455 3 : aStateMachine.AddToken("char", nTok_bty_char, A_nKeywordDefStatus, finKeyw);
456 3 : aStateMachine.AddToken("const", nTok_ste_const, A_nKeywordDefStatus, finKeyw);
457 3 : aStateMachine.AddToken("constants", nTok_mt_constants, A_nKeywordDefStatus, finKeyw);
458 : aStateMachine.AddToken("constrained",
459 3 : nTok_ste_constrained, A_nKeywordDefStatus, finKeyw);
460 3 : aStateMachine.AddToken("double", nTok_bty_double, A_nKeywordDefStatus, finKeyw);
461 3 : aStateMachine.AddToken("enum", nTok_mt_enum, A_nKeywordDefStatus, finKeyw);
462 3 : aStateMachine.AddToken("exception", nTok_mt_exception, A_nKeywordDefStatus, finKeyw);
463 3 : aStateMachine.AddToken("hyper", nTok_bty_hyper, A_nKeywordDefStatus, finKeyw);
464 3 : aStateMachine.AddToken("ident", nTok_mt_ident, A_nKeywordDefStatus, finKeyw);
465 3 : aStateMachine.AddToken("in", nTok_ph_in, A_nKeywordDefStatus, finKeyw);
466 3 : aStateMachine.AddToken("inout", nTok_ph_inout, A_nKeywordDefStatus, finKeyw);
467 3 : aStateMachine.AddToken("interface", nTok_mt_interface, A_nKeywordDefStatus, finKeyw);
468 3 : aStateMachine.AddToken("long", nTok_bty_long, A_nKeywordDefStatus, finKeyw);
469 : aStateMachine.AddToken("maybeambiguous",
470 3 : nTok_ste_maybeambiguous,A_nKeywordDefStatus, finKeyw);
471 : aStateMachine.AddToken("maybedefault",
472 3 : nTok_ste_maybedefault, A_nKeywordDefStatus, finKeyw);
473 3 : aStateMachine.AddToken("maybevoid", nTok_ste_maybevoid, A_nKeywordDefStatus, finKeyw);
474 3 : aStateMachine.AddToken("module", nTok_mt_module, A_nKeywordDefStatus, finKeyw);
475 3 : aStateMachine.AddToken("needs", nTok_needs, A_nKeywordDefStatus, finKeyw);
476 3 : aStateMachine.AddToken("observes", nTok_observes, A_nKeywordDefStatus, finKeyw);
477 3 : aStateMachine.AddToken("oneway", nTok_ste_oneway, A_nKeywordDefStatus, finKeyw);
478 3 : aStateMachine.AddToken("optional", nTok_ste_optional, A_nKeywordDefStatus, finKeyw);
479 3 : aStateMachine.AddToken("out", nTok_ph_out, A_nKeywordDefStatus, finKeyw);
480 3 : aStateMachine.AddToken("property", nTok_mt_property, A_nKeywordDefStatus, finKeyw);
481 3 : aStateMachine.AddToken("published", nTok_ste_published, A_nKeywordDefStatus, finKeyw);
482 3 : aStateMachine.AddToken("raises", nTok_raises, A_nKeywordDefStatus, finKeyw);
483 3 : aStateMachine.AddToken("readonly", nTok_ste_readonly, A_nKeywordDefStatus, finKeyw);
484 3 : aStateMachine.AddToken("removable", nTok_ste_removable, A_nKeywordDefStatus, finKeyw);
485 3 : aStateMachine.AddToken("sequence", nTok_tmod_sequence, A_nKeywordDefStatus, finKeyw);
486 3 : aStateMachine.AddToken("service", nTok_mt_service, A_nKeywordDefStatus, finKeyw);
487 3 : aStateMachine.AddToken("short", nTok_bty_short, A_nKeywordDefStatus, finKeyw);
488 3 : aStateMachine.AddToken("singleton", nTok_mt_singleton, A_nKeywordDefStatus, finKeyw);
489 3 : aStateMachine.AddToken("string", nTok_bty_string, A_nKeywordDefStatus, finKeyw);
490 3 : aStateMachine.AddToken("struct", nTok_mt_struct, A_nKeywordDefStatus, finKeyw);
491 3 : aStateMachine.AddToken("transient", nTok_ste_transient, A_nKeywordDefStatus, finKeyw);
492 3 : aStateMachine.AddToken("typedef", nTok_mt_typedef, A_nKeywordDefStatus, finKeyw);
493 3 : aStateMachine.AddToken("uik", nTok_mt_uik, A_nKeywordDefStatus, finKeyw);
494 3 : aStateMachine.AddToken("unsigned", nTok_tmod_unsigned, A_nKeywordDefStatus, finKeyw);
495 3 : aStateMachine.AddToken("virtual", nTok_ste_virtual, A_nKeywordDefStatus, finKeyw);
496 3 : aStateMachine.AddToken("void", nTok_bty_void, A_nKeywordDefStatus, finKeyw);
497 3 : aStateMachine.AddToken("...", nTok_bty_ellipse, A_nPunctDefStatus, finKeyw);
498 :
499 3 : aStateMachine.AddToken("=", nTok_assignment, A_nPunctDefStatus, gotoAsg);
500 :
501 3 : aStateMachine.AddToken("(", nTok_punct_BracketOpen, A_nPunctDefStatus, finPunct);
502 3 : aStateMachine.AddToken(")", nTok_punct_BracketClose,A_nPunctDefStatus, finPunct);
503 : aStateMachine.AddToken("[", nTok_punct_ArrayBracketOpen,
504 3 : A_nPunctDefStatus, finIgn);
505 : aStateMachine.AddToken("]", nTok_punct_ArrayBracketClose,
506 3 : A_nPunctDefStatus, finIgn);
507 : aStateMachine.AddToken("{", nTok_punct_CurledBracketOpen,
508 3 : A_nPunctDefStatus, finPunct);
509 : aStateMachine.AddToken("}", nTok_punct_CurledBracketClose,
510 3 : A_nPunctDefStatus, finPunct);
511 3 : aStateMachine.AddToken("<", nTok_punct_Lesser, A_nPunctDefStatus, finPunct);
512 3 : aStateMachine.AddToken(">", nTok_punct_Greater, A_nPunctDefStatus, finPunct);
513 3 : aStateMachine.AddToken(";", nTok_punct_Semicolon, A_nPunctDefStatus, finPunct);
514 3 : aStateMachine.AddToken(":", nTok_punct_Colon, A_nPunctDefStatus, finPunct);
515 3 : aStateMachine.AddToken("::", nTok_punct_DoubleColon, A_nPunctDefStatus, finPunct);
516 3 : aStateMachine.AddToken(",", nTok_punct_Comma, A_nPunctDefStatus, finPunct);
517 3 : aStateMachine.AddToken("-", nTok_punct_Minus, A_nPunctDefStatus, finPunct);
518 3 : aStateMachine.AddToken(".", nTok_punct_Fullstop, A_nPunctDefStatus, finPunct);
519 3 : aStateMachine.AddToken("/**", nTok_none_MLDocuBegin, A_nPunctDefStatus, gotoMld);
520 3 : aStateMachine.AddToken("///", nTok_none_SLDocuBegin, A_nPunctDefStatus, gotoSld);
521 : aStateMachine.AddToken("/*", nTok_none_MLCommentBegin,
522 3 : A_nPunctDefStatus, gotoMlc);
523 : aStateMachine.AddToken("//", nTok_none_SLCommentBegin,
524 3 : A_nPunctDefStatus, gotoSlc);
525 3 : aStateMachine.AddToken("/**/", nTok_ignore, A_nPunctDefStatus, finIgn);
526 : aStateMachine.AddToken("#", nTok_none_PraeprocessorBegin,
527 3 : A_nPunctDefStatus, gotoPrp);
528 3 : aStateMachine.AddToken("\r\n", nTok_EOL, A_nPunctDefStatus, finEOL);
529 3 : aStateMachine.AddToken("\r", nTok_EOL, A_nPunctDefStatus, finEOL);
530 3 : aStateMachine.AddToken("\n", nTok_EOL, A_nPunctDefStatus, finEOL);
531 3 : aStateMachine.AddToken("\n\r", nTok_EOL, A_nPunctDefStatus, finEOL);
532 3 : };
533 :
534 :
535 : } // namespace uidl
536 3 : } // namespace csi
537 :
538 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|