Added a center-string function
Some checks failed
continuous-integration/appveyor/branch AppVeyor build failed
Some checks failed
continuous-integration/appveyor/branch AppVeyor build failed
This commit is contained in:
parent
5082bc6481
commit
74df6241cc
@ -30,6 +30,11 @@ namespace Assignment_1
|
||||
{ "NEWLINE", new Tuple<string, VariableFlags>("\n", VariableFlags.Reserved | VariableFlags.NoPrint) },
|
||||
{ "CARRIAGE_RETURN", new Tuple<string, VariableFlags>("\r", VariableFlags.Reserved | VariableFlags.NoPrint) }
|
||||
};
|
||||
|
||||
static List<char> ForbiddenChars = new List<char>
|
||||
{
|
||||
'$', '\\', '\"', '\''
|
||||
};
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Console.WriteLine("┌──────────────────────────────────────────┐");
|
||||
@ -197,7 +202,7 @@ namespace Assignment_1
|
||||
void List()
|
||||
{
|
||||
Console.WriteLine("┌" + new string('─', 15) + "┬" + new string('─', 25) + "┬" + new string('─', 9) + "┐");
|
||||
Console.WriteLine("│{0,-15}│{1,-25}│{2,9}│", "Symbol", "Value", "Flags");
|
||||
Console.WriteLine("│{0}│{1}│{2}│", CenterString("Symbol",15), CenterString("Value",25), CenterString("Flags",9));
|
||||
Console.WriteLine("├" + new string('─', 15) + "┼" + new string('─', 25) + "┼" + new string('─', 9) + "┤");
|
||||
int keyPos = 0;
|
||||
foreach (var item in Symbols)
|
||||
@ -267,9 +272,15 @@ namespace Assignment_1
|
||||
}
|
||||
string identifier;
|
||||
long identifierEndPos = FindIdentifier(source, out identifier);
|
||||
if (identifierEndPos <= source.Position + 1 )
|
||||
if (identifierEndPos <= source.Position + 1 || identifier.Trim().Length == 0)
|
||||
{
|
||||
WriteDebugLine(lineStart, "set ".Length, "???", source);
|
||||
WriteDebugLine(lineStart, "set ".Length, "expected an identifier", source);
|
||||
return false;
|
||||
}
|
||||
else if (ForbiddenChars.Exists((c) => identifier.Contains(c)))
|
||||
{
|
||||
char fbChar = ForbiddenChars.Find((c) => identifier.Contains(c));
|
||||
WriteDebugLine(lineStart, "set ".Length, string.Format("character {0} is not valid for an identifier", fbChar), source);
|
||||
return false;
|
||||
}
|
||||
source.Position = identifierEndPos;
|
||||
@ -531,7 +542,7 @@ namespace Assignment_1
|
||||
long originalPos = s.Position;
|
||||
string tempstring;
|
||||
long nextWSOccurance = FindNextOccurance(s, (c, s) => Char.IsWhiteSpace(c), out tempstring);
|
||||
while (tempstring.Length == 0)
|
||||
while (tempstring.Length == 0 && s.Position < s.Length)
|
||||
{
|
||||
nextWSOccurance = FindNextOccurance(s, (c, s) => Char.IsWhiteSpace(c), out tempstring);
|
||||
s.Position++;
|
||||
@ -635,5 +646,17 @@ namespace Assignment_1
|
||||
}
|
||||
s.Position--;
|
||||
}
|
||||
|
||||
static string CenterString(string source, int totalPadding, char paddingChar=' ')
|
||||
{
|
||||
if (source.Length >= totalPadding) return source;
|
||||
int leftHalf = (int)Math.Floor(source.Length / 2.0);
|
||||
int rightHalf = (int)Math.Ceiling(source.Length / 2.0);
|
||||
int leftHalfPad = (int)Math.Floor(totalPadding / 2.0);
|
||||
int rightHalfPad = (int)Math.Ceiling(totalPadding / 2.0);
|
||||
string t = "{0," + leftHalfPad + "}{1," + -1 * rightHalfPad + "}";
|
||||
string result = string.Format(t, source.Substring(0,leftHalf+1), source.Substring(rightHalf,source.Length-rightHalf));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user