【发布时间】:2016-05-09 14:03:48
【问题描述】:
我正在实现我自己的 Lexer,只是看看 C# 如何处理 char 文字:https://msdn.microsoft.com/en-us/library/aa691087(v=vs.71).aspx
上面的链接中描述了 C# 字符语法
它指定“换行”字符不允许作为字符文字。
但它没有说明“换行”字符是什么。
从我的角度来看,它可能是以下之一:
- CR + LF(窗口)
- LF(unix 和 mac)
- CR (mac)
- CR ||低频 || CR + LF(全部)
因为可以在 f.e. 上创建一个文件。 mac,然后在 Windows 上编译我倾向于相信“新行”字符与案例 4 中的语法匹配。我记得 VS 曾问我是否想在某些情况下转换我的行尾以匹配 Windows 行尾。由于我们可以拒绝该选项,因此可以坚持使用文件包含的任何结尾。
有人可以确认案例 4 或告诉我我错了吗?
【问题讨论】:
-
我在该页面(或其英文对应部分)上看不到任何提及不允许换行的内容
-
@SamiKuhmonen It sais(德语)Beliebiges Zeichen außer ' (U+0027), \ (U+005C) und einem new-line-character 翻译为 除 ' (U+0027)、\ (U+005C) 和换行符之外的任何字符
-
这就是
Environment.NewLine存在的原因。 -
嗯,现在我明白了。想知道我的移动浏览器首先做了什么。没有提到那个:o
-
@Will Environment.NewLine 将返回当前操作系统的字符,该字符可能不是文件中的字符(如果文件是在另一个操作系统上创建的)
标签: c# compiler-construction grammar line-endings