• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revisión20336696236c39edb64fe313fd5139d453830234 (tree)
Tiempo2018-11-08 23:19:44
Autordhrname <dhrname@user...>
Commiterdhrname

Log Message

Modify the ST_parse function

Cambiar Resumen

Diferencia incremental

--- a/source_code/shadowstar.c
+++ b/source_code/shadowstar.c
@@ -468,11 +468,12 @@ ST_Node ST_parse(ST_Token_Mode *array, size_t length, ST_Ordered_Pair *list)
468468 ST_Stack_List bound_vstacklist = &null;
469469
470470 /*現在のノードリストの項目
471- * ノード値は一番目の枝が束縛変数、二番目の枝が最後の変数であるような関数抽象ノード*/
472- ST_Node seq = ST_EMPTY_NODE;
471+ * ノード値については、
472+ * 一番目の枝が束縛変数、二番目の枝が最後の変数であるような関数抽象ノード*/
473+ ST_Node seq = ST_createNode(ST_EMPTY);
473474
474- /*入れ子になったときに、親を格納するノードスタックリスト*/
475- ST_Stack_List cache_nstacklist = &null;
475+ /*seqをルートノードの末子ノードとして初期化*/
476+ seq = ST_insertBefore(seq, ST_createNode(ST_EMPTY), ST_EMPTY_NODE);
476477
477478 for (int_fast32_t i=length-1; i>=0; i--)
478479 {
@@ -487,16 +488,16 @@ ST_Node ST_parse(ST_Token_Mode *array, size_t length, ST_Ordered_Pair *list)
487488 }
488489 else
489490 {
490- seq = ST_createNode(v); //, ST_EMPTY), seq);
491+ ST_Node cache =seq;
492+ seq = ST_createNode(v);
493+ ST_insertBefore(ST_getParentNode(cache), seq, cache);
491494 }
492495 /*後述する関数抽象の終わりのために、変数をキャッシュしておく*/
493496 cache_v = v;
494497 v = ST_second(v);
495498 break;
496499 case ST_KAGIKAKKO_END_TOKEN:
497- ST_pushTree(seq, cache_nstacklist);
498- /*一度、現在のリストをリセットする*/
499- seq = ST_EMPTY;
500+ seq = ST_insertBefore(seq, ST_createNode(ST_EMPTY), ST_EMPTY_NODE);
500501 break;
501502 case ST_KAGIKAKKO_BEGIN_TOKEN:
502503 /*あらかじめキャッシュしておいた変数cache_vは、「の後で、一番目に出てくる変数*/
@@ -507,7 +508,6 @@ ST_Node ST_parse(ST_Token_Mode *array, size_t length, ST_Ordered_Pair *list)
507508 }
508509 }
509510 free_stacklist(bound_vstacklist);
510- free_stacklist(cache_nstacklist);
511511
512512 /*rseqはseqを逆向きにしたもの
513513 * ST_reverseNode関数が新規ノードを返すためにこのような形になっている*/
@@ -970,7 +970,7 @@ ST_Node ST_createNode(ST_Ordered_Pair* value)
970970 * 副作用がある関数なので、扱いには注意を要する
971971 * 一番目の引数parentが親ノード。三番目の引数ノードprevの前隣りに、二番目の引数ノードnodeを挿入
972972 * 三番目の引数が空ノードであれば、親ノードに末子ノードとして登録される
973- * 返り値は、挿入に成功したときnode、失敗したときは空ノードを返す*/
973+ * 返り値は、挿入に成功したとき引数node、失敗したときは空ノードを返す*/
974974 ST_Node ST_insertBefore(ST_Node parent, ST_Node node, ST_Node prev)
975975 {
976976 errno_before_eprint = INSERT_BEFORE_ERROR;
Binary files a/source_code/shadowstar.o and b/source_code/shadowstar.o differ