トークナイザーによって生成されるトークンのリストがあります。
List<Token> tokenList = new List<Token>();
そして、これがトークンクラスです。
public class Token
{
public Tokens TokenName { get; set; }
public string TokenValue { get; set; }
public Token Previous {
get; set;
}
public Token Next {
get; set;
}
public Token(Tokens name, string value)
{
TokenName = name;
TokenValue = value;
}
}
また、リスト内の各トークンのプロパティNext
とプロパティを設定する必要がありますが、それらがorまたはトークンを指すのを避け、次のものを使用する必要があります。Previous
NEWLINE
WHITESPACE
TABSPACE
これが私のコードです。
Token token = null;
foreach (Token tkn in tokenList)
{
if (token != null)
{
switch (token.TokenName)
{
case Tokens.NEWLINE:
case Tokens.WHITESPACE:
case Tokens.TABSPACE:
break;
default:
switch (tkn.TokenName)
{
case Tokens.NEWLINE:
case Tokens.WHITESPACE:
case Tokens.TABSPACE:
break;
default:
tkn.Previous = token;
token.Next = tkn;
token = tkn;
break;
}
break;
}
}
else
{
token = tkn;
}
}
しかし、うまくいかないようです。何か助けてください。