特定の入力ファイルを解析するこのプログラムで作業していたので、キーワード一覧を除いてほとんどすべてが正しく出力されています。このリストは最後の文字だけが印刷されるのはなぜですか?
キーワードリストと関連機能についてHERESにコードスニペット:持つ
public class Token //Token structure to be added for each Token in the tokenTable
{
public string value;
public string type;
}
internal static class Define_input_output
{
public const string inFile = "input.txt"; //set file to read
public const string outFile = "output.txt"; //set file to write to
}
public static void placeKeywords_in_keywordsTable(List<string> keywords, List<Token> keywordTable)
{
Token newToken = new Token();
for (int i = 0; i < keywords.Count; i++) //loop through each keyword
{
newToken.value = keywords[i]; //add keyword[i] to newToken's value
newToken.type = "KW"; //assign "kw" to newToken's type
keywordTable.Add(newToken); //push newToken to keywordTable
}
}
public static void print_Tables_to_outputFile(StreamWriter output, List<Token> keywordTable)
{
output.Write("\r\n");
output.Write("-".PadRight(21, '-'));
output.Write("\r\n");
output.Write(' ');
output.Write("Keyword ".PadRight(11));
output.Write("|".PadRight(2));
output.Write("Index");
output.Write("\r\n");
output.Write("-".PadRight(21, '-'));
output.Write("\r\n");
for (int i = 0; i < keywordTable.Count; i++) //loop through each element in keywordTable
{
output.Write(' ');
output.Write((keywordTable[i].value).PadRight(10));
output.Write(" |".PadRight(7));
output.Write(i);
output.Write("\r\n");
}
}
static int Main()
{
StreamReader input = new StreamReader(Define_input_output.inFile);//input file
StreamWriter output = new StreamWriter(Define_input_output.outFile);//output file
List<string> keywords = new List<string>() { "else", "if", "int", "return", "void", "while", "+", "-", "*", "/", "<", "<=", ">", ">=", "==", "!=", "=", ";", ",", "(", ")", "[", "]", "{", "}", "/*", "*/" };
List<Token> keywordTable = new List<Token>();
placeKeywords_in_keywordsTable(keywords, keywordTable); //place all the keywords into keywordTable
while (!input.EndOfStream) //read each line until end of file
{
read_inputFile(input, output, keywordTable);
}
print_Tables_to_outputFile(output, keywordTable);
input.Close(); //close input file
output.Close(); //close output file
return 0;
}
問題イムは、この「* /」の文字がキーワードテーブルにプリントアウトされています。そのインデックスは26回(これはリストの中にいくつの文字があるかということから正しい索引量です)。 リストから最後の2文字を削除することでこれをテストし、代わりに「}」文字が26回印刷を開始しました。
私はコードを何回も注意深く見ているので、何が欠けているのか分かりません。問題点がわかりません。 何か助けていただければ幸いです。ありがとう!
AWESOME!ありがとうございます – masterofcatastrophe
@masterofcatastrophe - あなたは歓迎です:) –
確かに、私はちょうどタイマーを待っている笑 – masterofcatastrophe