我已经使用 C++ 运行时演示构建了一个基本解析器,并且运行良好。但是,我通常会解析大量输入字符串,是否可以修改代码以重用现有对象进行重复调用?如果是这样,有人有这方面的例子吗?
是的,可以重复使用这些对象。解析调用的典型序列如下所示:
input.load(newText);
errors.clear();
lexer.reset();
lexer.setInputStream(&input); // Not just reset(), which only rewinds the current position.
tokens.setTokenSource(&lexer);
parser.reset();
...
这可能是解析器服务类的一部分。所有对象(解析器、词法分析器、令牌流、输入流)都是在此类的 c-tor 中创建的,然后为每个解析操作调用上面的代码。
然而,重复使用这些对象并不会带来多少好处。创建成本低廉,并且大量数据是静态保存的,因此不需要在每次解析器创建时重新创建。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)