Added Set Function

This commit is contained in:
Brychan Dempsey 2021-03-11 17:18:02 +13:00
parent 65c3ab8459
commit 3460149258

View File

@ -180,6 +180,40 @@ namespace Assignment_1
return true;
}
bool Set(Stream source)
{
string identifier;
long resultPos = FindIdentifier(source, out identifier);
if (resultPos < 0)
{
// Couldn't match an identifier
// If ID Doesn't exist, we should make it
return false;
}
source.Position = resultPos;
string expression;
resultPos = FindExpression(source, out expression);
if (resultPos < 0)
{
// Couldn't match expression
return false;
}
if (Symbols.ContainsKey(identifier))
{
if (Symbols[identifier].Item2 == VariableFlags.Reserved)
{
Console.WriteLine("Error: Cannot assign to {0} as it is a reserved constant.");
return false;
}
Symbols[identifier] = new Tuple<string, VariableFlags>(expression, Symbols[identifier].Item2);
}
else
{
Symbols.Add(identifier, new Tuple<string, VariableFlags>(expression, VariableFlags.Empty));
}
return true;
}
#endregion
#region Data Handling
// Data Handling