gpt4 book ai didi

c# - 如何标记 Coco/R 中的缩进(Python、Boo 类缩进)

转载 作者:行者123 更新时间:2023-11-30 21:18:21 30 4
gpt4 key购买 nike

有没有一种众所周知的方法,如何在 Coco/R 中实现像 Python/Boo 中那样的标记化缩进?

Coco/R 忽略空格,但我需要以某种方式根据下一行缩进生成 beginBlock/endBlock 标记。

现在,我使用预处理器,它插入“{”、“}”和“;”在输入流中,通过比较行之间的缩进。在 Coco/R 语法中,我使用花括号作为 beginBlock/endBlock 标记。如果输入流没有注释(也可以嵌套),它会很好地工作。一旦出现无序评论,意图比较逻辑就会失败。

实现一个预处理器,它跟踪评论对我来说看起来像是过度设计。

所以问题是,通常可以用 Coco/R 解析基于缩进的语法吗?或者我应该尝试其他方法吗?

最佳答案

找到了一个理想的方法来做到这一点。

  • 用方法包装 GetNextToken比较下一个流的位置与最后一个标记。

  • 如果 position.Y 改变了,但是position.X增加N个tabs,注入(inject)N个虚拟 INDENT 代币。

  • 如果 position.Y 改变了,但是position.X 减少N个标签,注入(inject)N个虚拟 DENDENT 代币。

  • 如果 position.Y 改变了,但是position.X不是,注入(inject)virtualSEPARATOR token 。

  • 如果 position.Y 没有改变,返回原始下一个 token 。

  • 如果之前的标记是软中断(在 python 中),忽略上面的逻辑。

关于c# - 如何标记 Coco/R 中的缩进(Python、Boo 类缩进),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4289438/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com