Showing content from http://github.com/gafter/csharpstandard below:
gafter/csharpstandard: Working space for ECMA-TC49-TG2, the C# standard committee.
Working space for ECMA-TC49-TG2, the C# standard committee.
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information, see the .NET Foundation Code of Conduct.
C# Language Specification
The branch draft-v6
has the draft text for C# 6.0. It has not been submitted as a formal standard to ECMA. This version is a working draft that contains the features for C# 6.0.
The branch standard-v5
has the ECMA C# 5.0 standard text, converted to Markdown. For the official standard, see the ECMA site.
This version is stored in this branch as a base markdown version to compare with future updated standard texts.
This folder contains tools related to maintaining and converting the ECMA C# spec (ECMA-354).
This folder contains an ANTLR grammar-extraction tool and support files.
-
ExtractGrammar.exe - the simple-minded grammar-extraction program. It processes only one md file.
-
GetGrammar.bat - the Windows batch file that invokes ExtractGrammar on each md file of the C# specification that contains ANTLR grammar blocks, in clause order, inserting some md headers and such along the way. The result is a file called grammar.md, which is a direct replacement for that file in the specification repo.
A minor wart: There is an extraneous blank line at the beginning of each of the lexical, syntactic, and unsafe grammars. At a glance, the amount of programming effort probably needed to stop this from happening seems to be huge compared with simply deleting those three lines manually.
This tool is used by the committee to produce a Word format of the standard for submission to ECMA or ISO. This is run on each PR to ensure we can always produce the correct format when needed.
This tool creates the outline using section numbers, and updates all links to the correct section number. Its purpose is to ensure that all references continue to point to the correct section, and that the table of contents shows the correct section numbers for all sections.
Contributors that add sections should follow the guidance in our contributor guide to ensure that links to new sections are incorporated correctly. This tool is run on each PR in a dry-run
mode to ensure that the changes will parse correctly. When a PR is merged, the tool runs to update all section links.
This project is supported by the .NET Foundation.
Table of contents - C# standard
- Foreword
- Introduction
- §1 Scope
- §2 Normative references
- §3 Terms and definitions
- §4 Acronyms and abbreviations
- §5 General description
- §6 Conformance
- §7 Lexical structure
- §8 Basic concepts
- §8.1 Application startup
- §8.2 Application termination
- §8.3 Declarations
- §8.4 Members
- §8.5 Member access
- §8.6 Signatures and overloading
- §8.7 Scopes
- §8.8 Namespace and type names
- §8.9 Automatic memory management
- §8.10 Execution order
- §9 Types
- §9.1 General
- §9.2 Reference types
- §9.3 Value types
- §9.4 Constructed types
- §9.5 Type parameters
- §9.6 Expression tree types
- §9.7 The dynamic type
- §10 Variables
- §10.1 General
- §10.2 Variable categories
- §10.3 Default values
- §10.4 Definite assignment
- §10.4.1 General
- §10.4.2 Initially assigned variables
- §10.4.3 Initially unassigned variables
- §10.4.4 Precise rules for determining definite assignment
- §10.5 Variable references
- §10.6 Atomicity of variable references
- §11 Conversions
- §11.1 General
- §11.2 Implicit conversions
- §11.2.1 General
- §11.2.2 Identity conversion
- §11.2.3 Implicit numeric conversions
- §11.2.4 Implicit enumeration conversions
- §11.2.5 Implicit nullable conversions
- §11.2.6 Null literal conversions
- §11.2.7 Implicit reference conversions
- §11.2.8 Boxing conversions
- §11.2.9 Implicit dynamic conversions
- §11.2.10 Implicit constant expression conversions
- §11.2.11 Implicit conversions involving type parameters
- §11.2.12 User-defined implicit conversions
- §11.2.13 Anonymous function conversions and method group conversions
- §11.3 Explicit conversions
- §11.3.1 General
- §11.3.2 Explicit numeric conversions
- §11.3.3 Explicit enumeration conversions
- §11.3.4 Explicit nullable conversions
- §11.3.5 Explicit reference conversions
- §11.3.6 Unboxing conversions
- §11.3.7 Explicit dynamic conversions
- §11.3.8 Explicit conversions involving type parameters
- §11.3.9 User-defined explicit conversions
- §11.4 Standard conversions
- §11.5 User-defined conversions
- §11.5.1 General
- §11.5.2 Permitted user-defined conversions
- §11.5.3 Evaluation of user-defined conversions
- §11.5.4 User-defined implicit conversions
- §11.5.5 User-defined explicit conversions
- §11.6 Conversions involving nullable types
- §11.7 Anonymous function conversions
- §11.7.1 General
- §11.7.2 Evaluation of anonymous function conversions to delegate types
- §11.7.3 Evaluation of anonymous function conversions to expression tree types
- §11.8 Method group conversions
- §12 Expressions
- §13 Statements
- §14 Namespaces
- §14.1 General
- §14.2 Compilation units
- §14.3 Namespace declarations
- §14.4 Extern alias directives
- §14.5 Using directives
- §14.6 Namespace member declarations
- §14.7 Type declarations
- §14.8 Qualified alias member
- §15 Classes
- §16 Structs
- §17 Arrays
- §18 Interfaces
- §18.1 General
- §18.2 Interface declarations
- §18.3 Interface body
- §18.4 Interface members
- §18.5 Qualified interface member names
- §18.6 Interface implementations
- §18.6.1 General
- §18.6.2 Explicit interface member implementations
- §18.6.3 Uniqueness of implemented interfaces
- §18.6.4 Implementation of generic methods
- §18.6.5 Interface mapping
- §18.6.6 Interface implementation inheritance
- §18.6.7 Interface re-implementation
- §18.6.8 Abstract classes and interfaces
- §19 Enums
- §20 Delegates
- §21 Exceptions
- §21.1 General
- §21.2 Causes of exceptions
- §21.3 The System.Exception class
- §21.4 How exceptions are handled
- §21.5 Common exception classes
- §22 Attributes
- §22.1 General
- §22.2 Attribute classes
- §22.3 Attribute specification
- §22.4 Attribute instances
- §22.5 Reserved attributes
- §22.6 Attributes for interoperation
- §23 Unsafe code
- §A Grammar
- §A.1 General
- §A.2 Lexical grammar
- §A.3 Syntactic grammar
- §A.4 Grammar extensions for unsafe code
- §B Portability issues
- §B.1 General
- §B.2 Undefined behavior
- §B.3 Implementation-defined behavior
- §B.4 Unspecified behavior
- §B.5 Other Issues
- §C Standard library
- §C.1 General
- §C.2 Standard Library Types defined in ISO/IEC 23271
- §C.3 Standard Library Types not defined in ISO/IEC 23271
- §D Documentation comments
- §D.1 General
- §D.2 Introduction
- §D.3 Recommended tags
- §D.4 Processing the documentation file
- §D.5 An example
- §E Bibliography
RetroSearch is an open source project built by @garambo
| Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4