'宣言 Public Overloads Sub Add( _ ByVal symbol As TerminalSymbol, _ Optional ByVal isExitSymbol As Boolean _ )
public void Add( TerminalSymbol symbol, bool isExitSymbol )
例外 | 解説 |
---|---|
System.InvalidOperationException | 所有する Grammar の IsMutable の値が False の場合に発生します。 |
System.ArgumentNullException | symbol が null の場合に発生します。 |
System.ArgumentException | symbol が所有する LexerState と同じ Grammar に属しない場合に発生します。 |
System.ArgumentException | symbol が EndOfStreamSymbol の場合に発生します。 |
System.ArgumentException | isExitSymbol が True で、所有する LexerState がデフォルト レクサー状態の場合に発生します。 |
コレクションを所有する LexerState がデフォルトのレクサー状態ではない場合、オプションで、記号を終了記号として追加できます。これが終了記号である場合、レクサー状態はこの記号に関連付けられたトークンがレクサーによって作成されると終了します。レクサー状態が終了すると、レクサーはその状態になる前の状態に戻ります。LexerState 状態になるのは、TerminalSymbol.LexerStateToEnter が設定された TerminalSymbol と関連付けられるトークンが作成された時点です。TerminalSymbol が終了記号であり、かつ LexerStateToEnter が設定されている場合、LexerStateToEnter は無視されます。レクサーはある状態への変更と終了を同時に行うことはできません。この場合、レクサー状態の終了が優先されます。