Are the C++, C# or Java languages context-free or context-sensitive?
相关问题
- Correctly parse PDF paragraphs with Python
- R: eval(parse()) error message: cannot ope
- How do I parse a .pls file using PHP? Having troub
-
Create array from the contents of 相关文章
- How do I get from a type to the TryParse method?
- Algorithm for partially filling a polygonal mesh
- Slow ANTLR4 generated Parser in Python, but fast i
- Are there any reasons not to use “this” (“Self”, “
- Parsing JSON in QML [duplicate]
- How do I generate an AST from a string of C++ usin
- Why does the C++ compiler give errors after lines
- JSoup will not fetch all items?
C++ is neither context-free nor context-sensitive, since the template system is Turing-complete and determining whether a piece of C++ code is legal C++ is undecidably hard. For example, I could define a template class that simulates a TM on a string and then creates a constant with value 1 if the machine accepts and 0 if it does not. If I did that, then the following code would be legal iff the TM halted on the given input:
Since if the TM rejects, this creates an array of size 0, which is not allowed.
Neither C# nor Java is context-free, because checking of whether a variable is used correctly and consistently throughout a particular scope is known not to be context-free (the proof is complex and relies on Ogden's lemma). However, I'm not sure whether or not they are context-sensitive.
Hope this gives a partial answer to your questions!