wig.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 138 行
C
138 行
/****************************************************************************
*
* Open Watcom Project
*
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
* ========================================================================
*
* This file contains Original Code and/or Modifications of Original
* Code as defined in and that are subject to the Sybase Open Watcom
* Public License version 1.0 (the 'License'). You may not use this file
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
* provided with the Original Code and Modifications, and is also
* available at www.sybase.com/developer/opensource.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
* NON-INFRINGEMENT. Please see the License for the specific language
* governing rights and limitations under the License.
*
* ========================================================================
*
* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
* DESCRIBE IT HERE!
*
****************************************************************************/
#include <stdio.h>
#include <ctype.h>
#include "global.h"
#include "lexxer.h"
#include "srusuprt.h"
#include "options.h"
#include "error.h"
#include "mem.h"
#include "filelist.h"
#include "error.h"
extern FILE *yyin;
extern int wig_parse( void );
#if defined( __DLL__ )
#elif defined( __WINDOWS__ )
int PASCAL WinMain( HINSTANCE currinst, HINSTANCE previnst, LPSTR cmdline, int cmdshow)
{
char *ptr;
char *line;
unsigned argc;
unsigned i;
char **argv;
int rc;
currinst = currinst;
previnst = previnst;
cmdshow = cmdshow;
argc = 1;
ptr = cmdline;
for( ;; ) {
while( isspace( *ptr ) ) ptr++;
if( *ptr == '\0' ) break;
while( !isspace( *ptr ) && *ptr != '\0' ) ptr++;
argc++;
if( *ptr == '\0' ) break;
}
argv = MemMalloc( argc * sizeof( char * ) );
line = MemStrDup( cmdline );
ptr = line;
argv[0] = "";
for( i=1; i < argc; i++ ) {
while( isspace( *ptr ) ) ptr++;
argv[i] = ptr;
while( !isspace( *ptr ) && *ptr != '\0' ) ptr++;
*ptr = '\0';
ptr++;
}
rc = Wigmain( argc, argv );
MemFree( line );
MemFree( argv );
return( rc );
}
#else
int main( int argc, char **argv )
/*******************************/
{
printf( "%s", WIG_BANNER );
return( Wigmain( argc, argv ) );
}
#endif
static void finiProgram( void )
/*****************************/
{
FreeSru();
FiniError();
FiniLex();
FiniFileList();
FiniMem();
}
int Wigmain( int argc, char **argv )
/**********************************/
{
int rc;
InitMem();
rc = setjmp( ErrorEnv );
if( rc == RC_SPAWN_SET ) {
// Program main line
InitFileList();
if( !ProcessOptions( argc, argv ) ) {
/* initialize various components */
InitError();
InitLex( GetInputFile() );
InitSru();
/* parse loop */
while( !wig_parse() );
/* do any post processing */
DoPostProcessing();
/* generate new sru file */
if( Options & OPT_MODIFY_SRU ) FiniSru();
/* generare new cpp/c/hpp files */
GenCPPInterface();
}
}
finiProgram();
return( rc == RC_ERROR );
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?