|
構文木が取得できる言語であれば、例えば、以下のように書けます。
VBAだと難しいでしょう。
(簡単なものに限定すれば、ヒューリスティックな解法があるかもしれません)
s = "A AND B OR (C OR D)" の変換結果は、
"OR(AND(A, B), OR(C, D))"となります。
function test()
s = "A AND B OR (C OR D)"
s = replace(s, "AND" => "&&" , "OR" => "||" )
a = Meta.parse(s) # Expr型(AST表現)に変換
return recursive(a)
end
function recursive(a)
head = a.head
args1,args2 = a.args
if typeof(args1) == Expr
ele1 = recursive(args1)
else
ele1 = string(args1)
end
if typeof(args2) == Expr
ele2 = recursive(args2)
else
ele2 = string(args2)
end
if head == :&&
return "AND(" * ele1 * ", " * ele2 * ")"
elseif head == :||
return "OR(" * ele1 * ", " * ele2 * ")"
end
end
test()
|
|