view trunk/src/cmd/ASTStats.d @ 672:d422e5f2f3ea

Added '--asttable' option to command 'statistics'.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Fri, 18 Jan 2008 00:30:14 +0100
parents 3bd947eb72c2
children e4b60543c5e8
line wrap: on
line source

/++
  Author: Aziz Köksal
  License: GPL3
+/
module cmd.ASTStats;

import dil.ast.DefaultVisitor;
import dil.ast.Node,
       dil.ast.Declaration,
       dil.ast.Statement,
       dil.ast.Expression,
       dil.ast.Types;

class ASTStats : DefaultVisitor
{
  uint[] table; /// Table for counting nodes.

  uint[] count(Node root)
  {
    table = new uint[classNames.length];
    super.visitN(root);
    return table;
  }

  // Override dispatch functions.
override:
  Declaration visitD(Declaration n)
  {
    table[n.kind]++;
    return super.visitD(n);
  }

  Statement visitS(Statement n)
  {
    table[n.kind]++;
    return super.visitS(n);
  }

  Expression visitE(Expression n)
  {
    table[n.kind]++;
    return super.visitE(n);
  }

  TypeNode visitT(TypeNode n)
  {
    table[n.kind]++;
    return super.visitT(n);
  }

  Node visitN(Node n)
  {
    table[n.kind]++;
    return super.visitN(n);
  }
}