Revision | becce3d8475b022a00e1323339028bb8921d1019 (tree) |
---|---|
Time | 2019-01-11 23:13:41 |
Author | dhrname <dhrname@user...> |
Commiter | dhrname |
Remove the ST_setItemNode function
@@ -100,11 +100,6 @@ void ST_freenode (ST_Free_Node); | ||
100 | 100 | /*ST_Node2Node 関数型 = (ST_Node -> ST_Node) */ |
101 | 101 | typedef ST_Node (*ST_Node2Node)(ST_Node); |
102 | 102 | |
103 | -/*ST_setItemNode 関数 | |
104 | - * C言語でラムダ計算のchurch数を部分的に再現するための関数(ノード用)*/ | |
105 | -ST_Node ST_setItemNode (uint_fast32_t length, ST_Node2Node f, ST_Node node); | |
106 | - | |
107 | - | |
108 | 103 | /*ST_getBoundVariable 関数 |
109 | 104 | * 関数抽象ノードabstractionの束縛変数(Bound Variable)を数値化したものを取得する |
110 | 105 | * ここでいう束縛変数とは、λx.Mのときの、変数xを指す*/ |
@@ -1292,16 +1292,3 @@ void ST_freenode (ST_Free_Node freelist) | ||
1292 | 1292 | free(freelist); |
1293 | 1293 | freelist = NULL; |
1294 | 1294 | } |
1295 | - | |
1296 | -/*ST_setItemNode 関数 | |
1297 | - * C言語でラムダ計算のchurch数を部分的に再現するための関数(ノード用)*/ | |
1298 | -ST_Node ST_setItemNode (uint_fast32_t length, ST_Node2Node f, ST_Node node) | |
1299 | -{ | |
1300 | - int32_t i; | |
1301 | - for (i = 0; i < length; i++) | |
1302 | - { | |
1303 | - /*lengthが4の場合、node = f(f(f(f(list))));*/ | |
1304 | - node = (*f)(node); | |
1305 | - } | |
1306 | - return node; | |
1307 | -} |
@@ -404,7 +404,7 @@ int main(int argc, char **argv) | ||
404 | 404 | varlist = ST_tokenize(u8"「言葉」(世界)「「涙」(謎)愛」(謎)", tokens6); |
405 | 405 | btr = ST_parse(freetree, tokens6, length, varlist); |
406 | 406 | assert( ST_getBoundVariable(ST_getNodeValue(btr)) == ST_getItem(varlist, 0) ); |
407 | - assert( ST_getBoundVariable(ST_getNodeValue(ST_setItemNode(1, ST_getPreviousNode, btr))) == ST_getItem(varlist, 4) ); | |
407 | + assert( ST_getBoundVariable(ST_getNodeValue(ST_getPreviousNode(btr))) == ST_getItem(varlist, 4) ); | |
408 | 408 | lastvar = ST_getLastChild(btr); |
409 | 409 | assert( ST_first(ST_getNodeValue(lastvar)) == ST_getItem(varlist, 1)); |
410 | 410 | lastvar = ST_getPreviousNode(lastvar); |
@@ -609,6 +609,18 @@ printf("\n%d\n", i); | ||
609 | 609 | |
610 | 610 | ST_freelist(varlist); |
611 | 611 | |
612 | + init_token_length(tokens7, length); | |
613 | + varlist = ST_tokenize(u8"愛とは、「「謎」(謎)は「謎」(謎)」(謎)", tokens7); | |
614 | + btr = ST_parse(freetree, tokens7, length, varlist); | |
615 | + evalresult = ST_eval(varlist, btr); | |
616 | + assert( !ST_isEmptyNode(evalresult)); | |
617 | + assert( ST_getBoundVariable(ST_getNodeValue(evalresult)) == ST_getItem(varlist, 3) ); | |
618 | + assert( ST_first(ST_getNodeValue(ST_getLastChild(evalresult))) == ST_getItem(varlist, 4) ); | |
619 | + evalresult = ST_getPreviousNode(evalresult); | |
620 | + assert(ST_isEmptyNode(evalresult)); | |
621 | + | |
622 | + ST_freelist(varlist); | |
623 | + | |
612 | 624 | ST_freenode(freetree); |
613 | 625 | |
614 | 626 |