![]() |
1
11
一句话:不,XML不是一种常规语言。 更新 (根据以下评论中的讨论进行扩展)
虽然你可以编写一个基于状态机的解析器,它使用正则表达式来执行词汇化/标记化,但这并不比使用一个用于工作的工具更有效,更容易出错。正如其他人所说,Flex/Bison是一种选择。 |
![]() |
2
4
如果必须这样做,我会使用一个真正的lexer/parser生成器,比如flex/yacc。是的,这是更多的工作开始,但一旦你支付了安装成本,增加对额外功能的支持就容易多了。另外,flex和yacc经过几十年的优化,因此它们生成的代码比手工编写的任何代码都要快得多。 |
![]() |
3
1
如果只使用XML的一个子集,就很容易做到。只需一个字符一个字符地读取XML,然后用一堆布尔值(比如in_au标记)更新状态。它比使用regex做任何事情都要快,而且您不必处理行或内存问题(尝试匹配行?一整份文件?如果一行有几个元素呢?如果标签在两行上呢?) |
![]() |
4
1
如果您真的需要解析XML:不需要,可以使用一个真正的XML解析器。 如果你只是想通过一个练习来获得一些新的C++0X正则表达式库的经验:试着找到一个更好、更有用的项目。首先,您需要有机会在以后使用的东西(参见上面关于真正的XML解析器的内容)。也就是说,有更糟糕的方法来学习regex库。:) |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |