📄 cp_maintest.c
字号:
/*Copyright (c) 2000, 2001, Red Hat, Inc.This file is part of Source-Navigator.Source-Navigator is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public License as publishedby the Free Software Foundation; either version 2, or (at your option)any later version.Source-Navigator is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNUGeneral Public License for more details.You should have received a copy of the GNU General Public License alongwith Source-Navigator; see the file COPYING. If not, write tothe Free Software Foundation, 59 Temple Place - Suite 330, Boston,MA 02111-1307, USA.*/#include <stdlib.h>#include <stdio.h>#include <string.h>#include <sys/stat.h>#include <fcntl.h>#include <tcl.h>#include "crossrefP.h"#define PRINTTcl_Encoding encoding = NULL;int (*Paf_IsSkip)( char *yytext, int yyleng );static void process_file( char *filename );static void start_parser( char *filename_a, int is_cpp, int mode );extern int main( int argc, char *argv[] ){ extern char *optarg; extern int optind; char *pcInputFiles = 0; scope_g = SN_StrDup( "" ); if( argc == 1 ) { printf( "no argument\n" ); exit( -1 ); } else { int i; int opt; while(( opt = getopt( argc, argv, "y:" )) != EOF ) { switch( opt ) { case 'y' : pcInputFiles = optarg; break; } } if( pcInputFiles == 0 ) { for( i = optind; i < argc; i++ ) { process_file( argv[i] ); } } else { FILE *input_files_fp; char acBuffer[1000]; input_files_fp = fopen( pcInputFiles, "r" ); if( input_files_fp == 0 ) { perror( pcInputFiles ); exit( -1 ); } while( fgets( acBuffer, sizeof( acBuffer ), input_files_fp )) { char *pc; if( acBuffer[0] == '#' ) { continue; } if( pc = strchr( acBuffer, '\n' )) { *pc = 0; } process_file( acBuffer ); } } }}static void process_file( char *filename ){ fprintf( stderr, "file: %s\n", filename ); if(( yyfd = open( filename, O_RDONLY )) >= 0 ) { start_parser( filename, 1, 0 ); close( yyfd ); } else { perror( filename ); }}static void start_parser( char *filename_a, int is_cpp, int mode ){ extern int yyfd; if( yyfd == -1 ) return; mode_g = mode; filename_g = filename_a; is_cpp_g = is_cpp; ivt = 0; iva = 0; init_stack(); niveau = 0; /* beolvassuk az egesz file-t */ if( f_ReadFile( yyfd )) { return; } if( mode == -1 ) { Token_t Token; while( True ) { int lex; Token = yylex(); lex = Token->lex; f_TokenFreeAll( Token ); if( lex == 0 ) break; } } else { while( token( 0 ) != 0 ) { Declaration_t Declaration; if(( Declaration = f_Declaration( LEVEL_2 ))) {/* f_DeclarationPrint( Declaration ); */ f_DeclarationDestroy( Declaration ); } else { f_DeclarationSkip(); } if( niveau != 0 ) {#ifdef TEST printf( "bad niveau: %d (line:%d)\n", niveau, f_lineno( 0 )); exit( -1 );#endif } } } f_read_end();}/*extern int Put_symbol (int type,char *scope,char *sym_name,char *file, int start_lineno,int start_colpos,int end_lineno,int end_colpos,unsigned long attr, char *ret,char *arg_types,char *args, char *comment, int high_start_lineno,int high_start_colpos,int high_end_lineno, int high_end_colpos ){ printf( "Fatal error: put_symbol calling\n" ); exit( -1 );}*/extern char *Paf_Search_Include_dir( char *name ){ return name;}extern void Paf_panic( int i ){ exit( i );}extern int get_symbol (char *class_name,char *scope_local,char *name,char *arg_types, char *scope,char *ret_type, char *ret_define, int exact){ scope [0] = 0; ret_type[0] = 0; ret_define[0] = 0;#ifdef PRINT printf( "get_symbol: %s|%s|%s|%s\n" , class_name ? class_name : "" , scope_local ? scope_local : "" , name ? name : "" , arg_types ? arg_types : "" );#endif return 0;}extern int get_class_or_typedef( char *name, char *type ){#ifdef PRINT printf( "get_class_or_typedef: %s\n" , name );#endif return 0;}extern char *paf_type_to_string( int paf_type );extern int put_cross_ref ( int type,int scope_type,int scope_lev, char *fnc_cls,char *fnc,char *fnc_arg_types,char *scope,char *what, char *arg_types,char *file,int lineno,int acc){#ifdef PRINT printf( "crossref: %d %d %d %s %s %s %s %s %s %s %d %d\n" , type , scope_type , scope_lev , fnc_cls ? fnc_cls : "NULL" , fnc ? fnc : "NULL" , fnc_arg_types ? fnc_arg_types : "NULL" , scope ? scope : "NULL" , what ? what : "NULL" , arg_types ? arg_types : "NULL" , file ? file : "NULL" , lineno , acc );#endif return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -