0

我会先放上我的 lex 代码(仅限 lex 正文)。

%%
ps     {BEGIN STATE1;}
.      ;
<STATE1>^[0-9]  print("number after ps".)

使用此代码,我试图在字母“ps”之后匹配一个数字。这就是我使用 ^ 字符的原因。但是代码不匹配任何正确的字符串,如 ps3、ps4fd、ps554 等。然后我删除了 ^ 并尝试了但它工作但也匹配了 pserd7、psfh45、psfhdjh4er 等字符串。

我知道我可以在不使用状态 (ps[0-9].*) 的情况下解决问题。但我必须对各州这样做。我怎样才能解决这个问题?谢谢....

4

1 回答 1

2

使用此代码,我试图在字母“ps”之后匹配一个数字。这就是我使用 ^ 字符的原因

但 ^ 不是这个意思。它的意思是“线的开始”。

我知道我可以在不使用状态 (ps[0-9].*) 的情况下解决问题。但我必须对各州这样做。

为什么?很奇怪的要求。

您需要添加更多规则以涵盖其他可能性。例如:

<STATE1>. { BEGIN INITIAL; }

但这取决于“ps”之后是否合法。

于 2013-04-30T23:35:36.323 回答