📄 generator.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 + -