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
Редактировать