0

大约一周前,我在 coursera.org 上开设了在线课程“编译器”。今天我得到了一些开始的代码。

我希望你能帮助我得到一些问题的答案。

%{ /* some code */ %} => 这是什么,我一直以为 % 是模块运算符

[ \t]+
[0-9]+ { return(NUM); }=> 我可以理解[0-9]+部分代码,但我不明白[\t]+这里在做什么。

4

2 回答 2

3

这看起来像 Lex,而不是 C++

%{ %}指定将被逐字复制到输出源中的 C/C++ 代码。

[ \t]+忽略所有空格和制表符(\t是制表符)。

于 2012-04-29T11:58:35.500 回答
0

首先,如果提供编译器所针对的语言的详细信息,那就太好了。

从所提供的任何信息来看,这里最好的猜测是 [\t] 用于识别标签,以防使用缩进来识别单独的代码块的类似 python 的语言。

于 2012-04-29T12:00:34.467 回答