It's context-free because a context free grammar defined its input in term of terminals and the theory do not say how to map a token to a terminal.
Jay is right that it requires to use either some specific parser generator like Tatoo [1] the one i've written 10 years ago (because i wanted the tool to help me to extend a grammar easily) or to modify an existing parser generator so the parser can send the production state to the lexer which will enable/disable the automata that recognize the associated keywords . Rémi [1] http://dl.acm.org/citation.cfm?id=1168057 ----- Mail original ----- > De: "Alex Buckley" <alex.buck...@oracle.com> > À: "Jayaprakash Arthanareeswaran" <jarth...@in.ibm.com>, "Dan Smith" > <daniel.sm...@oracle.com>, "Brian Goetz" > <brian.go...@oracle.com> > Cc: jigsaw-dev@openjdk.java.net > Envoyé: Mercredi 3 Mai 2017 19:46:54 > Objet: Re: Java Platform Module System > On 5/2/2017 3:39 PM, Alex Buckley wrote: >> On 5/2/2017 7:07 AM, Jayaprakash Arthanareeswaran wrote: >>> Chapter 2 in [1] describes context-free grammars. The addition to "3.9 >>> Keywords" defines "restricted keywords", which prevent the grammar for >>> ModuleDeclaration from being context-free. This prevents compilers from >>> using common parser generators, since those typically only support >>> context-free grammars. The lexical/syntactic grammar split defined in >>> chapter 2 is not of much use for actual implementations of >>> module-info.java parsers. >>> The spec at least needs to point out that the given grammar for >>> ModuleDeclaration is not actually context-free. >> >> The syntactic grammar in JLS8 was not context-free either; the opening >> line of Chapter 2 has been false for years. For JLS9, I will remove the >> claim that the lexical and syntactic grammars are context-free, and >> perhaps a future JLS can discuss the difficulties in parsing the > > Jan Lahoda pointed out privately that the syntactic grammar in JLS8 and > JLS9 is in fact context-free -- it's just not LL(1). Not being LL(1) is > what I should have said the grammar hasn't been for a long time. > > Alex