using DOM.DSL.Contracts;
namespace DOM.DSL.Tokens
{
///
/// Abstract token
///
public abstract class TToken : TCloneable
{
public abstract TToken Clone();
///
/// Copying token with set NextToken to null, to break cycle
///
///
public abstract TToken CloneLocal();
public TElementToken AsElementToken() => this as TElementToken;
public TFunctionToken AsFunctionToken() => this as TFunctionToken;
public TTextToken AsTextToken() => this as TTextToken;
public TBlockToken AsBlockToken() => this as TBlockToken;
public TPropertyToken AsPropertyToken() => this as TPropertyToken;
public TSystemToken AsSystemToken() => this as TSystemToken;
}
}