Skip to content

Latest commit

 

History

History
41 lines (32 loc) · 1.42 KB

explanation.md

File metadata and controls

41 lines (32 loc) · 1.42 KB
echo "hello world";

字句解析 字句解析では、入力の文字列を意味のある最小単位(トークン)に分割します。 以下が字句解析の結果として得られるトークン例です。

  • echo
  • "hello world"
  • ;

ここで、echoはプログラム内で定義された予約語、"hello world"は文字列リテラル、;は文の終端を示す記号として認識されます。

実際の出力

Tokens: [Symbol(string=echo), SequenceStart(string=(), String(string=Hello World!), SequenceEnd(string=))]

構文解析 構文解析では、字句解析で得られたトークン列を言語の文法ルールに基づいて解析し、構文木(Abstract Syntax Tree)を生成します。

            PrintStatement
            /            \
        echo            StringLiteral
                         /
                   "hello world"

PrintStatementノードは「出力文」を表し、その子ノードとしてキーワードechoと、出力する文字列リテラル"hello world"が格納されます。

Parsed expression: [Sequence(openSymbol=echo, children=[String(value=Hello World!)])]

インタープリターはこの構文木を基に、意味解析や実行処理を行っていきます。

Interpreting expression: Sequence(openSymbol=echo, children=[String(value=Hello World!)])
Hello World!