首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >哪些编程语言是上下文无关的?

哪些编程语言是上下文无关的?
EN

Stack Overflow用户
提问于 2009-05-22 23:31:15
回答 6查看 30.4K关注 0票数 78

或者,更准确地说:哪些编程语言是由上下文无关文法定义的?

据我所知,由于宏和模板之类的东西,C++并不是上下文无关的。我的直觉告诉我,函数式语言可能是上下文无关的,但我没有任何确凿的数据来支持这一点。

简要示例的额外代表:-)

EN

回答 6

Stack Overflow用户

发布于 2011-08-02 14:50:53

根据你对问题的理解,答案会有所不同。但是,正确的答案是,所有现代编程语言实际上都是上下文敏感的。例如,没有上下文无关的语法只接受语法上正确的C程序。那些指向C的yacc/bison上下文无关文法的人没有抓住要点。

票数 8
EN

Stack Overflow用户

发布于 2009-08-18 03:14:30

举一个非上下文无关语法的最具戏剧性的例子,据我所知,Perl的语法是turing-complete

票数 6
EN

Stack Overflow用户

发布于 2012-06-25 21:46:32

如果我理解你的问题,你正在寻找可以用上下文无关文法( cfg )描述的编程语言,以便cfg生成所有有效的程序,并且只生成有效的程序。

因此,我认为大多数(如果不是全部)现代编程语言都不是上下文无关的。例如,一旦你有了用户定义的类型(在现代语言中很常见),你就自动是上下文敏感的。

验证语法和验证程序的语义正确性是有区别的。检查语法是上下文无关的,而检查语义正确性则不是(同样,在大多数语言中)。

然而,这并不意味着这样的语言不能存在。例如,非类型化的lambda calculus可以使用上下文无关的语法来描述,当然,它是图灵完成的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/898489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档