我正在尝试为编译器创建一个词法分析器。但是我在使用正则表达式来查找关键字和实数之类的东西时遇到了问题.. 例如一些定义:
id [aA-zZ][aA-zZ-0-9_]*
keyword if|else|when|while
integer [0-9]+
real integer\.integer
Run Code Online (Sandbox Code Playgroud)
..虽然有一些问题,但分析器无法获取关键字,例如,如果我给出“else”这个词,它会将其视为 id(我收到一条警告,例如规则也无法匹配。
此外,如果我尝试给出一个实数,例如 1.2,链接器会将其视为整数分隔符整数而不是实数。不过,我不擅长正则表达式语言,..我想为实数/整数区别放置一个规则,例如(“读取一个不以 . 结尾的数字,它是一个整数,否则它是一个数字”)但是我怎么能把它放在 reg. 语。