1
0
forked from GitHub/gf-core

finished the partial evaluator

This commit is contained in:
krangelov
2021-10-07 11:47:51 +02:00
parent fd6cd382c5
commit e33d881ce8
7 changed files with 79 additions and 3 deletions

View File

@@ -4,6 +4,9 @@ cc table {P1 => "p1"; P2 _ => "p2"} ! P1
cc table {P1 => "p1"; P2 _ => "p2"} ! P2 Q1
cc table {P1 => "p1"; P2 _ => "p2"} ! P2 (Q1|Q2)
cc table {P1 => "p1"; P2 q => "p2"} ! P2 (Q1|Q2)
cc table P ["p1"; "p2q1"; "p2q2"] ! P1
cc table P ["p1"; "p2q1"; "p2q2"] ! P2 Q1
cc table P ["p1"; "p2q1"; "p2q2"] ! P2 Q2
cc table {P1 => "p1"; P2 Q1 => "p2q1"; P2 Q2 => "p2q2"} ! P2 (Q1|Q2)
cc table {P1 => "p1"; P2 Q1 => "p2q1"; P2 Q2 => "p2q2"} ! P2 Q1
cc table {P1 => "p1"; P2 q => case q of {Q1 => "p2q1"; Q2 => "p2q2"}} ! P2 Q1

View File

@@ -3,6 +3,9 @@ param_table.P2 param_table.Q1
"p2"
"p2"
"p2"
"p1"
"p2q1"
"p2q2"
variants {"p2q1"; "p2q2"}
"p2q1"
"p2q1"

View File

@@ -3,3 +3,8 @@ cc hello
cc {x="x"; y="y"}.x
cc {x="x"; y="y"}.y
cc <\r -> r.x : {x:Str; y:Str} -> Str>
cc <{x="x"; y="y"} ** {z="z"} : {x,y,z:Str}>
cc <{x="x"; y="y"} ** {y="y'"} : {x,y:Str}>
cc <\r -> r ** {y="y'"} : {x,y:Str} -> {y:Str}>
cc <\r -> r ** {y="y'"} : {x,y:Str} -> {x,y:Str}>
cc <\r -> f r ** {b="b"} : {b:Str} -> {b:Str}>

View File

@@ -2,3 +2,8 @@
"x"
"y"
\v0 -> v0.x
{x = "x"; y = "y"; z = "z"}
{x = "x"; y = "y'"}
\v0 -> {y = "y'"}
\v0 -> {x = v0.x; y = "y'"}
\v0 -> {b = "b"}

View File

@@ -27,3 +27,4 @@ cc <case "xyababbbab" of {x + #ab_patt* => x; _ => "?"} : Str>
cc test "abcd"
cc test "xyz"
cc <\x -> case x of {"q1" => Q1; _ => Q2} : Str -> Q>
cc pre {"в"|"ф"=>"във"; _=>"в"}

View File

@@ -29,3 +29,4 @@ param_table.Q2
"q1" => param_table.Q1;
_ => param_table.Q2
}
pre {"в"; "във" / strs {"в"; "ф"}}