我会首先提出我的lex代码(仅限lex body)。
%%
ps {BEGIN STATE1;}
. ;
<STATE1>^[0-9] print("number after ps".)
使用此代码我试图在字母“ps”之后匹配一个数字。这就是我使用^字符的原因。 但是代码与任何正确的字符串都不匹配,例如ps3,ps4fd,ps554等。 然后我删除了^然后尝试但是它工作但也匹配像pserd7,psfh45,psfhdjh4er等字符串。
我知道我可以在不使用状态的情况下解决问题(ps [0-9]。*)。但我必须与各州一起做这件事。我怎样才能解决这个问题?感谢....
答案 0 :(得分:2)
使用此代码我试图在字母“ps”之后匹配一个数字。这就是为什么我用^字符
但^并不意味着。这意味着'开始行'。
我知道我可以在不使用状态的情况下解决问题(ps [0-9]。*)。但我必须与各州合作。
为什么呢?非常奇怪的要求。
您需要添加更多规则以涵盖其他可能性。例如:
<STATE1>. { BEGIN INITIAL; }
但这取决于在'ps'之后还有什么是合法的。