如何在特定词法分析模式中复用词法规则?
格式化字符串解析中的模式复用问题
我需要解析格式化字符串,比如:
f"1 + 1 = {1+1}"
当识别到f"时,要进入新的模式formatted_string_mode,遇到"时退出该模式,对应规则如下:
'f"' -> pushMode(formatted_string_mode); mode formatted_string_mode; '"' -> popMode;
同时,我还需要处理{}内部的格式化表达式。让我困惑的是,如何在特定模式中复用其他模式(或默认模式)的词法规则?
比如我可以设计另一个模式formatted_expr_mode,在formatted_string_mode中遇到{时进入该模式:
// ... 假设我已有一些用于解析表达式的规则 'f"' -> pushMode(formatted_string_mode); mode formatted_string_mode; '"' -> popMode; '{' -> pushMode(formatted_expr_mode); STRING_SEGMENT: ~["{] ; mode formatted_expr_mode; '}' -> popMode; // 如何在此处复用默认模式的现有规则?
内容的提问来源于stack exchange,提问作者D Asp
相关产品推荐
相关产品推荐

