代码之家  ›  专栏  ›  技术社区  ›  DarenW

与C++相比,Vala是一种语法分析工具吗?

  •  7
  • DarenW  · 技术社区  · 14 年前

    解析C++的问题是众所周知的。它不能完全基于语法来解析,不能作为LALR(不管这个术语是什么,我不是语言理论家),语言规范是无数页,等等。因为这个和其他原因,我正在为我的个人项目决定一种替代语言。

    瓦拉看起来是一种很好的语言。虽然在C++上提供了很多改进,但解析也是一样麻烦吗?或者它是否有一个简洁、合理长度的形式语法,或者一些逻辑描述,适合于为编译器、源分析器和其他工具构建解析器?

    不管答案是什么,这适用于genie替代语法吗?

    (我还想知道,尽管对D和其他C++后非VM语言的关注程度较低。)

    2 回复  |  直到 14 年前
        1
  •  7
  •   Billy ONeal IS4    14 年前

    C++是最复杂的(如果不是) 这个 最复杂的)编程语言。特别困难的是它的名称查找规则和模板实例化规则。C++不是使用LALR(1)解析器(如BISY和YACC生成的解析器)可解析的,但它完全是可解析的(毕竟,人们每天使用解析无问题的解析器)。( 事实上,G++的早期版本是建立在比森的通用lr解析器框架之上的。 实际上不是,请参见注释),在它最近被手写的递归下降解析器替换之前)

    另一方面,我不确定我看到Vala对C++提供了什么“改进”。这些语言试图实现相同的目标。另一方面,在用vala接口编写的gtk+之外,您可能不会发现太多。您将要使用C接口来处理所有其他事情,这确实会破坏使用这种语言的意义。

    如果你不喜欢C++因为它的复杂性,那么考虑Objy-C可能是一个好主意,因为它是C的简单扩展,(像Vala),但是它有一个更大的程序员社区,供你在Mac Land中的一切基础上借鉴。

    最后,我不明白为什么解析语言本身的困难与程序员使用语言应该关心的事情有关。只有我的2美分。

        2
  •  6
  •   lethalman    14 年前

    很简单。您可以使用libvala进行解析、语义分析和代码生成,而不是编写自己的代码。