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

发布于 2022-09-01 05:34:23 字数 498 浏览 26 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笑着哭最痛 2022-09-08 05:34:23

1) 应该说是python解释器更严谨些
2) tab和空格对应的是不同的16进制,所以你应该根据16进制来判断是空格还是tab. 见这里
http://baike.baidu.com/link?url=m0NR0QSmKipvW5XkG8EW_0RaReLXgK4smzBDkQyTK0yc0MyrxvG9_eTyIrOADEcjaVc28E32wPMrgPF5c1DmCK

丶情人眼里出诗心の 2022-09-08 05:34:23

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文