4 ms·
The Java language specification includes a description of the language as a context free grammar. That alone does not make it a nice language, of course.
by lucian1900 14y ago
The Java language specification includes a description of the language as a context free grammar.
That alone does not make it a nice language, of course.
- masklinn 14y ago> The Java language specification includes a description of the language as a context free grammar. I can only assume that it's lying its pants off, as I noted in an other subthread `(a) - (b)` can't be parsed (to an AST) without knowing the identity of `a` in the current scope: if it's a type the expression is a cast of `-(b)` to `a`, if it's a value it's a subtraction of `(b)` from `(a)`.
- peterwoo 14y agoIt can be parsed to an AST -- as you note, it can be parsed into two ASTs. It's called an ambiguous grammar, which can still be context free.
- masklinn 14y ago> It can be parsed to an AST -- as you note, it can be parsed into two ASTs. By "it can't be parsed to an AST" I meant "it can't be parsed to a useful AST used to run or generate code" on its own, it needs to be disambiguated through contextual information before anything can be done with the prospective subtree. Sorry for the lack of clarity. > It's called an ambiguous grammar, which can still be context free. The only way to disambiguate is to provide expression context (namely visible name bindings at this point), it's essentially the same problem Eli Bendersky described when talking about C grammar's context-sensitivity: http://eli.thegreenplace.net/2007/11/24/the-context-sensitivity-of-cs-grammar/ http://eli.thegreenplace.net/2007/11/24/the-context-sensitiv...