【发布时间】:2012-04-25 10:48:55
【问题描述】:
我正在尝试将输入程序中的某些标记文本替换为特定格式的文本。我使用 C# 作为输出语言。
输入示例:
time#1m2s
我对该输入的 lex 语法:
fragment
DIGIT : '0'..'9'
;
CTE_DURATION
: ('T'|'t'|'TIME'|'time') '#' '-'? (DIGIT ('d'|'h'|'m'|'s'|'ms') '_'?)+
;
我想从输入示例中获取的输出令牌文本:
0.0:1:2.0
这意味着:0 天、0 小时、1 分钟、2 秒和 0 毫秒。
有什么建议吗?提前谢谢你。
【问题讨论】:
-
我不明白你的问题,你能更具体一点吗?你的问题是你希望你的语法只接受这种格式的输入吗:0.0:1:2.0?
-
我的 lex 语法接受“time#1m2s”并创建一个文本为“time#1m2s”的 CTE_DURATION 标记。我希望我的 lex 规则更改 CTE_DURATION 标记文本(在我的示例中,我想将标记文本更改为“0.0:1:2.0”)。