我试图在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(