<?xml version="1.0"?>
<clause number="9.3.1" title="Line terminators">
  <paragraph>Line terminators divide the characters of a C# source file into lines. <grammar_production><name><non_terminal where="9.3.1">new-line</non_terminal></name> :: <rhs>Carriage return character (U+000D) </rhs><rhs>Line feed character (U+000A) </rhs><rhs>Carriage return character (U+000D) followed by line feed character (U+000A) </rhs><rhs>Line separator character (U+2028) </rhs><rhs>Paragraph separator character (U+2029) </rhs></grammar_production></paragraph>
  <paragraph>For compatibility with source code editing tools that add end-of-file markers, and to enable a source file to be viewed as a sequence of properly terminated lines, the following transformations are applied, in order, to every source file in a C# program: <list><list_item> If the last character of the source file is a Control-Z character (U+001A), this character is deleted. </list_item><list_item> A carriage-return character (U+000D) is added to the end of the source file if that source file is  non-empty and if the last character of the source file is not a carriage return (U+000D), a line feed (U+000A), a line separator (U+2028), or a paragraph separator (U+2029). </list_item></list></paragraph>
</clause>
