gpt4 book ai didi

python - 编译器如何知道是否有 'more tokens',除非它已经读取了下一个标记?

转载 作者:太空宇宙 更新时间:2023-11-04 06:05:47 25 4
gpt4 key购买 nike

我正在研究“nandtotetris”,在第 10 章中,您为编译器制作了一个分词器。这本书建议编写一个 hasMoreTokens 例程并使用一个高级例程来获取下一个标记(如果 hasMoreTokens 返回 true)和一个 tokenType 例程等。我正在使用 python 并且可以按行和按字符读取。我可以通过逐字符读取来获取 token ,但我只有在实际读取 token 后才能确定它,因此已经知道 tokenType 无论如何都会返回什么..?任何人都可以解释书籍建议的基本原理吗?

谢谢。这本书在这里:http://www.cs.huji.ac.il/course/2002/nand2tet/docs/ch_10_compiler_I.pdf在第 12 页。

曾想过拆分成子字符串,每个子字符串都没有空格,但这似乎不对,因为您仍然需要返回并处理诸如 'mary=2*(frank-1)' 等的事情

最佳答案

我不会通读整个 PDF(虽然我略读了它),但我想我可以猜出它的意图是什么。

解析过程在逻辑上分为分词器(又名词法分析器,又名词法分析器)和解析器。标记器逐个字符地检查源代码并返回标记。解析器读取 token 流并返回解析后的数据结构。

标记器可以在解析器知道之前知道是否有另一个标记。 hasMoreTokens 例程可以提前读取并确定是否有更多可用 token 。在实践中,一个好的方法是尽可能让分词器只查看每个字符一次。

我可能会让它一次跟踪两个标记,最后两个被读取。从解析器的角度来看,第一个是“当前”标记,第二个是“下一个”标记。 hasMoreTokens 例程然后告诉解析器这对中的第二个当前是什么。如果标记生成器始终知道下一个标记是什么,那么它始终可以回答是否有另一个标记可用的问题。

关于python - 编译器如何知道是否有 'more tokens',除非它已经读取了下一个标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22185805/

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