我試圖在Prolog中編寫一個adaptive parser:換句話說,一個解析器可以在運行時修改它自己的解析規則。 爲了做到這一點,我需要在運行時生成新的謂詞,但我不確定這是否可能。是否可以寫一個謂詞,需要這樣一個列表: generate_dcg_rule([A," is greater than ",B]).
...然後生成一個新的謂詞是這樣嗎? expr(A," is greater t
這是CFG: S -> T | V
T -> UU
U -> aUb | ab
V -> aVb | aWb
W -> bWa | ba
所以這會接受某種形式的: {a^n b^n a^m b^m | n,m >= 1} U {a^n b^m a^m b^n | n,m >= 1}
這裏是我的代碼有工作: in_lang([]).
in_lang(L) :-
mapS(