ちょっと草植えときますね型言語 Grass

    _, ._
  ( ・ω・) んも〜
  ○={=}〇,
   |:::::::::\, ', ´
、、、、し 、、、(((.@)wvwwWWwvwwWwwvwwwwWWWwwWw









Interpreter written in Standard ML (accept US-ASCII only) by UENO Katsuhiro

Interpreter written in Ruby by UENO Katsuhiro

Interpreter written in 

Interpreter written in Prologbyzick

Interpreter written in Java by tobi

Interpreter written in SchemebyHigepon(Taro Minowa)

Interpreter written in PythonbyNISHIO Hirokazu



Compiler from Grass to Scheme written in Scheme (accept US-ASCII only) by UENO Katsuhiro



grass.el for Emacsen, including an interpreter written in Emacs Lisp, by irie


Grass






BrainF*ck





wwwwvwvwwWWwvwwWwwvwwwwWWWwwWwwWWWWWWwwwwWw
wvwWWwWwwvwWWWwwwwwWwwwwwwWWwWWWwWWWWWWwW
WWWWWWWwwwWwwWWWWWWWWWWwWwwwwwWWWWWWWW
WWWwwwwwWWWWWWWWWWWWwwwwWWWWWWWWWWWWW
wwwWWWWWWWWWWWWWWwwwWWWWWWWWWWWWWWWwW
WWWWWWWWWWWWWWWWWwwwWwwwwwwwwwwwwwwWWWW
WWWWWWWWWWWWWWWwwwwwwwwWwwWWWWWWWWWWW
WWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwwwWwwww
wwwwwwwwwwwwwwwww             wwwwwwwwWWwwwwwww
wwwwwwwwwwwwwwwww          は   wwwwwWWWWWWWWWW
WWWWWwWwwwWWWW    わ   い   WWWWWWWwwwWwwWW
WWWWWWWWWWwwww    ろ   は    wWwwwwwwwWWWWWWW
WWWWWWWWWWwwww    す   い   wwwWwwWWWWWWWWW
WWWWWWWWWwwwww     わ       wwwwWwwWWWWWWWW
WWWWWWWWWWWWW    ろ       WWWWWWWWWwwwwww
wwwwwWwwWWWWWWW    す       WWWWWWWWWwwwwww
wwwwwwwWwwwwwwwww             wwwwwwWWWWWWWWW
WWWWWWWWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwWwwwwwwwwwwwwwwWWwwwwwwwwwWWWwwWWWWwww
wwwwwwwwwwwwWWWWWwwWWWWWWwwwwWWWWWWWwwWWW
WWWWWwwwwWWWWWWWWWwwWWWWWWWWWWwwwwwwwww
wwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwww
wwwwwWwwwWWwwwwwwwwwwwwwwwwwwWWWwwWWWWwwwwww
wwwwwwwwwwwwwwwwwwWWWWWwwWWWWWWwwwwwwwWWWW
WWWwwWWWWWWWWwwwwwwWWWWWWWWWwwWWWWWWWW
WWwwwwwwWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwww


使3

Grass2
Program :
    wwwwwWW ... wwWw v wwWWwW ... wWw v WWWwwwWw ... wwWWw v wW ...
    <---Function--->   <--Function-->   <--Applications-->

1
Applications :
     WWWWWwwwwww WWWWWWwwwwwww ... WWWWwwww WW ...
    |<-5-><-6-->|<-6--><--7-->|   |  4  4  |
    |           |             |   |        |
    |  (5, 6)   |  (6, 7)     |   | (4, 4) |
    |   apply   |   apply     |   |  apply |


Function :
    wwwwww WWWWWwwwwww WWWWWWwwwwwww ... WWWWwwww  v
    <-6-->|<--- Applications (function body) --->|
          |           |             |   |        |
    6 args|  (5, 6)   |  (6, 7)     |   | (4, 4) |end of
          |   apply   |   apply     |   |  apply |function

GrassSECD 1, 2, 
Value Stack :

   1: value1    top of stack
   2: value2                          (1, 2) apply
   3: value3                           ^  ^
   ...                                 |  引数は2に入ってる.
   N: valueN                           |
 -------------- bottom of stack      関数は1に入ってる.

Grass


(一)

(二)

(三)

(四) 使

(五)

(六)




使3



prog


 app ::= W+w+

 abs ::= w+ app*

 prog ::= abs | progvabs  | progvapp*





I ::= App(n, n)  | Abs(n, C)

C ::= ε | I:: C


n

使

GrassCED (C, E, D) 1 (C, E, D)  (C', E', D') *




(App(m, n) :: C, E, D)  (Cm, (Cn, En) :: Em, (C, E) :: D) where E = (C1, E1) :: (C2, E2) ::  :: (Ci, Ei) :: E' (i = m, n)

(Abs(n, C') :: C, E, D)  (C, (C', E) :: E, D) if n = 1

(Abs(n, C') :: C, E, D)  (C, (Abs(n - 1, C')::ε, E) :: E, D) if n >1

(ε, f :: E, (C', E') :: D)  (C', f :: E', D)


Grass


(C0, E0, D0) * (ε, f :: ε, ε)


C0E0D0


D0 = (App(1, 1)::ε, ε) :: (ε, ε) :: ε


E0


E0 = Out :: Succ :: w :: In :: ε





w

"w"119 OutSucc使 trueλx.λy.xfalseλx.λy.y

Out



In

EOF

Succ

2550

Grass





e ::= x | λx.e | e e


CPS


t ::= x | λx.r

c ::= k | μx.e

e ::= r c | x x c | c t

r ::= δk.e


CPS


e ::= x | λx.r | x x

r ::= e | let x = e in r


lambda lifting使


e ::= x | x x

m ::= e | let x = e in m

f ::= λx.f | λx.m

r ::= e | let x = f in r | let x = e in r


de Bruijn Index


n ::=  | n 

e ::= n | n n

m ::= e | let e in m

f ::= λf | λm

r ::= e | let f in r | let e in r




Grass


Grass in mixi



履歴とかwwwwwww


© 2006, 2007 UENO Katsuhiro.
stylesheet prints mail address here.