换行可以替换为空格吗? (词法分析器)

时间:2013-09-03 13:59:34

标签: java token lexical-analysis

我目前正在为Java的子集开发解析器,我很想知道;

  1. 是否有任何情况,其中换行符不仅仅是令牌分隔符?
    • 也就是说,他们不能只用空格代替。
  2. 我应该忽略换行符,就像忽略空格一样吗?
    • 也就是说,只需使用它们来检测令牌分离。

3 个答案:

答案 0 :(得分:1)

是的,Java源代码中的所有换行符都可以替换为空格或被删除。但是,不要删除\n(反斜杠n),因为这是字符串文字中的换行符。

并且,是的换行符与空格相同,只要你在String文字之外。如果您在String文字中,并且您将删除换行符,那么您将会遇到语法错误。因为Java中不允许在字符串文字中包含换行符。所以,这是错误的:

String str = "first line
same line"; 

因此,如果您想要使用解析器检测语法错误,则取决于事实。您是否只解析有效代码?这是你应该问自己的问题。

答案 1 :(得分:0)

我能想到的唯一情况就是String-literals。 如果两个"之间存在换行符,则会导致语法错误,而空格则不会。

答案 2 :(得分:0)

你必须注意它可能来自字符串\ n,当然如果你想要进行替换,你必须增加+1行,因为你将在项目的下一阶段需要它。