3 ms·
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
by xg15 11mo 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.
- weinzierl 11mo agoThanks 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-languages-are-context-free?utm_source=perplexity 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.)