Robot言語

たけおか@AXE

in English
last update: 1999/DEC/22
KVMで動くRobot言語インタープリタ KRobot

  1. Robot言語
  2. KRobot独自の機能

    Robot言語とは


    • 再帰的な曲線を描くための言語
    • タートル・グラフィックスで画を描く
    • 非常に単純なプログラミング言語
    • 繰り返し回数を記憶するために、Accが一つだけある
    • オリジナルのRobot仕様書 & 実装
      Litchen Wang:
      An Interactive programming Language for control of robots, DDJ, Vol.2, Issue 10, pp.60-63 (1977).
    • 日本での紹介文書
      石田晴久: ロボット言語, bit,Vol10, No.7, pp.35-50(1978))




    文法


    
      <文>  ::= <項><関数> | <項>(<文>) | <文><文>
    
    	Robotは<文>を実行します。
    	<項>はすぐ後のものの繰り返し回数を表わします。
    
    
      <項>  ::= a | <数> | 「何もなし」
    
    	「何もなし」は1を意味します。
    	aはAccの内容を意味します。
    
    
      <数>  ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | <数><数>
    
    	0は2^31を意味します。
    
    
      <関数>  ::= 「組み込み関数」 | 「ユーザ関数」
    
    	「組み込み関数」、「ユーザ関数」ともに以下。
     

    組み込み関数


        +
    	1+	Accをインクリメント
        -
    	1-	Accをデクリメント
        h
    	Home	画面中央部に移動
        n
    	North	画面上方を向く
        c
    	Clear	画面を消去
        r
    	Rotate	45度右へ回る
        f
    	Forward	線を引きながら1step進む
        j
    	Jump	線を引かずに1step進む
        t(<非ゼロ文>)(<ゼロ文>)
    	Test	Accが0でないなら<非ゼロ文>のみを
    		Accが0なら<ゼロ文>のみを実行する
    
        dF(<定義文>)
    	defun	ユーザ関数Fを<定義文>として定義する
     

    予約語


     
    
        a
    	Acc	項になってAccの値を示す
    		このRobotにはAccが一つだけある
    		(0-2^31の値を取る)
    
        :
    	コマンドであることをしめす。
    	コマンドはKRobot独自の機能である。
    	Robotの言語仕様にはない。
     

    ユーザ関数


      英小文字かつ予約されていない一文字がユーザ関数名として使えます。
     

    コマンド


       コマンドはKRobot独自の機能である。
       コマンドは実行管理環境(トップレベル)に対する指令である。
    
    
        :d
    	ユーザ関数の全ての定義を表示する
    
        :n
    	ユーザ関数をすべて消去する
    
        :<項>s
    	f関数で進む距離をドット数で指定する
    	
    
     コマンドを実行する場合も文を入力した後、 DoItでトップレベルに評価させる。
      ただし、コマンドを評価することによって、スタックに影響を与えてしまう。
      よって、コマンド評価後はContはできなくなる。
     

    ボタン


    Clear
    画面消去
    Getd
    ユーザ関数の一覧表示
    CI
    入力ラインのクリア
    ?
    ヘルプ表示
    DoIt
    入力ライン実行
    Cont
    Stopした実行の再開
    Stop
    実行の中断

    起動時メモ実行機能


    KRobotはその起動時にPalm標準のMemoを読み込み実行します。
    実行するためのMemoは、 ";-robot" という行から始まっていなければなりません。

    実行例


    ドラゴン曲線

    dx(t(-x6rk+)(f))
    dk(t(-x2rk+)(f))
    chna-10+x

    ヒルベルト曲線

    du(t(-vfxuyfufxv+)(x))
    dv(t(-uyfvfxvyfu+)(y))
    dx(6r)
    dy(2r)
    chna-5+2ru

    シェルピンスキー曲線

    dx(t(-xfxufuxfx+)(v))
    du(5r)
    dv(2r)
    dy(6r3r4(fx))
    chna-2+y


    KVMで動くRobot言語インタープリタ KRobot

    AXE, Inc Home Page