static SymbolBase ParseLocField(string locField, ParsingStatus status) { if (locField == "") { return(null); } status.LineSection = LineSection.LocationField; var symbol = ValueSymbol.ParseDefinition(locField, 0, status); if (symbol == null) { status.ReportParsingError(0, locField.Length, "invalid symbol name"); return(null); } if (status.Symbols.Contains(symbol)) { symbol = status.Symbols[symbol.Name]; if (symbol.IsSymbolDefined && !symbol.IsMultiValuedSymbol) { status.ReportParsingError(0, locField.Length, "symbol already defined"); return(null); } return(symbol); } status.Symbols.Add(symbol); return(symbol); }
void MSetButton_Click(object sender, EventArgs e) { if (mSymbols == null) { mSymbols = new SymbolCollection(); } string symbolName = mSymbolNameTextBox.Text; long symbolMagnitude = mSymbolValueTextBox.Magnitude; Word.Signs symbolSign = mSymbolValueTextBox.Sign; SymbolBase symbol = mSymbols[symbolName]; ValueSymbol valueSymbol = null; if (symbol != null) { valueSymbol = symbol as ValueSymbol; if (valueSymbol == null) { return; } valueSymbol.SetValue(symbolSign, symbolMagnitude); var valueText = symbolMagnitude.ToString(); if (symbolSign.IsNegative()) { valueText = '-' + valueText; } mListView.Items[symbolName].SubItems[valueFieldIndex].Text = valueText; } else { valueSymbol = ValueSymbol.ParseDefinition(symbolName) as ValueSymbol; if (valueSymbol == null) { return; } valueSymbol.SetValue(symbolSign, symbolMagnitude); mSymbols.Add(valueSymbol); ShowSymbol(valueSymbol); } SetEnabledStates(); }