c++ - 读取表达式

标签 c++ regex boost

<分区>

有人可以向我解释如何使用正则表达式从文件中读取一些信息吗?

我要阅读的信息是这样的格式:

INT    "integer"
FLOAT  "real"

更准确地说,我几乎不知道如何使用 boost 来做到这一点,所以我需要帮助。

最佳答案

您希望使用正则表达式解析的语言似乎包含有限数量的关键字,后跟标识符,标识符由字母表中的符号子集组成,并用引号括起来。以下是如何考虑形成这样的正则表达式。

Σ 成为您语言中的终端字符集。对于每个标识符,您必须形成一个如下所示的正则表达式

  • Rκ = κ · ' ' · "· (α ∪ β ∪ ... ∪ ψ ∪ ω)* · "

其中 κ 是由终端符号和 αβ、...、ψ< 连接而成的所需关键字/em>, ωΣ 是允许的标识符终端。例如,让 Σ = {I,N,T,F,L,O,A,i,n,t,e,g,r,a,l,",,' '} . 然后

  • RINT = I · N · T · ' ' · "· (i ∪ n ∪ t ∪ e ∪ g ∪ r ∪ a ∪ l)* · “
  • RREAL = R · E · A · L · ' ' · "· (i ∪ n ∪ t ∪ e ∪ g ∪ r ∪ a ∪ l) * · “

要形成匹配Rκ任意序列的正则表达式,只需形成R的并集的Kleene闭包即可sub>κ 以及您正在使用的语法所必需的任何添加,或者匹配标识符的子表达式并集的 Kleene 闭包和允许标识符的并集的 Kleene 闭包。

关于c++ - 读取表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7717376/

相关文章:

c++ - 为设备编译 Boost 1.54 XCode5 - fatal error : error in backend: symbol '___umodsi3' can not be undefined in a subtraction expression

sql - 如何使用 Regex 查询 ISSN 格式模式?

regex - 如何在复制 vfat 期间重命名文件

C++预处理器##运算符

c++ - 调试错误 : stack around the variable 'cardDesc' was corrupted

c++ - 真正允许在C++中将实现与用户隔离的数据抽象

c++ - 在 opencv 中获取 cv::VideoCaputre 的正确分辨率?=

c++ - 没有显示的 Qt 5.1 QApplication - QXcbConnection : Could not connect to display

python - 反斜杠序列不匹配

c++ - std::bind 占位符的重载运算符