func fab(number):
if(number == 1):
return 1
if(number == 2):
return 2
return fab(number-1) + fab(number-2)
所设计语言原型如上图。
执行以下C++代码
string text = readline(2)
for(i = 0;i < text.length();i++){
cout<<i<<" ["<<text.at(i)<<"]"<<endl;
}
得到该结果,tab应该如何识别?
lex的时候应该可以把行首空白作为一种特殊的token,然后保留每一层的行首空白数量,变大=>block开始,变小=>搜索之前的空白数量,生成对应数量的block结束
只是大概思路,具体实现可以去看看coffeescript的实现
1) 应该说是python解释器更严谨些
2) tab和空格对应的是不同的16进制,所以你应该根据16进制来判断是空格还是tab. 见这里
http://baike.baidu.com/link?url=m0NR0QSmKipvW5XkG8EW_0RaReLXgK4smzBDkQyTK0yc0MyrxvG9_eTyIrOADEcjaVc28E32wPMrgPF5c1DmCK