设计类Python编译器时,如何处理tab和空格的缩进问题?

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应该如何识别?

阅读 5k
2 个回答

lex的时候应该可以把行首空白作为一种特殊的token,然后保留每一层的行首空白数量,变大=>block开始,变小=>搜索之前的空白数量,生成对应数量的block结束

只是大概思路,具体实现可以去看看coffeescript的实现

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题