public bool TryGetSymbolDefinitionByName(string name, out IntermediateSymbolDefinition symbolDefinition)
        {
            // First, look in the built-ins.
            symbolDefinition = SymbolDefinitions.ByName(name);

            if (symbolDefinition == null)
            {
                if (this.ExtensionData == null)
                {
                    this.LoadExtensionData();
                }

                // Second, look in the extensions.
                foreach (var data in this.ExtensionData)
                {
                    if (data.TryGetSymbolDefinitionByName(name, out symbolDefinition))
                    {
                        break;
                    }
                }

                // Finally, look in the custom symbol definitions provided during an intermediate load.
                if (symbolDefinition == null)
                {
                    this.CustomDefinitionByName.TryGetValue(name, out symbolDefinition);
                }
            }

            return(symbolDefinition != null);
        }
        public void CanCreateFileSymbolByName()
        {
            var symbol = SymbolDefinitions.ByName("File").CreateSymbol();

            Assert.IsType <FileSymbol>(symbol);
            Assert.Same(SymbolDefinitions.File, symbol.Definition);
        }
        public void SymbolDefinitions_CheckDigitDecodings_ShouldReturnReciprocalEntriesForAllEncodings()
        {
            var symbols        = new SymbolDefinitions();
            var encodeMappings = symbols.CheckDigitEncodings;
            var decodeMappings = symbols.CheckDigitDecodings;

            foreach (var encodeMapping in encodeMappings)
            {
                var encodeValue = encodeMapping.Key;
                var encodeChar  = encodeMapping.Value;
                var decodeValue = decodeMappings[encodeChar];

                Assert.Equal(encodeValue, decodeValue);
            }
        }
        public void SymbolDefinitions_CheckDigitEncodings_ShouldReturnAllDistinctEntries()
        {
            var result = new SymbolDefinitions().CheckDigitEncodings;

            Assert.Equal(result.Count, result.Select(s => s.Value).Distinct().Count());
        }
        public void SymbolDefinitions_CheckDigitEncodings_ShouldReturn37Entries()
        {
            var result = new SymbolDefinitions().CheckDigitEncodings;

            Assert.Equal(37, result.Count);
        }
        public void SymbolDefinitions_ValueEncodings_ShouldReturn32Entries()
        {
            var result = new SymbolDefinitions().ValueEncodings;

            Assert.Equal(32, result.Count);
        }
Exemplo n.º 7
0
        public void DefineSymbol(ISymbol symbol, Location location)
        {
            var path = SymbolPath.ForSymbol(symbol ?? throw new ArgumentNullException(nameof(symbol)));

            SymbolDefinitions.Add(path, new SymbolDefinitionBuilder(path, symbol, location ?? throw new ArgumentNullException(nameof(location))));
        }
Exemplo n.º 8
0
        public IntermediateSymbol CreateSymbol(IntermediateSection section, SourceLineNumber sourceLineNumbers, SymbolDefinitionType symbolType, Identifier identifier = null)
        {
            var symbolDefinition = SymbolDefinitions.ByType(symbolType);

            return(this.CreateSymbol(section, sourceLineNumbers, symbolDefinition, identifier));
        }