所以我不是一个专业的开发人员,但我定期编程.我正在寻找编写代码,并寻找一些关于管理解析器的建议,该解析器正在读取文本文件,将每行视为字符串,并尝试确定该行的输入.任何给定的行可能是1000多个不同的关键字之一,这是困难的部分.一旦我有了这个关键字,我觉得必须有一个更有效的方法来确定它是什么,而不是实现1000 if-else语句或1000 case-break语句.一旦我匹配给定的关键字,我计划跳转到一个例程,该例程实例化该关键字类型的对象.在找到我的目标之前,我不想进行999次测试,这只是我觉得的浪费.我尝试按字母顺序拆分它,这大大减少了它,但仍然存在无法管理的大量if-else语句.
我已经发现我不能嵌套超过128个if-else语句,所以我当前的替代方案是1000个只是"if"语句没有匹配"else"语句,我知道这是一个不好的做法.所以这是我当前代码的概括:
if (keyword_str.compare(keyword1)) {
Parse(keyword1); // A general routine to parse all these similarly formatted keywords
}
if (keyword_str.compare(keyword2)) {
Parse(keyword2);
}
if (keyword_str.compare(keyword3)) {
Parse(keyword3);
}
//
//
//
if (keyword_str.compare(keyword999)) {
Parse(keyword999);
}
if (keyword_str.compare(keyword1000)) {
Parse(keyword1000);
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!谢谢!
好的,所以这就是我所处的观点,但仍然有点迷失在如何使用地图来确定对象类型,然后实例化该对象.以下是一些代码段:
class baseClass
{
public:
baseClass();
~baseClass();
};
//
// keyword1 class declaration
class keyword1 : public baseClass
{
public:
// Constructors
keyword1 () { cout << "keyword1 constructor..." << endl;}
~keyword1 () { cout << …Run Code Online (Sandbox Code Playgroud)