Coder Social home page Coder Social logo

joelmarcey / csharpstandard Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dotnet/csharpstandard

0.0 1.0 0.0 3.8 MB

Working space for ECMA-TC49-TG2, the C# standard committee.

License: Creative Commons Attribution 4.0 International

Shell 1.18% Smalltalk 0.05% C# 97.13% ANTLR 1.65%

csharpstandard's Introduction

C# language standard

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

C# 9.0 draft

The branch draft-v9 has Draft PRs and Issues for C# 9.0.

C# 8.0 draft

The branch draft-v8 has the evolving draft text for C# 8.0.

C# 7.0 draft

The branch standard-v7 has the text for C# 7.0. It has been submitted for consideration as a formal standard to ECMA.

C# 6.0 standard

The branch standard-v6 has the ECMA C# 6.0 standard text, in Markdown format. For the official standard, see the ECMA site.

C# 5.0 standard

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.

Comments within the standard

There are HTML comments (<!-- comment -->) within the standard for the sake of tooling. Some help in the process of converting the standard to Word, and others are for automated testing purposes.

Some automated test comments refer to error codes that are specific to the Microsoft C# compiler (e.g. "CS0509") to test that compilation fails as expected, where an example presents deliberately-invalid code. These error codes are not part of the standard, and should not be viewed as any kind of compliance check for other compilers.

More broadly, no comments should be regarded as being part of the standard itself.

Admin folder

A home for adminstrative files (such as [eventually] meeting agendas and minutes).

For now, it contains separate logs for past (v6, v7), present (v8), and future (v9) work going on to add new features.

Tools folder

This folder contains tools related to maintaining and converting the ECMA C# spec (ECMA-334).

GetGrammar

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.

MarkdownConverter

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.

StandardAnchorTags

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.

ExampleExtractor and ExampleTester

These two tools work in tandem to test that the examples presented work (or fail, where invalid code is presented) as expected.

ExampleExtractor populates a temporary directory with code and metadata extracted from the standard. ExampleTester then compiles and runs (where applicable) that code. The test-examples.sh script provides an easy way of running both tools together.

.NET Foundation

This project is supported by the .NET Foundation.

Table of contents - C# standard

The README.md file in the standard folder contains a detailed table of contents for the C# standard.

csharpstandard's People

Contributors

rexjaeschke avatar jskeet avatar billwagner avatar github-actions[bot] avatar nigel-ecma avatar madstorgersen avatar pkulikov avatar gafter avatar youssef1313 avatar ericlippert avatar bernd5 avatar xtqqczze avatar svick avatar nenerower avatar 333fred avatar amolankit avatar alexbuckgit avatar siriak avatar adegeo avatar ermancetin avatar gewarren avatar johndward01 avatar rivenskaye avatar hyryel avatar stesee avatar milantru avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.