学习的编译器

时间:2012-05-11 03:15:32

标签: compiler-construction

我最近接触过一种颜色编码编译器功能,可以让您在运行时知道您的代码是否可行。我已经看到其他编译器使用类似的纠错方法

是否有一种编译器可以学习编程方式,甚至是你自己的编程错误?

1 个答案:

答案 0 :(得分:0)

我不了解自己学习的编译器,但我看到他们的开发人员学习并包含对典型错误模式的检测以及可能的纠正。

例如,Clang有:

  • 通过推断你的意思(如果可能的话)进行错误恢复,建议你,继续解析 - 如果你做的就是
  • 针对可能的错误for ( );的一些警告,后跟缩进语句,例如

此外,它还包括一种识别错误的错字修正,这真的非常令人惊讶。例如,测试套件中的typo-correction.cpp文件显示:

struct BaseType { };

struct Derived : public BaseType { // expected-note\
                                    {{base class 'BaseType' specified here}}

  static int base_type; // expected-note {{'base_type' declared here}}

  Derived() : basetype() {} // expected-error\
                             {{initializer 'basetype' does not name a non-static\
                               data member or base class; did you mean the base \
                               class 'BaseType'?}}
};

即使base_type更接近(距离方向),它也不是基类,也不是属性,因此不予考虑。

问题是,你最有可能做出与其他人相同的错误,因此整个社区都能够了解自己并加强其工具。

无论如何,也许不是编译器自己学习的情况,但你有时会想知道它是否有感觉!