/**
 *  Copyright (c) 2015, Facebook, Inc.
 *  All rights reserved.
 *
 *  This source code is licensed under the BSD-style license found in the
 *  LICENSE file in the root directory of this source tree. An additional grant
 *  of patent rights can be found in the PATENTS file in the same directory.
 */

#pragma once

#include "location.hh"

namespace facebook {
namespace graphql {
namespace ast {

namespace visitor {
class AstVisitor;
}

class Node {
  yy::location location_;
public:
  explicit Node(const yy::location &location)
    : location_(location) {}

  virtual ~Node() {}

  const yy::location &getLocation() const
  { return location_; }

  virtual void accept(visitor::AstVisitor *visitor) = 0;
};

}
}
}
