Wpis z mikrobloga

Hej murki od #programowanie #javascript

muszę przekształcić JSON'a przykładowo

{
"or": {
"left": {
"predicate": {
"name": "A",
"args": undefined
}
},
"right": {
"predicate": {
"name": "B",
"args": undefined
}
}
}
}

na "A v B"
ale również bardziej złożone struktury jak:

{
"or": {
"left": {
"predicate": {
"name": "A",
"args": undefined
}
},
"right": {
"and": {
"left": {
"implies": {
"left": {
"predicate": {
"name": "B",
"args": undefined
}
},
"right": {
"predicate": {
"name": "C",
"args": undefined
}
}
}
},
"right": {
"not": {
"predicate": {
"name": "D",
"args": undefined
}
}
}
}
}
}
}

do "A v (B -> C) ∧ !D"

Utworzyłem parser w PEG.js, który przekształca formułę logiczną do JSON, natomiast potrzebuję przekształcić to również w drugą stronę. Czy znacie narzędzia, które mogą załatwić temat w prostszy sposób niż PEG?
  • 2
@wojtekwariat: jeśli nie przeszkadzają ci nadmiarowe nawiasy tj. ((A v (B -> C)) ∧ !D) to mozesz zrobić to samemu bez większych problemów; rekurencyjnie dla każdego działania wypisujesz w nawiasach lewą część, operator a następnie prawą część w nawiasach.