2011-12-28 9 views
0

私は、ファイルストリームで動作するプログラムのソースコード(C++で書かれています)を研究しています。しかし今はいつも、tokensと呼ばれるものがあります。あなたは私に説明してください。どのようなトークンがあり、なぜ有用なのですか?ありがとうございました。トークンとファイルストリーム

答えて

2

ストリームは、時間の経過とともに利用可能になるデータ要素のシーケンスを指します。ストリーム内のデータ要素は、文字、文字列、特殊目的のデータ構造など、あらゆる種類のものであってもよい。テキストファイルは、文字の流れとして単純に解釈することができる。

プログラミング言語の文脈では、というトークンのトークンは通常、文字ストリームからの1つ以上の関連文字のシーケンスを参照します。トークンは文字ストリームの上に抽象レベルを提供し、後で処理するためにストリームでグループ化されることがよくあります。

プログラミング言語のコンパイラで通常の処理シーケンスは、次に、パーサに渡されるトークンのストリームに文字のストリームを変換字句アナライザ始まります。トークンの典型的な表現は、タイプインジケータとトークンの内容とからなる。ここで

は一例です:10個のトークンのストリームに

class MyClass { 
public: 
    string name; 
}; 

レクサー・アナライザ・グループこのプログラム:C++プログラムのこのフラグメントを検討

'class' (keyword) 
'MyClass' (identifier) 
'{' (opening brace) 
'public' (keyword) 
':' (colon) 
'string' (identifier) 
'name' (identifier) 
';' (semicolon) 
'}' (closing brace) 
';' (semicolon) 
+0

セミコロンがありません(目的ではありません、私は願っています)。 – Xeo

+0

@おかげで、最後にセミコロンを追加しました。 – dasblinkenlight

1

トークンは「プレースホルダ」と考えることができます。トークンは特定のエンティティ(文字列)を表し、通常は2つの等価物間の何らかの仲介ステップです。たとえば、トークンは、特定の言語の構文を表すパーサーでよく使用されます。

+0

ので、それがなく、抽象的概念でありますいくつかの言語固有の機能、右ですか? –

+1

@Abdulali確かに、それは言語機能ではありません。ドキュメントは多くのトークンで構成され、トークンは最小の意味のある単位です。通常、完全な単語、セパレータなどです。 「123 + 456」は、トークン「123」、「+」、および「456」によって表すことができる。 –

+0

はい、正確です。私のパーサの例に戻る。パーサの第1段階は、 "lexer"(字句解析器)であり、入力構文にトークンを割り当てます。トークンは任意であり、後にタスクを実行するために特に選択されます。必要とされる "詳細"が増えるほど、より多くの種類のトークンが定義されます。 – VettelS

関連する問題