gpt4 book ai didi

token - Ant 金服 : match tokens with whitespace

转载 作者:行者123 更新时间:2023-12-01 10:38:17 25 4
gpt4 key购买 nike

我想将带有空格的表达式作为单个标记进行匹配。以下是我的词法分析器规则:

HOUR : (INTEGER) ('hour'|'hours') ;
MINUTE : (INTEGER) ('min'|'minute'|'minutes') ;
INTEGER : '0' 'x' (HEXDIGIT)+ | (DIGIT)+ ;
fragment DIGIT : '0'..'9';
fragment HEXDIGIT : 'a'..'f' | 'A'..'F' | DIGIT;
WS : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+ {skip()};

如果我使用“12hour”,我会得到 HOUR token 。但我使用“12 小时”,得到整数和“小时”。我该怎么做才能让词法分析器将整个“12 小时”作为单个 HOUR 标记返回?

最佳答案

If I use '12hour', I get HOUR token. But I use '12 hour', get INTEGER and 'hour'.

是的,这是预期的行为。这是因为 WS 仅从解析器规则中跳过。

What can I do to make lexer return whole '12 hour' as single HOUR token?

在您的 HOUR 规则中包含空格字符:

// Don't use `WS` in this token, or `skip()` will be  
// invoked and this token will also be skipped!
HOUR : (INTEGER) SPACE* ('hour'|'hours') ;

WS : SPACE+ {skip();};

fragment SPACE : '\t' | ' ' | '\r' | '\n'| '\u000C';

或者,IMO 首选的方式,为这样的事情创建一个解析规则:

hour : INTEGER HOUR;

HOUR : 'hour' | 'hours' ;
INTEGER : '0' 'x' (HEXDIGIT)+ | (DIGIT)+;

关于token - Ant 金服 : match tokens with whitespace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16099197/

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