2章Forthで行こう――スタックマシンGo Forth

制約

  • データスタックを持つ。すべての操作(条件分岐、演算など)は、スタック上のデータに対して行われる。
  • 後の操作に必要なデータを保存するためのヒープを持つ。ヒープデータには名前を付けられる(言い換えると、これは変数である)。上述したように、すべての操作はスタック上のデータに対して行われるため、操作が必要なヒープのデータは、まずスタックに移動し、最終的にヒープに戻す必要がある。
  • ユーザ定義の「手続き」(つまり、名前に束縛された命令の集合)による抽象化。手続き以外の呼び方をする場合もある。

プログラム

  1 #!/usr/bin/env python
  2 import sys, re, operator, string
  3
  4 #
  5 # 最も重要なデータであるスタック
  6 #
  7 stack = []
  8
  9 #
 10 # ヒープ。データと名前の関連付け(つまり、変数)
 11 #
 12 heap = {}
 13
 14 #
 15 # このプログラムの新しいワード(手続き)
 16 #
 17 def read_file():
 18     """
 19     スタックからファイルのパスを取得し、
 20     ファイルの内容全体をスタックに戻す。
 21     """
 22     f = open(stack.pop())
 23     # 結果をスタックにプッシュする
 24 stack.append([f.read()]) ...

Get プログラミング文体練習 ―Pythonで学ぶ40のプログラミングスタイル now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.