Nova.0.6.zip
Nova.CLI
Nova.CodeDOM
CodeDOM
Annotations
Base
Expressions
AnonymousMethods
Base
Operators
Other
References
Base
GotoTargets
Methods
Namespaces
Other
Properties
Types
Variables
Projects
Statements
Base
Conditionals
Exceptions
Generics
Iterators
Jumps
Loops
Methods
Miscellaneous
Namespaces
Properties
Types
Variables
Configuration.cs
Log.cs
Nova.CodeDOM.csproj
Parsing
Properties
Rendering
Resolving
Utilities
Nova.Examples
Nova.sln
Nova.Studio
Nova.Test
Nova.UI
CodeDOM
Annotations
Base
Expressions
AnonymousMethods
Base
Operators
Other
References
Base
GotoTargets
Methods
Namespaces
Other
Properties
Types
Variables
Projects
Statements
Base
Conditionals
Exceptions
Generics
Iterators
Jumps
Loops
Methods
Miscellaneous
Namespaces
Properties
Types
Variables
CodeRenderer.cs
Nova.UI.csproj
Properties
Resolving
Utilties
Nova.0.6.exe.zip
|
// The Nova Project by Ken Beckett.
// Copyright (C) 2007-2012 Inevitable Software, all rights reserved.
// Released under the Common Development and Distribution License, CDDL-1.0: http://opensource.org/licenses/cddl1.php
using Nova.Parsing;
using Nova.Resolving;
namespace Nova.CodeDOM
{
/// <summary>
/// Represents a reference to the base class of the current object instance.
/// </summary>
public class BaseRef : SelfRef
{
#region /* CONSTRUCTORS */
/// <summary>
/// Create a <see cref="BaseRef"/>.
/// </summary>
public BaseRef(bool isFirstOnLine)
: base(isFirstOnLine)
{ }
/// <summary>
/// Create a <see cref="BaseRef"/>.
/// </summary>
public BaseRef()
: base(false)
{ }
#endregion
#region /* PROPERTIES */
/// <summary>
/// The name of the <see cref="SymbolicRef"/>.
/// </summary>
public override string Name
{
get { return ParseToken; }
}
/// <summary>
/// The code object to which the <see cref="SymbolicRef"/> refers.
/// </summary>
public override object Reference
{
get
{
// Evaluate to the base type declaration, so that most properties and methods
// will function according to it.
TypeDecl typeDecl = FindParent<TypeDecl>();
return (typeDecl != null ? typeDecl.GetBaseType().Reference : null);
}
}
#endregion
#region /* PARSING */
/// <summary>
/// The token used to parse the code object.
/// </summary>
public const string ParseToken = "base";
internal static new void AddParsePoints()
{
Parser.AddParsePoint(ParseToken, Parse);
}
/// <summary>
/// Parse a <see cref="BaseRef"/>.
/// </summary>
public static BaseRef Parse(Parser parser, CodeObject parent, ParseFlags flags)
{
return new BaseRef(parser, parent);
}
protected BaseRef(Parser parser, CodeObject parent)
: base(parser, parent)
{
parser.NextToken(); // Move past 'base'
}
#endregion
#region /* RESOLVING */
/// <summary>
/// Evaluate the type of the <see cref="Expression"/>.
/// </summary>
/// <returns>The resulting <see cref="TypeRef"/> or <see cref="UnresolvedRef"/>.</returns>
public override TypeRefBase EvaluateType(bool withoutConstants)
{
TypeDecl typeDecl = FindParent<TypeDecl>();
return (typeDecl != null ? (TypeRefBase)typeDecl.GetBaseType() : new UnresolvedRef(ParseToken, ResolveCategory.Type, LineNumber, ColumnNumber));
}
#endregion
#region /* RENDERING */
/// <summary>
/// The keyword associated with the <see cref="SelfRef"/>.
/// </summary>
public override string Keyword
{
get { return ParseToken; }
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I've been writing software since the late 70's, currently focusing mainly on C#.NET. I also like to travel around the world, and I own a Chocolate Factory (sadly, none of my employees are oompa loompas).