我目前正在为 Java 的一个子集开发一个解析器,我想知道;
- 是否有任何情况下,换行符不仅仅是标记分隔符?
- 也就是说,它们不能只被空格代替。
- 我应该像忽略空格一样忽略换行符吗?
- 也就是说,只需使用它们来检测令牌分离。
我目前正在为 Java 的一个子集开发一个解析器,我想知道;
是的,Java 源代码中的所有换行符都可以用空格替换或删除。但是,不要删除\n
(反斜杠 n),因为那是字符串文字中的换行符。
而且,是的,换行符对于解析器与空格相同,只要您在字符串文字之外。如果您在字符串文字中,并且您将删除换行符,那么您将抑制语法错误。因为在 Java 中不允许在 String 文字中包含换行符。所以,这是错误的:
String str = "first line
same line";
因此,这取决于您是否要使用解析器检测语法错误。您是否只解析有效代码?这是你应该问自己的问题。
我能想到的唯一不同之处在于字符串文字。如果两个 s 之间有换行符"
,则会导致语法错误,而空格则不会。
您必须注意它可能以字符串 \n 的形式出现,当然,如果您想进行此替换,您必须增加行号 +1,因为您将在项目的下一阶段需要它。