LCOV - code coverage report
Current view: top level - libreoffice/autodoc/source/parser_i/idl - cx_idlco.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 199 207 96.1 %
Date: 2012-12-27 Functions: 10 10 100.0 %
Legend: Lines: hit not hit

          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: */

Generated by: LCOV version 1.10