0

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

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

3 回答 3

1

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

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

String str = "first line
same line"; 

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

于 2013-09-03T14:02:56.803 回答
0

我能想到的唯一不同之处在于字符串文字。如果两个 s 之间有换行符",则会导致语法错误,而空格则不会。

于 2013-09-03T14:06:30.367 回答
0

您必须注意它可能以字符串 \n 的形式出现,当然,如果您想进行此替换,您必须增加行号 +1,因为您将在项目的下一阶段需要它。

于 2013-09-03T14:11:54.013 回答