1

我最近接触到了一个颜色编码编译器功能,它可以让你在运行前知道你的代码是否可以工作。我也见过其他编译器采用的类似的纠错方法

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

4

1 回答 1

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更接近(距离方面),它也不是基类也不是属性,因此不予考虑。

问题是,与其他人相比,您最有可能犯同样的错误,因此整个社区能够了解自己并改进工具。

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

于 2012-05-11T18:11:45.620 回答