C#语法:“语法”是什么字符;新行“;性格

C#语法:“语法”是什么字符;新行“;性格,c#,compiler-construction,grammar,line-endings,C#,Compiler Construction,Grammar,Line Endings,我正在实现我自己的Lexer,并且刚刚了解了C#如何处理字符文本: 上述链接中描述了C#字符语法 它指定不允许“新行”字符作为字符文字。 但它没有说明“新行”字符是什么。 在我看来,这可能是以下情况之一: CR+LF(窗口) LF(unix和mac) CR(mac) CR | LF | CR+LF(全部) 由于一个文件可以在f.e.mac上创建,然后在windows上编译,我倾向于相信“新行”字符与案例4中的语法匹配。我记得VS问我在某些情况下是否要转换我的行尾以匹配windows的行尾。因为我

我正在实现我自己的Lexer,并且刚刚了解了C#如何处理字符文本:

上述链接中描述了C#字符语法
它指定不允许“新行”字符作为字符文字。
但它没有说明“新行”字符是什么。
在我看来,这可能是以下情况之一:

  • CR+LF(窗口)
  • LF(unix和mac)
  • CR(mac)
  • CR | LF | CR+LF(全部)
  • 由于一个文件可以在f.e.mac上创建,然后在windows上编译,我倾向于相信“新行”字符与案例4中的语法匹配。我记得VS问我在某些情况下是否要转换我的行尾以匹配windows的行尾。因为我们可以拒绝这个选项,所以可以坚持使用文件包含的任何结尾

    有人能确认案例4或告诉我我错了吗?

    事实上,根据规范,它可以是CR或LF,还可以是更多:


    我看不到有任何关于新行不被允许出现在该页面(或其英文对应页面)@SamiKuhmonen It sais(德语)Beliebiges Zeichen außer'(U+0027),\(U+005C)和一个新行字符的提及,该新行字符翻译成除(U+0027),\(U+005C)之外的任何字符和一个新行字符这就是
    环境的原因。新行
    存在。嗯,现在我明白了。想知道我的手机浏览器首先做了什么。没有提到:o@WillEnvironment.NewLine将返回当前操作系统的字符,该字符可能不是文件中的字符(如果文件是在其他操作系统上创建的)HA!我找不到那个规格!酷!那么这是C规范?不。这是C规范。@NoëlWidmer“C”是规范中的附录/章节名称,而不是语言
    
    new-line-character:
        Carriage return character (U+000D)
        Line feed character (U+000A)
        Line separator character (U+2028)
        Paragraph separator character (U+2029)