語彙アナライザーはドキュメント全体を読み取るときに、文字をトークンにグループ化しようとします。Token は、TerminalSymbol およびこの記号を作成するために読み取られたテキストに関連付けられます。各 TerminalSymbol は、それぞれのトークンを作成するために使用可能なテキストを、Value および Comparison プロパティで示します。Comparison は、Value の解釈方法 (リテラル テキスト、大文字と小文字を区別しないリテラル テキスト、または正規表現) を示します。
語彙アナライザーは、常に、ドキュメントの読み取り中に指定された LexerState に関連付けられます。初期状態では、これは Grammar.LexerStates コレクションの DefaultLexerState です。各 LexerState は、LexerState.Symbols のコレクションを所有します。これらは TerminalSymbol インスタンスであり、その状態のインスタンスに対してトークンが作成されている場合があります。語彙アナライザーは、可能な限り長いトークンを作成できるまで文字を読み取ります。最長のトークンを表すことができる TerminalSymbol インスタンスが 2 つ以上ある場合、Symbols コレクションのなかで最も低い値のインデックスにある TerminalSymbol が使用されます。したがって、予約済みキーワードを表すTerminalSymbol インスタンスについては、必ず任意の ID を表す TerminalSymbol インスタンスの前に宣言して、可能な場合には常に予約済みキーワードが使用されるようにしてください。
レクサーによって作成されたトークンは、意味のあるトークンまたは意味のないトークンとしてマークされます。これは、トークンを構文解析の対象とするか、または構文解析で無視するべきかを示します。各トークンの影響は、そのトークンに関連付けられた IsSignificant プロパティの値 (設定されている場合) によって決定されます。これが設定されていない場合、トークンの影響は LanguageElement プロパティによって決定されます。言語要素が Whitespace、Newline、または Comment である場合、トークンは意味を持ちません。そうでなければ、意味を持ちます。
語彙アナライザーによって作成されたトークンが構文解析で処理されるときには、意味のあるトークンが構文ツリー内の SyntaxNode インスタンスに関連付けられ、その SyntaxNode.IsTokenNode 値が True に設定されます。意味のあるトークンは、作成された次のトークン ノードの行間が無視されたコンテンツ内で表されます。