reworked argument handling slightly, added --extension
This commit is contained in:
parent
9720ea001f
commit
6d3a5403c3
@ -15,7 +15,7 @@
|
||||
using namespace std;
|
||||
|
||||
Parser::Parser()
|
||||
: m_classname("Parser"), m_namespace("")
|
||||
: m_classname("Parser"), m_namespace(""), m_extension("cc")
|
||||
{
|
||||
}
|
||||
|
||||
|
6
Parser.h
6
Parser.h
@ -23,16 +23,22 @@ class Parser
|
||||
}
|
||||
void write(const std::string & fname);
|
||||
bool parseInputFile(char * buff, int size);
|
||||
|
||||
void setClassName(const std::string & cn) { m_classname = cn; }
|
||||
std::string getClassName() { return m_classname; }
|
||||
|
||||
void setNamespace(const std::string & ns) { m_namespace = ns; }
|
||||
std::string getNamespace() { return m_namespace; }
|
||||
|
||||
void setExtension(const std::string & e) { m_extension = e; }
|
||||
std::string getExtension() { return m_extension; }
|
||||
|
||||
protected:
|
||||
std::vector< refptr< TokenDefinition > > m_tokens;
|
||||
std::vector< refptr< RuleDefinition > > m_rules;
|
||||
std::string m_classname;
|
||||
std::string m_namespace;
|
||||
std::string m_extension;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
14
imbecile.cc
14
imbecile.cc
@ -15,13 +15,13 @@ int main(int argc, char * argv[])
|
||||
{
|
||||
int longind = 1;
|
||||
int opt;
|
||||
Parser p;
|
||||
string outfile;
|
||||
string classname = "Parser";
|
||||
string namespace_name = "";
|
||||
|
||||
static struct option longopts[] = {
|
||||
/* name, has_arg, flag, val */
|
||||
{ "classname", required_argument, NULL, 'c' },
|
||||
{ "extension", required_argument, NULL, 'e' },
|
||||
{ "namespace", required_argument, NULL, 'n' },
|
||||
{ "outfile", required_argument, NULL, 'o' },
|
||||
{ NULL, 0, NULL, 0 }
|
||||
@ -32,10 +32,13 @@ int main(int argc, char * argv[])
|
||||
switch (opt)
|
||||
{
|
||||
case 'c': /* classname */
|
||||
classname = optarg;
|
||||
p.setClassName(optarg);
|
||||
break;
|
||||
case 'e': /* extension */
|
||||
p.setExtension(optarg);
|
||||
break;
|
||||
case 'n': /* namespace */
|
||||
namespace_name = optarg;
|
||||
p.setNamespace(optarg);
|
||||
break;
|
||||
case 'o': /* outfile */
|
||||
outfile = optarg;
|
||||
@ -67,9 +70,6 @@ int main(int argc, char * argv[])
|
||||
if (outfile == "")
|
||||
outfile = buildOutputFilename(input_fname);
|
||||
|
||||
Parser p;
|
||||
p.setClassName(classname);
|
||||
p.setNamespace(namespace_name);
|
||||
p.parseInputFile(buff, size);
|
||||
p.write(outfile);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user