A one-pass, greedy-pattern-matching, finite-state-machine code generator is
disclosed. The code generator generates local code (such as
processor-native code) from intermediate code (such as Java byte code). In
one embodiment of the invention, a computer-implemented method for
generating local code from intermediate code first includes receiving a
current element of a post-fix-notated intermediate code. The method
receives a current element of a postfix-notated intermediate code, and
matches the current element to a base rule within a predetermined
intermediate code-to-local code grammar. The method then selects and
applies a matching base rule based on a predetermined criteria. A local
code is then generated according to the matching base rule applied to the
current element. A next element of the intermediate code is then advanced
to as the current element. In another embodiment, the method matches the
current element to a base rule, includes matching a most recent element to
one or more chain rule(s) within the grammar and applies the chain rule(s)
to the most recent element to enable the current element to match a given
base rule. In still another embodiment, a code-generator generator is
disclosed that constructs a code generator according to a machine
specification.
Ein in einem Durchlauf, gierig-Muster-zusammenpassend, Begrenzt-Zustandmaschine Textgeber wird freigegeben. Der Textgeber erzeugt lokalen Code (wie Prozessor-gebürtiger Code) vom Zwischencode (wie Java Bytecode). In einer Verkörperung der Erfindung, schließt eine Computer-eingeführte Methode für das Erzeugen des lokalen Codes vom Zwischencode zuerst das Empfangen eines Stromanpassungsgliedes von Pfosten-regeln-notated Zwischencode ein. Die Methode empfängt ein Stromanpassungsglied von postfix-notated-notated Zwischencode und Gleiche das Stromanpassungsglied zu einer niedrigen Richtlinie innerhalb einer vorbestimmten Code-zu-lokalen Codegrammatik des Vermittlers. Die Methode dann wählt vor und wendet eine zusammenpassende niedrige Richtlinie an, die auf vorbestimmte Kriterien basiert. Ein lokaler Code wird dann entsprechend der zusammenpassenden niedrigen Richtlinie erzeugt, die am Stromanpassungsglied angewendet wird. Ein folgendes Element des Zwischencodes wird dann als zu das Stromanpassungsglied vorgerückt. In einer anderen Verkörperung schließt die Methode Gleichen das Stromanpassungsglied zu einer niedrigen Richtlinie, das Zusammenbringen eines neuesten Elements zu einem oder mehr Kettenrule(s) innerhalb der Grammatik ein und wendet das Kettenrule(s) am neuesten Element an, um dem Stromanpassungsglied zu ermöglichen, eine gegebene niedrige Richtlinie zusammenzubringen. In ruhigem wird eine andere Verkörperung, ein Code-Generator Generator freigegeben, der einen Textgeber entsprechend einer Maschine Spezifikation konstruiert.