Пример #1
0
            /// <summary>
            /// Constructs a debug view from a normal FullSymbol.
            /// </summary>
            /// <remarks>
            /// This constructor is required by the debugger.
            /// Consequently, Invalid AbsoluteIds are allowed.
            /// </remarks>
            public AbsoluteIdDebuggerView(FullSymbol fullSymbol)
            {
                Id = fullSymbol.Value;

                if (fullSymbol == Invalid)
                {
                    OwningSymbolTable = null;
                    Identifier        = null;
                }
                else
                {
                    OwningSymbolTable = HierarchicalNameTable.DebugTryGetTableForId(fullSymbol.Value) as SymbolTable;
                    if (OwningSymbolTable != null)
                    {
                        Identifier = fullSymbol.ToString(OwningSymbolTable);
                    }
                }
            }
Пример #2
0
        /// <summary>
        /// Attempts to get the full symbol of the combined symbols. If this value represents a full symbol
        /// it is returned unmodified.
        /// </summary>
        public bool TryGetFullSymbol(SymbolTable symbolTable, FullSymbol root, out FullSymbol fullSymbol)
        {
            var identifier = this;

            fullSymbol = root;

            while (identifier != null)
            {
                if (!fullSymbol.TryGet(symbolTable, identifier.Head, out fullSymbol))
                {
                    return(false);
                }

                identifier = identifier.m_tail;
            }

            return(true);
        }
Пример #3
0
 /// <summary>
 /// Writes a FullSymbol
 /// </summary>
 public virtual void Write(FullSymbol value)
 {
     Start <FullSymbol>();
     Write(value.Value.Value);
     End();
 }
Пример #4
0
 /// <summary>
 /// Attempts to get the full symbol of the combined symbols. If this value represents a full symbol
 /// it is returned unmodified.
 /// </summary>
 public bool TryGetFullSymbol(SymbolTable symbolTable, FullSymbol root, out FullSymbol fullSymbol)
 {
     return(root.TryGet(symbolTable, this, out fullSymbol));
 }
Пример #5
0
 /// <summary>
 /// Appends a string representation of <paramref name="fullSymbol"/> into <paramref name="builder"/>.
 /// </summary>
 public static void Append(this StringBuilder builder, FullSymbol fullSymbol, SymbolTable symbolTable)
 {
     builder.Append(fullSymbol.ToStringAsCharArray(symbolTable));
 }