大约一周前,我在coursera.org开设了一个在线课程“编译器”。今天我得到了一些开始的代码。
我希望你能帮我解答一些问题。
%{ /* some code */ %}
=>这是什么,我一直认为%是模块运算符
[ \t]+
[0-9]+ { return(NUM); }
=>我可以理解[0-9]+
部分代码,但我不明白[\t]+
在这里做了什么。
答案 0 :(得分:3)
这看起来像Lex,而不是C ++
%{ %}
指定将逐字复制到输出源中的C / C ++代码。
[ \t]+
忽略所有空格和标签(\t
是标签页)。
答案 1 :(得分:0)
首先,如果提供了编写编译器的语言的细节,那就太棒了。
从提供的任何信息来看,最好的猜测是[\ t]用于识别标签,这些标签使用缩进来识别单独的代码块。