Standard Libraries

import Type

/** Classes to deal with the most common types of generated files. */

/** antlr-generated scanner or parser class */
class AntlrGenerated extends Class {
   AntlrGenerated() {
     exists(RefType t |
     this.getASupertype+() = t and
      (t.hasQualifiedName("antlr","TreeParser") or
       t.hasQualifiedName("antlr","CharScanner") or
       t.hasQualifiedName("antlr","LLkParser")))
   }
}

/** any generated class */
class GeneratedClass extends Class {
  GeneratedClass() {
    this instanceof AntlrGenerated
  }
}

/** a generated callable */
class GeneratedCallable extends Callable {
  GeneratedCallable() {
    this.getDeclaringType() instanceof GeneratedClass
  }
}