FreeBASIC マニュアルのトップに戻る

FreeBASIC DevFbcLexer

目次→FreeBASIC のハッキング→FreeBASIC でのハッキングのための情報Lexer & preprocessor←オリジナル・サイト

Lexer(字句解析器) と Preprocessor(前処理)



lex*.bas: File input, tokenization, macro expansion buffer, token queue, #include contexts.
pp*.bas: Preprocessor directive parsing, macro expansion text construction.

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 の内容
グラフ呼び出しの概要

FreeBASIC の開発者用情報 に戻る
目次に戻る
ページ歴史:2016-08-10 12:23:15
日本語翻訳:WATANABE Makoto、原文著作者:DkLwikki

ホームページのトップに戻る

表示-非営利-継承