Hacker News new | ask | show | jobs
by xg15 182 days ago
Exactly - I'd see this as an example of a language that is not context-free, because generating the AST requires information beyond the root node/production and the characters of the subtree.

In contrast, languages like Java, JavaScript or C# would be context-free: The string

  hello(foo + bar * 5);
is not a "valid" JavaScript program, because of the undefined identifiers, but it does have a non-ambiguous AST.
1 comments

Thanks for the clarification. C has an easy to demonstrate example and languages like Java, JavaScript and C# are (deliberately in my opinion) closer to a true context-free grammar but they all have counter-examples and so are not context-free in the computer science sense.

https://stackoverflow.com/questions/898489/what-programming-...

(See also the answer by Dave with currently only the second most votes. If that is what you mean, I agree.)