lexer は、.bas ファイルからソース・コードを読み、それを一連のトークンに翻訳します。
従って、FBパーサーは、これを:
dim as integer i = 5
print i
下のように見ます:
DIM keyword (Go to variable declaration parser)
AS keyword (Go to datatype parser)
INTEGER keyword (Data type)
"i" symbol (Back to variable declaration, variable identifier)
"=" operator (Go to initializer parser)
"5" number literal (Expression)
EOL statement end (Variable declaration parser is done,
the variable is added to the AST,
back to toplevel parser)
(Next line, next statement)
PRINT keyword (Go to QB print quirk function call parser)
"i" symbol (Expression, lookup "i" symbol, it's an integer variable,
create a CALL to fb_PrintInt(), the expression is the argument)
EOL (Print parser is done, back to toplevel)
EOF (Top-level parser is done)
Lexer(字句解析器)は、パーサー(構文解析ツール)から、ユーザ入力(インデント、コメント、キーワードの大文字・小文字、#includes)の醜い詳細を隠す、抽象的概念です。
さらに、Lexer(字句解析器)は、前処理し、マクロ展開を構成し、プリプロセッサー指令解析を行います。
一般の考えは、lexer で、全ての前処理を扱うことです。したがって、パーサーは、lexer を見るようにはなりません。
lexer関数はプリプロセッサー関数を呼びますが、パーサーは、プリプロセッサー関数を呼びません。
トークン
マクロ保存と展開
プロセッサ指示を解析
File の内容
グラフ呼び出しの概要