⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genmms.c

📁 本工具提供一个词法分析器和语法分析器的集成开发环境
💻 C
📖 第 1 页 / 共 2 页
字号:
      printf(" ");      pclasses(classes, num_classes, "o");      printf(" ,-\n      ");      printf(" %s%s", DIR(), APARSER_O);      if ( !user_lexer ) {	printf(", %s%s", DIR(), DLEXERBASE_O);      }      if ( gen_trees ) {	printf(" ,-\n      ");	printf("%s%s", DIR(), ASTBASE_O);	printf(", %s%s", DIR(), PCCTSAST_O);	/*			printf(" %s%s", DIR(), LIST_O); */      }      printf(", %s%s", DIR(), ATOKENBUFFER_O);    }    if ( !user_lexer ) {      if ( gen_CPP ) printf(", $(SCAN)%s", OBJ_FILE_SUFFIX);      else printf(", %s$(SCAN)%s", DIR(), OBJ_FILE_SUFFIX);    }    if ( !gen_CPP ) printf(", $(ERR)%s", OBJ_FILE_SUFFIX);    printf("\n");    printf("ANTLR_SPAWN = ");    if ( gen_CPP ) pfiles(files, n, CPP_FILE_SUFFIX_NO_DOT);    else pfiles(files, n, "c");    if ( gen_CPP ) {      printf(", ");      pclasses(classes, num_classes, CPP_FILE_SUFFIX_NO_DOT);      printf(" ,-\n              ");      pclasses(classes, num_classes, "h");      if ( strcmp(hdr,"stdpccts.h")!=0 ) {	printf(" ,-\n              ");	printf("$(HDR_FILE), stdpccts.h");      }    }    if ( user_lexer ) {      if ( !user_token_types ) printf(", $(TOKENS)");    }    else {      printf(", $(DLG_FILE)");      if ( !user_token_types ) printf(", $(TOKENS)");    }    if ( !gen_CPP ) printf(", $(ERR).c");    printf("\n");    if ( !user_lexer ) {      if ( gen_CPP ) printf("DLG_SPAWN = $(SCAN)%s", CPP_FILE_SUFFIX);      else printf("DLG_SPAWN = %s$(SCAN).c", DIR());      if ( gen_CPP ) printf(", $(SCAN).h");      else printf(", $(MOD_FILE)");      printf("\n");    }    printf("ANTLR_SPAWN_ALL_VERSIONS = ");    if ( gen_CPP ) pfiles(files, n, CPP_FILE_SUFFIX_NO_DOT);    else pfiles(files, n, "c");    if ( gen_CPP ) {      printf(";*, ");      pclasses(classes, num_classes, CPP_FILE_SUFFIX_NO_DOT);      printf(";* ,-\n              ");      pclasses(classes, num_classes, "h");      printf(";*");      if ( strcmp(hdr,"stdpccts.h")!=0 ) {	printf(" ,-\n              ");	printf("$(HDR_FILE);*, stdpccts.h;*");      }    }    if ( user_lexer ) {      if ( !user_token_types ) printf(", $(TOKENS);*");    }    else {      printf(", $(DLG_FILE);*");      if ( !user_token_types ) printf(", $(TOKENS);*");    }    if ( !gen_CPP ) printf(", $(ERR).c;*");    printf("\n");    if ( !user_lexer ) {      if ( gen_CPP ) printf("DLG_SPAWN_ALL_VERSIONS = $(SCAN)%s;*", CPP_FILE_SUFFIX);      else printf("DLG_SPAWN_ALL_VERSIONS = %s$(SCAN).c;*", DIR());      if ( gen_CPP ) printf(", $(SCAN).h;*");      else printf(", $(MOD_FILE);*");      printf("\n");    }    if ( gen_CPP ) {      printf("CCC=CXX\n");      printf("CC=$(CCC)\n");    }    else printf("CC=cc\n");    /* set up dependencies */    printf("\n%s.exe : $(OBJ), $(SRC)\n", project);    if (gen_CPP)      printf("	CXXLINK %s %s $(LNKFLAGS) $(OBJ)\n",	     RENAME_EXE_FLAG,	     project);    else      printf("	LINK %s %s $(LNKFLAGS) $(OBJ)\n",	     RENAME_EXE_FLAG,	     project);    printf("\n");    /* how to compile parser files */    for (i=0; i<num_files; i++)      {	pfiles(&files[i], 1, "obj");	if ( user_lexer ) {	  printf(" : $(TOKENS)");	}	else {	  if ( gen_CPP ) printf(" : $(TOKENS), $(SCAN).h");	  else printf(" : $(MOD_FILE), $(TOKENS)");	}	printf(", ");	if ( gen_CPP ) pfiles(&files[i], 1, CPP_FILE_SUFFIX_NO_DOT);	else pfiles(&files[i], 1, "c");	if ( gen_CPP && strcmp(hdr,"stdpccts.h")!=0 ) printf(", $(HDR_FILE)");	printf("\n");	printf("	%s $(CFLAGS) %s ",gen_CPP?"$(CCC)":"$(CC)",RENAME_OBJ_FLAG);	pfiles(&files[i], 1, "obj");	printf(" ");	if ( gen_CPP ) pfiles(&files[i], 1, CPP_FILE_SUFFIX_NO_DOT);	else pfiles(&files[i], 1, "c");	printf("\n\n");      }    /* how to compile err.c */    if ( !gen_CPP ) {      printf("$(ERR)%s : $(ERR).c", OBJ_FILE_SUFFIX);      if ( !user_lexer ) printf(", $(TOKENS)");      printf("\n");      printf("	%s $(CFLAGS) %s $(ERR)%s $(ERR).c",	     gen_CPP?"$(CCC)":"$(CC)",	     RENAME_OBJ_FLAG,	     OBJ_FILE_SUFFIX);      printf("\n\n");    }    /* how to compile Class.c */    for (i=0; i<num_classes; i++)      {	pclasses(&classes[i], 1, "obj");	if ( user_lexer ) {	  printf(" : $(TOKENS)");	}	else {	  printf(" : $(TOKENS), $(SCAN).h");	}	printf(", ");	pclasses(&classes[i], 1, CPP_FILE_SUFFIX_NO_DOT);	printf(", ");	pclasses(&classes[i], 1, "h");	if ( gen_CPP && strcmp(hdr,"stdpccts.h")!=0 ) printf(", $(HDR_FILE)");	printf("\n");	printf("	%s $(CFLAGS) %s ",	       gen_CPP?"$(CCC)":"$(CC)",	       RENAME_OBJ_FLAG);	pclasses(&classes[i], 1, "obj");	printf(" ");	pclasses(&classes[i], 1, CPP_FILE_SUFFIX_NO_DOT);	printf("\n\n");      }    /* how to compile scan.c */    if ( !user_lexer ) {      if ( gen_CPP ) printf("$(SCAN)%s : $(SCAN)%s", OBJ_FILE_SUFFIX, CPP_FILE_SUFFIX);      else printf("%s$(SCAN)%s : %s$(SCAN).c", DIR(), OBJ_FILE_SUFFIX, DIR());      if ( !user_lexer ) printf(", $(TOKENS)");      printf("\n");      if ( gen_CPP ) printf("	$(CCC) $(CFLAGS) %s $(SCAN)%s $(SCAN)%s",			    RENAME_OBJ_FLAG,			    OBJ_FILE_SUFFIX,			    CPP_FILE_SUFFIX);      else printf("	$(CC) $(CFLAGS) %s %s$(SCAN)%s %s$(SCAN).c",		  RENAME_OBJ_FLAG,		  DIR(),		  OBJ_FILE_SUFFIX,		  DIR());      printf("\n\n");    }    printf("$(ANTLR_SPAWN) : $(GRM)\n");    printf("	$(ANTLR) $(AFLAGS) $(GRM)\n");    if ( !user_lexer )      {	printf("\n");	printf("$(DLG_SPAWN) : $(DLG_FILE)\n");	if ( gen_CPP ) printf("	$(DLG) $(DFLAGS) $(DLG_FILE)\n");	else printf("	$(DLG) $(DFLAGS) $(DLG_FILE) $(SCAN).c\n");      }    /* do the makes for ANTLR/DLG support */    if ( gen_CPP ) {      printf("\n");      printf("%s%s : $(ANTLR_H)%s\n", DIR(), APARSER_O, APARSER_C);      printf("	%s $(CFLAGS) %s ",	     gen_CPP?"$(CCC)":"$(CC)",	     RENAME_OBJ_FLAG);      printf("%s%s $(ANTLR_H)%s\n", DIR(), APARSER_O, APARSER_C);      printf("\n");      printf("%s%s : $(ANTLR_H)%s\n", DIR(), ATOKENBUFFER_O, ATOKENBUFFER_C);      printf("	%s $(CFLAGS) %s ",	     gen_CPP?"$(CCC)":"$(CC)",	     RENAME_OBJ_FLAG);      printf("%s%s $(ANTLR_H)%s\n", DIR(), ATOKENBUFFER_O, ATOKENBUFFER_C);      if ( !user_lexer ) {	printf("\n");	printf("%s%s : $(ANTLR_H)%s\n", DIR(), DLEXERBASE_O, DLEXERBASE_C);	printf("	%s $(CFLAGS) %s ",	       gen_CPP?"$(CCC)":"$(CC)",	       RENAME_OBJ_FLAG);	printf("%s%s $(ANTLR_H)%s\n", DIR(), DLEXERBASE_O, DLEXERBASE_C);      }      if ( gen_trees ) {	printf("\n");	printf("%s%s : $(ANTLR_H)%s\n", DIR(), ASTBASE_O, ASTBASE_C);	printf("	%s $(CFLAGS) %s ",	       gen_CPP?"$(CCC)":"$(CC)",	       RENAME_OBJ_FLAG);	printf("%s%s $(ANTLR_H)%s\n", DIR(), ASTBASE_O, ASTBASE_C);	printf("\n");	printf("%s%s : $(ANTLR_H)%s\n", DIR(), PCCTSAST_O, PCCTSAST_C);	printf("	%s $(CFLAGS) %s ",	       gen_CPP?"$(CCC)":"$(CC)",	       RENAME_OBJ_FLAG);	printf("%s%s $(ANTLR_H)%s\n", DIR(), PCCTSAST_O, PCCTSAST_C);	printf("\n");	/*	  printf("%s%s : $(ANTLR_H)%s%s\n", DIR(), LIST_O, DirectorySymbol, LIST_C);	  printf("	%s -c $(CFLAGS) %s ",	  gen_CPP?"$(CCC)":"$(CC)",RENAME_OBJ_FLAG);	  printf("%s%s $(ANTLR_H)%s%s\n", DIR(), LIST_O, DirectorySymbol, LIST_C);	  */      }    }    /* clean and scrub targets */    printf("\nclean :\n");    printf("	delete *%s.*,  %s.exe.*", OBJ_FILE_SUFFIX, project);    if ( strcmp(outdir, ".")!=0 ) printf(" %s*%s;*", DIR(), OBJ_FILE_SUFFIX);    printf("\n");    printf("\nscrub :\n");    printf("	delete *%s.*,  %s.exe;*", OBJ_FILE_SUFFIX, project);    if ( strcmp(outdir, ".")!=0 ) printf(", %s*%s.*", DIR(), OBJ_FILE_SUFFIX);    printf(", $(ANTLR_SPAWN_ALL_VERSIONS)");    if ( !user_lexer ) printf(", $(DLG_SPAWN_ALL_VERSIONS)");    printf("\n");}pfiles(files, n, suffix)char **files;int n;char *suffix;{  int first=1;  while ( n>0 )    {      char *p = &(*files)[strlen(*files)-1];      if ( !first ) putchar(' ');      first=0;      while ( p > *files && *p != '.' ) --p;      if ( p == *files )	{	  fprintf(stderr,		  "genmk: filenames must be file.suffix format: %s\n",		  *files);	  exit(-1);	}      if ( suffix == NULL ) printf("%s", *files);      else	{	  *p = '\0';	  printf("%s", DIR());	  if ( strcmp(suffix, "o")==0 ) printf("%s%s", *files, OBJ_FILE_SUFFIX);	  else printf("%s.%s", *files, suffix);	  *p = '.';	}      files++;      --n;    }}pclasses(classes, n, suffix)char **classes;int n;char *suffix;{	int first=1;	while ( n>0 )	{		if ( !first ) putchar(' ');		first=0;		if ( suffix == NULL ) printf("%s", *classes);		else {			printf("%s", DIR());			if ( strcmp(suffix, "o")==0 ) printf("%s%s", *classes, OBJ_FILE_SUFFIX);			else printf("%s.%s", *classes, suffix);		}		classes++;		--n;	}}static void#ifdef __STDC__ProcessArgs( int argc, char **argv, Opt *options )#elseProcessArgs( argc, argv, options )int argc;char **argv;Opt *options;#endif{	Opt *p;	require(argv!=NULL, "ProcessArgs: command line NULL");	while ( argc-- > 0 )	{		p = options;		while ( p->option != NULL )		{			if ( strcmp(p->option, "*") == 0 ||				 strcmp(p->option, *argv) == 0 )			{				if ( p->arg )				{					(*p->process)( *argv, *(argv+1) );					argv++;					argc--;				}				else					(*p->process)( *argv );				break;			}			p++;		}		argv++;	}}fatal( err_)char *err_;{    fprintf(stderr, "genmk: %s\n", err_);    exit(1);}warn( err_)char *err_;{    fprintf(stderr, "genmk: %s\n", err_);}char *DIR(){	static char buf[200+1];		if ( strcmp(outdir,TopDirectory)==0 ) return "";	sprintf(buf, "%s", outdir);	return buf;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -