Skip to content

Commit 021aa2c

Browse files
authored
Update ECMA-TC49-TG2-New-Member-Orientation.md (#1412)
Fix mistake, ANTLR does not support *mutual* left recursion. In the process expanded the para.
1 parent f075984 commit 021aa2c

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

admin/ECMA-TC49-TG2-New-Member-Orientation.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Some years ago, we moved the spec source from MS Word to GitHub/md, and later th
2424
- Chair of ECMA TC49: This keeps him in touch with the Ecma Secretary General, the bi-annual General Assembly, and the associated Ecma Executive Committee (ExeComm).
2525
- Ecma liaison to ISO/IEC JTC/1 SC22 (programming languages, tools, and environments): For TC49 (C#, CLI, Eiffel) and TC39 (ECMAScript).
2626
- Background task: Rex has been creating formal feature specs from [MS’ specs](https://github.com/dotnet/csharplang/tree/main/proposals) for V9–14. The V9 ones are already in the repo as Draft PRs. The formal feature specs for versions beyond V9 are kept offline by Rex (with Jon and Bill also having copies). When V8 is completed and we start work on the V9 Draft PRs, Rex will make the V10 Draft PRs available.
27-
27+
2828
## Official Document Home
2929

3030
All meeting agendas and minutes are assigned numbers by Ecma admin staff, and are posted to the Ecma-hosted TG2 website to which all members have access. Draft versions of these documents are posted privately to members.
@@ -37,22 +37,20 @@ To avoid that extra ISO step and to eliminate the 1-year delay, in December 2022
3737

3838
Ordinarily, Ecma approves new specs at its June and December General Assemblies (GAs). To get considered at one of those, we need to have a feature-complete and almost technically complete spec ready by mid-March or mid-September, respectively. If we submit a new version at any other time, rather than have it voted on via a letter ballot, it typcially waits until the next GA. That said, once TG2 completes a version it typically starts work on next one, as Draft PRs for that are already available.
3939

40-
If errors are found in a published spec, we do ***not*** make available a corrected version; corrections simply go into the next version.
40+
If errors are found in a published spec, we do ***not*** make available a corrected version; corrections simply go into the next version.
4141

4242
## C# Formal Grammar
4343

44-
Some time ago, we moved from an eBNF form to [ANTLR](https://en.wikipedia.org/wiki/ANTLR).
44+
Some time ago, we moved from an eBNF form to [ANTLR](https://en.wikipedia.org/wiki/ANTLR) notation for the grammar.
4545

46-
Nigel is our resident grammar expert.
46+
While the grammar is written in ANTLR notation the ANTLR parser generator itself cannot be used to build a parser directly based on it. This is due either to the use of grammar features the generator does not support, or the need to use non-grammar features of the ANTLR generator to support them. An example of the former is the C# grammar’s use in a few placers of mutual left recursion, which the ANTLR generator does not support. An example of the latter is C#’s interpolated strings which, like in many languages, are a “language within a language”. Standard *implementation* techniques exist to support such features, which as such are outside the scope of the C# Standard.
4747

48-
The core ANTLR implementation doesn’t allow left recursion, although a C#-code-generating version does.
48+
We have an internal tool to extract the grammar from the spec, apply ANTLR generator specific implementation techniques, validate the grammar, and run grammar tests. (See [antlr-testing](https://github.com/ECMA-TC49-TG2/antlr-testing/blob/v2/ReadMe.md).)
4949

50-
Nigel made a tool to extract the grammar from the spec and to rearrange the grammar to get it to pass the ANTLR validator.
51-
5250
## Examples in the spec
5351

5452
We have tools to extract the examples and compile them and execute them. (See https://github.com/dotnet/csharpstandard/blob/draft-v8/tools/README.md.)
55-
53+
5654
## Status of Features in the Current Spec Draft
5755

5856
For a given version *X*, see file v*X*-feature-tracker.md in https://github.com/dotnet/csharpstandard/tree/draft-v8/admin.

0 commit comments

Comments
 (0)