forthインタープリター

作品プログラム
動作環境
Sumire 2.0.1339
投稿者
ohisama
投稿日
2025-08-07 19:12:30
ダウンロード数
101

作品のプログラム

[文字列:文字列]を[区切り文字:文字列]で分割する手順:配列
  【配列】は,{}。
  【現在位置】は,1。
  【次の位置】。
  繰り返す
    次の位置は,文字列の現在位置文字目から区切り文字を探したもの。
    もし次の位置が0なら
      文字列の現在位置文字目以降を配列に加える。
      繰り返しから抜ける
    でないなら
      文字列の現在位置文字目から次の位置-現在位置文字,取り出したものを配列に加える。
      現在位置は,次の位置+1。
    もし終わり
    もし現在位置が文字列の文字数より大きいなら,
      繰り返しから抜ける
    もし終わり
  繰り返し終わり
  配列を返す。
終わり

[ソース]を、forthする手順
  stackというスタックを、作る
  行は,ソースを「 」で分割したもの。
  行を要素へそれぞれ繰り返す
    要素が「9」なら
      stackに、9を、積む
    他で要素が「+」なら
      topは、stackから、取り出したもの
      top2は、stackから、取り出したもの
      v = top2 + top
      stackに、vを、積む
    他で要素が「-」なら
      topは、stackから、取り出したもの
      top2は、stackから、取り出したもの
      v = top2 - top
      stackに、vを、積む
    他で要素が「/」なら
      topは、stackから、取り出したもの
      top2は、stackから、取り出したもの
      v = top2 / top
      stackに、vを、積む
    他で要素が「*」なら
      topは、stackから、取り出したもの
      top2は、stackから、取り出したもの
      v = top2 * top
      stackに、vを、積む
    他で要素が「dup」なら
      topは、stackから、取り出したもの
      stackに、topを、積む
      stackに、topを、積む
    他で要素が「drop」なら
      topは、stackから、取り出したもの
    他で要素が「.」なら
      topは、stackから、取り出したもの
         topを、出力して改行する
    そして
  そして
終わり

「9 9 - 9 9 / .」を、forthする
「9 9 / 9 9 / + .」をforth
「9 9 + 9 + 9 / .」をforth
「9 9 9 + 9 / dup + .」をforth
「9 9 9 + 9 / dup + - .」をforth
「9 dup 9 + 9 + 9 / - .」をforth
「9 9 9 + 9 / - .」をforth
「9 9 9 drop 9 / - .」をforth
「9 9 - 9 * 9 + .」をforth
「9 9 / 9 dup 9 / + .」をforth
「9 9 9 + 9 / + .」をforth
「9 dup 9 9 + + 9 / + .」をforth
「9 9 9 + 9 / dup + + .」をforth
「9 dup 9 9 + 9 / dup + - + .」をforth
「9 dup dup 9 + 9 + 9 / - + .」をforth
  
	

▲ページの先頭へ