Analyse verschiedener Dateien derselben Grammatik und Berechnung der Datei für Ähnlichkeiten bei Dateien

StackOverflow https://stackoverflow.com/questions/5857095

Frage

Ich habe eine Reihe von ACPI -Quellsprachdateien und möchte Datei so berechnen, dass sie Ähnlichkeiten zwischen ihnen einreichen. Ich dachte daran, so etwas wie Perls Parse :: Recdecent zu verwenden, aber ich bin festgefahren bei:

1) Übersetzen der ACPI -Grammatik (www.acpi.info/downloads/acpispec40a.pdf) in etwas, das analysiert:

Irgendwelche Ideen?

War es hilfreich?

Lösung

Sie haben also zwei Probleme:

  • ACPI analysieren, um einen AST zu bauen. Dies hat die üblichen Probleme, sicherzustellen, dass Sie eine genau definierte Grammatik haben, dass Ihre Parsen -Maschinerie nach dieser Grammatik analysieren kann (oft müssen Sie eine gute Grammatikdefinition biegen, um die Parsenmaschinen zu ermöglichen, um sie zu verarbeiten) und ein entsprechendes AST errichtet . Sie werden diese Probleme mit Perl -Parsing -Maschinen haben, einfach weil es sich um einen Parsing -Motor handelt.

  • Vergleich der Struktur der ASTS und der Erzeugung einer sinnvollen Antwort. Was Sie hier wahrscheinlich finden, ist, dass es eine Literatur gibt, die das zu tun beschreibt, wie dies zu tun ist (mit EG Levenshtein -Entfernung), aber dass die Details für ASTS wichtig sind. (Ändern Sie die Destillation: Baumunterschiede bei feinkörniger Quellcode-Extraktion Änderung Nachdem Sie die Entfernung festgelegt haben, müssen Sie die Deltas in einer lesbaren Form ausdrucken.

Afaik, mein Unternehmen, ist jedoch das einzige, das dies auf das Üben reduziert hat. Sehen Sie unsere Smart Differencer Werkzeug. Die SmartDiffercers analysieren, bauen ASTs und melden Veränderungen in Bezug auf bewegte, eingeführte, eingefügte, gelöschte, ersetzte oder modifizierte ASTS -Elemente durch konsistente Erkennungsersatz. Sie sind von einem sehr starken GLR -Parsing -Motor angewiesen, der die Probleme der Akzeptanz neuer Grammatiken minimierte. Sie arbeiten für viele gemeinsame Sprachen, aber nicht derzeit für ACPI.

Andere Tipps

  1. Um mit Parse :: recdecent zu beginnen, können Sie sich ansehen Pro Perl Parsing, Ch. 5 oder bei Erweiterte Perl -Programmierung, Kap. 2
  2. XML -Diff -Tools sollten geeignet sein, um hierarchisch strukturierte Daten zu vergleichen. Vielleicht können Sie ein solches Tool auf ASTS anwenden, das im XML -Format gespeichert ist
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top