与C++相比,Vala是一种理解的语言吗?

Dar*_*enW 7 c++ parsing vala

解析C++的问题是众所周知的.它不能纯粹基于语法进行解析,它不能像LALR那样完成(无论术语是什么,我不是语言理论家),语言规范是一个很多页面等等.由于这个和其他原因我为我的个人项目决定另一种语言.

Vala看起来很好.虽然提供了许多比C++更多的改进,但解析起来同样麻烦吗?或者它有一个整洁,合理的长度形式语法,或一些逻辑描述,适合构建编译器,源分析器和其他工具的解析器?

无论答案是什么,Genie替代语法都是如此?

(我也很想知道D和其他后C++非VM语言不太强烈.)

Bil*_*eal 7

C++是最复杂的(如果不是之一最复杂的)编程语言中常用的解析.特别困难的是它的名称查找规则和模板实例化规则.使用LALR(1)解析器(例如Bison和Yacc生成的解析器)无法解析C++,但它无论如何都是可解析的(毕竟,人们使用的解析器每天解析C++都没有问题).(实际上,早期版本的G ++是在Bison的广义LR解析器框架之上构建的,实际上没有,请参阅注释)之前它最近被手写的递归下降解析器取代了)

另一方面,我不确定我是否看到了Vala对C++的"改进".这些语言试图实现相同的目标.另一方面,您可能不会在使用Vala接口编写的GTK +之外找到更多内容.您将使用C接口来处理其他所有内容,这实际上违背了使用这种语言的要点.

如果由于它的复杂性而不喜欢C++,那么考虑使用Objective-C可能是一个好主意,因为它是C的简单扩展(如Vala),但是有一个更大的程序员社区供你使用借鉴它为Mac领域的一切奠定了基础.

最后,我不明白为什么解析语言本身的难度与程序员为了使用该语言应该关心的内容有关.只需2美分.

  • 至于"可怕的解析语言",很多人都会得到我的投票:PHP因为纯粹的糟糕定义; 大型机自然是因为在任何地方都有关键字,有时可能是标识符,有时不是 如果你想坚持下去,请尝试解析任何动态HTML,其中人们将JavaScript片段与HTML块和客户端代码混合在一起,而第三语言(C#,JSP,...)则生成JavaScript.(如果你想*分析*HTML页面,你需要做这样的事情). (2认同)

let*_*man 6

这很简单.您可以使用libval​​a进行解析,语义分析和代码生成,而不是编写自己的.