Wie funktioniert die Code-Vervollständigung?

Viele Editoren und IDEs verfügen über Code-Vervollständigung. Einige von ihnen sind sehr "intelligent", andere nicht wirklich. Ich interessiere mich für den intelligenteren Typ. Zum Beispiel habe ich IDEs gesehen, die eine Funktion nur anbieten, wenn sie a) im aktuellen Bereich verfügbar ist. B) ihr Rückgabewert ist gültig. (Beispielsweise bietet es nach "5 + foo [tab]" nur Funktionen, die etwas zurückgeben, das zu einer Ganzzahl oder zu Variablennamen des richtigen Typs hinzugefügt werden kann.) Ich habe auch gesehen, dass sie die am häufigsten verwendete oder längste Option voranstellen der Liste.

Mir ist klar, dass Sie den Code analysieren müssen. In der Regel sind beim Bearbeiten des aktuellen Codes jedoch Syntaxfehler enthalten. Wie parst du etwas, wenn es unvollständig ist und Fehler enthält?

Es gibt auch eine zeitliche Beschränkung. Die Fertigstellung ist nutzlos, wenn es Sekunden dauert, bis eine Liste erstellt ist. Manchmal behandelt der Vervollständigungsalgorithmus Tausende von Klassen.

Was sind die guten Algorithmen und Datenstrukturen dafür?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage