Dev Study
← 解説「JavaScript の字句解析 — 識別子と予約語、数値、文字列、コメント」に戻る

サンプルコードで身につける: JavaScript の字句解析 — 識別子と予約語、数値、文字列、コメント

解説で学んだ概念を、3つの具体例で確認します。素朴な例から実務寄りの例へと進みます。

1識別子と予約語、数値

JsLexer の骨組みです。は先頭が英字・_・$、2 文字目以降は数字も可という規則で読んでから、KEYWORDS の表にあるかで と Identifier に振り分けます。数値は数字と '.' の連続を f64 にします。実行すると var count = total + 1.5; が 7 個のになり、return1 や $el は識別子で function だけが予約語になることが分かります。

Rust

2文字列のエスケープと // コメント

文字列は開いた引用符と同じ引用符で閉じ、\ が来たら「次の 1 文字」を読んで \n や \" を解釈する read_string です。// から行末までは skip_whitespace_and_comments が空白と同じように捨てるので、トークンになりません。実行すると "He said \"hi\"\n" が 1 つの Str になり、コメントの後ろの 'it\'s' + 'a\tb' が 3 つのトークンとして続きます。

Rust

3実務に写す: 検索条件の式を字句解析する

status = "open" AND age > 30 のようなフィルタ式の です。予約語の表を and / or / not に替え、コメント記号を # に替えただけで、 と pos で進める形は JavaScript の JsLexer と同じです。実行すると AND が小文字の Keyword("and") になり、# 以降のコメントは消え、改行の先の or not assigned_to も読めていることが分かります。

Rust