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.