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

📄 generator.cpp

📁 用于词法分析的词法分析器
💻 CPP
字号:
/*  $Id: generator.cpp,v 1.8 1997/02/22 08:59:46 matt Exp $  Elex C++ code generator module.  (c) Matt Phillips 1996.  */#include <iostream.h>#include <fstream.h>#include <string.h>#include <errno.h>#include <foo/FooParser.h>#include "CppCodeGenerator.h"void error (const string message, int abortcode = 0){  cerr << "generator: " << message << endl;  if (abortcode > 0) exit (abortcode);}// check stream <str> which should be a stream opened for file with// <name> is open.int checkStream (ios &str, const string &name){  if (!str)  {    error ("could not open '" + name + "': " + strerror (errno), 1);  }}int main (int argc, char **argv){  if (argc != 5)  {    cerr << "\nusage: generator <code_frags> <header_file> <code_file> <actual_header_file>\n\n";    return 1;  }  ifstream codefrags (argv [1]); checkStream (codefrags, argv [1]);  ofstream header (argv [2]); checkStream (header, argv [2]);  ofstream body (argv [3]); checkStream (body, argv [3]);  BufferedInputStream input (cin);  FooParser parser (input);  if (parser.nErrors () > 0)  {    error ("code generator: errors found in foo:");    cerr << parser.getErrors () << endl;    return 1;  } else  {    if (!parser.getObject ().isAtomic ())    {      // include header into body      body << "#include \"" << argv [4] << "\"\n\n";      CppCodeGenerator codegen (parser.getObject (),				codefrags, header, body);      return codegen.nErrors () != 0;    } else    {      error ("illegal scanner definition", 1);    }  }  return 0;}

⌨️ 快捷键说明

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