【開発技術】ソースコードを単語に切り分ける!「字句解析」|情報処理問題1000本ノック
人間が書いたプログラムをコンピュータが理解できるように翻訳する「コンパイラ」。その最初の工程であり、文字列を意味のある最小単位に分解する重要なステップを攻略しましょう。
1. 問題:コンパイラの処理工程
【 問題 】 コンパイラがソースコードを処理する過程において、プログラムの文字列を走査し、キーワード、識別子、定数、演算子といった意味を持つ最小の単位(トークン)に分割する工程を何と呼ぶでしょうか?
ア、字句解析 イ、構文解析 ウ、意味解析 エ、コード生成
2. 正解:言語処理プロセスに関する正解
正解: ア、字句解析(じくかいせき)
※英語では「Lexical Analysis」と呼びます。
3. 解説:翻訳の最初の「下ごしらえ」
コンパイラは、いきなり全体を理解するのではなく、段階を踏んで翻訳を進めます。
【図解:コンパイラの主な翻訳フロー】
① 字句解析 ★今回の正解
・文字列を「トークン(字句)」に切り分けます。
・例:
② 構文解析
・切り分けられたトークンの並びが、文法通りかチェックします。
・「構文木(抽象構文木)」と呼ばれるツリー構造を作ります。
③ 意味解析
・「変数aは宣言されているか?」「型は合っているか?」など、意味的な正しさをチェックします。
④ 最適化・コード生成
・より速く動くように効率化し、最終的な機械語(オブジェクトコード)を出力します。
① 字句解析 ★今回の正解
・文字列を「トークン(字句)」に切り分けます。
・例:
total = a + 10; → [total] [=] [a] [+] [10] [;]② 構文解析
・切り分けられたトークンの並びが、文法通りかチェックします。
・「構文木(抽象構文木)」と呼ばれるツリー構造を作ります。
③ 意味解析
・「変数aは宣言されているか?」「型は合っているか?」など、意味的な正しさをチェックします。
④ 最適化・コード生成
・より速く動くように効率化し、最終的な機械語(オブジェクトコード)を出力します。
[ 関連用語:トークン ]
★ プログラムにおける「単語」のようなものです。字句解析では、スペースやコメントを取り除き、このトークンの列へと変換します。
★ プログラムにおける「単語」のようなものです。字句解析では、スペースやコメントを取り除き、このトークンの列へと変換します。
1. 理解のコツ: 英文を読むときに、まず「英単語の区切り」を見つけるのが字句解析、その単語の並びから「これはS+V+Oの文法だ」と判断するのが構文解析です。まずは単語に分けないと、文法チェックもできません。
2. 試験対策の視点: 「トークンに分割」「最小単位」というキーワードがあれば字句解析です。また、これら一連の工程(字句→構文→意味→最適化→生成)の順番を問う問題も非常に多いので、セットで流れを覚えてしまいましょう。
4. まとめ
「ソースコードをトークンに分割する」。これが字句解析です。どんなに複雑なシステムも、まずはこの地道な「単語の切り出し」からすべてが始まります。
PR