或者,更准确地说:哪些编程语言是由上下文无关文法定义的?
据我所知,由于宏和模板之类的东西,C++并不是上下文无关的。我的直觉告诉我,函数式语言可能是上下文无关的,但我没有任何确凿的数据来支持这一点。
简要示例的额外代表:-)
发布于 2011-08-02 14:50:53
根据你对问题的理解,答案会有所不同。但是,正确的答案是,所有现代编程语言实际上都是上下文敏感的。例如,没有上下文无关的语法只接受语法上正确的C程序。那些指向C的yacc/bison上下文无关文法的人没有抓住要点。
发布于 2009-08-18 03:14:30
举一个非上下文无关语法的最具戏剧性的例子,据我所知,Perl的语法是turing-complete。
发布于 2012-06-25 21:46:32
如果我理解你的问题,你正在寻找可以用上下文无关文法( cfg )描述的编程语言,以便cfg生成所有有效的程序,并且只生成有效的程序。
因此,我认为大多数(如果不是全部)现代编程语言都不是上下文无关的。例如,一旦你有了用户定义的类型(在现代语言中很常见),你就自动是上下文敏感的。
验证语法和验证程序的语义正确性是有区别的。检查语法是上下文无关的,而检查语义正确性则不是(同样,在大多数语言中)。
然而,这并不意味着这样的语言不能存在。例如,非类型化的lambda calculus可以使用上下文无关的语法来描述,当然,它是图灵完成的。
https://stackoverflow.com/questions/898489
复制相似问题