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

📄 vmsgetargs.c

📁 bison源代码.bison 是替代yacc的语法分析程序生成器. yacc是 Yet Another Compiler Compiler的缩写. bison又是什么呐 是一个生成可以分析文本文件结构
💻 C
字号:
/* VMS version of getargs; Uses DCL command parsing.   Copyright (C) 1989, 1992 Free Software Foundation, Inc.This file is part of Bison, the GNU Compiler Compiler.Bison is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version.Bison 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 theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with Bison; see the file COPYING.  If not, write tothe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */#include <ctype.h>#include <stdio.h>#include "files.h"/* *	VMS version of getargs: Uses DCL command parsing *		(argc and argv are ignored) */int verboseflag;int definesflag;int debugflag;int nolinesflag;extern int noparserflag;extern int toknumflag;extern int rawtoknumflag;extern int fixed_outfiles;extern char * version_string;/* Allocate storgate and initialize, since bison uses them elsewhere.  */char *spec_name_prefix;char *spec_file_prefix;getargs(argc,argv)     int argc;     char *argv[];{  register char *cp;  static char Input_File[256];  static char output_spec[256], name_prefix_spec[256], file_prefix_spec[256];  extern char *infile;  verboseflag = 0;  definesflag = 0;  debugflag = 0;  fixed_outfiles = 0;  nolinesflag = 0;  noparserflag = 0;  toknumflag = 0;  rawtoknumflag = 0;  /*   *	Check for /VERBOSE qualifier   */  if (cli_present("BISON$VERBOSE")) verboseflag = 1;  /*   *	Check for /DEFINES qualifier   */  if (cli_present("BISON$DEFINES")) definesflag = 1;  /*   *	Check for /FIXED_OUTFILES qualifier   */  if (cli_present("BISON$FIXED_OUTFILES")) fixed_outfiles = 1;  if (cli_present("BISON$YACC")) fixed_outfiles = 1;  /*   *	Check for /VERSION qualifier   */  if (cli_present("BISON$VERSION")) printf("%s",version_string);  /*   *	Check for /NOLINES qualifier   */  if (cli_present("BISON$NOLINES")) nolinesflag = 1;  /*   *	Check for /NOPARSER qualifier   */  if (cli_present("BISON$NOPARSER")) noparserflag = 1;  /*   *	Check for /RAW qualifier   */  if (cli_present("BISON$RAW")) rawtoknumflag = 1;  /*   *	Check for /TOKEN_TABLE qualifier   */  if (cli_present("BISON$TOKEN_TABLE")) toknumflag = 1;  /*   *	Check for /DEBUG qualifier   */  if (cli_present("BISON$DEBUG")) debugflag = 1;  /*   *	Get the filename   */  cli_get_value("BISON$INFILE", Input_File, sizeof(Input_File));  /*   *	Lowercaseify the input filename   */  cp = Input_File;  while(*cp)    {      if (isupper(*cp)) *cp = tolower(*cp);      cp++;    }  infile = Input_File;  /*   *	Get the output file   */  if (cli_present("BISON$OUTPUT"))    {      cli_get_value("BISON$OUTPUT", output_spec, sizeof(output_spec));      for (cp = spec_outfile = output_spec; *cp; cp++)	if (isupper(*cp))	  *cp = tolower(*cp);    }  /*   *	Get the output file   */  if (cli_present("BISON$FILE_PREFIX"))    {      cli_get_value("BISON$FILE_PREFIX", file_prefix_spec, 		     sizeof(file_prefix_spec));      for (cp = spec_file_prefix = file_prefix_spec; *cp; cp++)	if (isupper(*cp))	  *cp = tolower(*cp);    }  /*   *	Get the output file   */  if (cli_present("BISON$NAME_PREFIX"))    {      cli_get_value("BISON$NAME_PREFIX", name_prefix_spec, 		     sizeof(name_prefix_spec));      for (cp = spec_name_prefix = name_prefix_spec; *cp; cp++)	if (isupper(*cp))	  *cp = tolower(*cp);    }}/************		DCL PARSING ROUTINES		**********//* *	See if "NAME" is present */intcli_present(Name)     char *Name;{  struct {int Size; char *Ptr;} Descr;  Descr.Ptr = Name;  Descr.Size = strlen(Name);  return((cli$present(&Descr) & 1) ? 1 : 0);}/* *	Get value of "NAME" */intcli_get_value(Name,Buffer,Size)     char *Name;     char *Buffer;{  struct {int Size; char *Ptr;} Descr1,Descr2;  Descr1.Ptr = Name;  Descr1.Size = strlen(Name);  Descr2.Ptr = Buffer;  Descr2.Size = Size-1;  if (cli$get_value(&Descr1,&Descr2,&Descr2.Size) & 1) {    Buffer[Descr2.Size] = 0;    return(1);  }  return(0);}

⌨️ 快捷键说明

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