lmntal / slim

slim LMNtal implementation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

グラフのテキスト出力で','が抜けてしまう問題

m-nozo opened this issue · comments

slim(version 2.3.1 (5da0247))で以下のプログラムを実行すると膜の間のカンマが抜けてしまう

a({+X},{},{+X})

実行結果

a(L0,{},L3). {+L1. +L3. }{+L1. +L0. }. 

原因はおそらく膜を順番に出力する際に、すでに出力済みの膜があった場合にカンマを出力しないコードになっているから
https://github.com/lmntal/slim/blob/develop/src/vm/dumper.c#L760-L763

/* 次の膜が既に出力済みならスキップする */
if (lmn_mem_next(m) && !hashtbl_contains(ht, (HashKeyType)(lmn_mem_next(m)))) {
  port_put_raw_s(port, ", ");
}