【发布时间】:2021-08-30 06:20:34
【问题描述】:
我最近通过 Aho 的龙书了解了编译器。据我了解,语言首先通过词法分析进行标记化。对于 C/C++ 和 Java 等语言,这个过程似乎很简单。但是对于 Python,特别是 Python3,f 字符串应该如何表现?我不认为仅通过正则表达式或使用 lex 的词法分析可以标记化字符串,如 f"1+2 = {int(f'{1}') + int(f'{2}')}" 。我不认为正则表达式和状态可以识别{} 中的部分不是字符串字符。我搜索了一下,发现这个语法适用于 python3 使用 antlr https://github.com/antlr/grammars-v4/blob/master/python/python3-py/Python3.g4 。但我不相信它会标记 f 字符串。所以我的问题是如何处理 f 字符串?是否可以使用 lex/flex 处理它们?还是在其他阶段处理?或者标准解析器技术不能与它们一起使用?
【问题讨论】:
标签: parsing lexical-analysis f-string