EnglishРусский  

   ..

   alias.c

   alias.h

   bcodes.c

   bcodes.h

   body.c

   compile.c

   compile.h

   define.c

   define.h

   desc.c

   expr.c

   extern.c

   for.c

   foreach.c

   func.c

   func.h

   global.c

   global.h

   goto.c

   if.c

   ifdef.c

   ifdef.h

   import.c

   import.h

   include.c

   include.h

   jump.c

   lexem.c

   lexem.h

   macro.c

   macro.h

   operlist.txt

   out.c

   out.h

   subfunc.c

   switch.c

   type.c

   type.h

   vars.c

   while.c

   with.c

Реклама

Инсталлятор CreateInstall
Бесплатные и коммерческие инсталляторы

 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: extern 03.11.06 0.0.A.
11 *
12 * Author: Alexander Krivonogov ( algen )
13 *
14 ******************************************************************************/
15 
16 #include "func.h"
17 
18 /*-----------------------------------------------------------------------------
19 *
20 * ID: m_extern 03.11.06 0.0.A.
21 *
22 * Summary: The extern command processing
23 *
24 -----------------------------------------------------------------------------*/
25 
26 plexem STDCALL m_extern( plexem curlex )
27 {
28    D( "Extern start\n" );
29    curlex = lexem_next( curlex, LEXNEXT_IGNLINE );
30    curlex = lexem_next( curlex, LEXNEXT_LCURLY | LEXNEXT_IGNLINE );
31    while ( 1 )
32    {
33       if ( curlex->type == LEXEM_KEYWORD )
34       {
35          switch ( curlex->key )
36          {
37             case KEY_FUNC:
38             case KEY_METHOD:
39             case KEY_OPERATOR:
40             case KEY_TEXT:
41             case KEY_PROPERTY:
42                curlex = m_func( curlex, 1 );
43                break;
44             default: msg( MNokeyword | MSG_LEXERR, curlex );
45          }
46       }
47       if ( curlex->type == LEXEM_OPER )
48       {
49          if ( curlex->oper.operid == OpRcrbrack )
50             break;
51          if ( curlex->oper.operid == OpLine )
52          {
53             curlex = lexem_next( curlex, LEXNEXT_IGNLINE );
54             continue;
55          }
56       }
57       msg( MSyntax | MSG_LEXNAMEERR, curlex );
58    }
59    D( "Extern stop\n" );
60    return lexem_next( curlex, LEXNEXT_NULL );
61 }
62 
Редактировать