【发布时间】:2017-02-20 17:12:51
【问题描述】:
我正在尝试用 C++ 编写一个 XML 扫描器。理想情况下,我希望使用正则表达式库,因为它会更容易。
但是,我有点不知道该怎么做。因此,首先我需要为语言中的每个标记创建正则表达式。除了令牌的名称之外,我还可以使用映射来存储这些正则表达式对。
接下来,我将打开一个输入文件,并希望使用迭代器来遍历文件中的字符串并将它们与正则表达式匹配。但是,在 XML 中,您没有空格来分隔字符串。
所以我的问题是这种方法是否有效?此外,正则表达式库究竟将如何满足我的需求? regex_match 是否足以以万无一失的方式满足我的需求,以免我的扫描仪被欺骗?
我只是想在我的脑海中创建一个流程的骨架,以便我可以开始处理这个问题。我想从其他人那里得到一些意见,看看我是否正确地考虑了这个问题。
如果您对此有任何想法,我将不胜感激。非常感谢!
【问题讨论】:
-
为什么要重新发明轮子? lex/flex 已经存在了几十年,并且已经解决了所有问题。
-
我正在学习如何进行词法分析。仅仅为我生成代码并没有太大帮助。
-
我同意这些工具很有用,但我想自己学习如何做。
-
好吧,也许你应该自己写一个正则表达式求值器,然后呢?即使是那个正则表达式库也可以为你工作。
-
是的。但是看看那些其他工具,它的可读性要低得多,而我对正则表达式的理解就在于构建它们。我可以手动扫描,但我也读过另一个选择是使用正则表达式。
标签: c++ regex lexical-analysis skeleton-code