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

时间:2014-11-14 14:42:44

标签: c# regex lexical-analysis

我正在尝试为C#语言编写一个词法分析器,但我无法弄清楚除了上下文之外如何区分加号和加号运算符。  我需要源文件中的下一个标记。所以,当我遇到一个+我现在如何引用一些整数,真实的,或者它引用+运算符的声明? 我的scannig功能如何恰当地区分这两种情况? 案件类似于此<和< =,<<,但在我的情况下,下一个角色每次都没有帮助。

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

1 个答案:

答案 0 :(得分:1)

  

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

好的,但你错了你的词法分析器/解析器分离栏了。

词法分析者的工作是将输入字符串" 输入到令牌中。解析器的工作就是解释这些。你的词法分析器应该只检测+运算符,发出相应的标记,然后就是它。

然后,你的解析器具有上下文知识(即它知道它在某一特定时刻试图解析的表达式的哪一部分)处于更好的位置,以便在一元和二元运算符。词法分析器只是缺乏必要的信息。

显然,您不应将-符号包含在数字代币中。

以下是一些令人兴奋的例子:

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

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

请注意第一种情况下的+ 1。你的词法分子不应该发出+1