6 初歩的な電卓(1)

計算順序
123 + 456 * 789

を とりあえず順々に計算する
(演算の優先順位はとりあえず考えない)

「計算」について(補足解説)
プログラミングの目的
優先度について

演算子の優先度を考えるかどうかで答5えは違ったものになる。ちなみに、 operator

黒板図 token

手順

1 トークンへの分解 字句解析 スキャン or Lexical Analyzing,
2 構文解析 Parsing
3 インストラクション実行 Execution

補足(記法と用語について)

Read-eval-print loop REPL

6.1 プログラムの大枠

Read-eval-print loop(右図) eval

1 トークンへの分解

日本語文
トークン

→ 結果は配列にして保持する(というプログラムの作り方が一般的)

方法として3通り

比較的 シンプルな(でも実用的な) スキャナー

while gets do
  p $_.scan(%r!\d+|[-+/*%]!)
end

量指定子 ここで使われている

解説(別頁 図が見にくいが)も参照されたし。

実際に 作って実行してみる

この先は(前に説明したように)エディタでプログラムを入力編集し、
それを実行する。
ソースファイル名は 適当でいいが

手順 a

RxPL
  1. 外側ループ

    while gets do
     # この中身をこれから作る
     #  ただし、一番外側のループは今後は省略して示していく
    end
    走査
  2. スキャン

  3. 構文解析 (この2つは今日は省略する。 代わりに、ループの中身として、

    puts $_         # 入力したものをそのまま出力

    または、

    p $_.scan(%r!\d+|[-+/*%]!)
    # 前述の簡易スキャナーの結果を出力

    を入れて動作させてみること。