如何编写正则表达式来识别加号运算符和加号

本文关键字:运算符 识别 何编写 正则表达式 | 更新日期: 2023-09-27 18:30:28

我正在尝试为 C# 语言编写一个词法分析器,但我无法弄清楚如何区分加号和加号运算符,除了上下文。 我需要源文件中的下一个令牌。那么,当我遇到 + 时,我现在如何引用某个整数、实数的声明,或者它指的是 + 运算符?我的扫描功能如何适当地区分这两种情况?这种情况类似于这个<和><=,<<,但在我的情况下,下一个字符每次都没有帮助。

int a = +1;
a=2 + 3;

如何编写正则表达式来识别加号运算符和加号

我正在尝试为 C# 语言编写词法分析器

好的,但是您在此处错误放置了词法分析器/解析器分隔栏。

词法分析器的工作是将输入字符串"剪切"为标记。解析器的工作是解释这些。您的词法分析器应该只检测+运算符,发出相应的令牌,仅此而已。

然后,具有上下文知识的解析器(即它知道在给定时刻尝试解析表达式的哪一部分)可以更好地区分一元运算符和二进制运算符。词法分析器只是缺乏必要的信息。

显然,您也不应将-符号包含在数字令牌中。

以下是一些词法分析示例:

int a=+1; --> int a = + 1 ;

a=2+3; --> a = 2 + 3 ;

请注意第一种情况下的+ 1。您的词法分析器不应发出+1 .