Kann ANTLR
verwendet werden, um Quellcode einer Sprache zu analysieren und Quellcode für eine andere Sprache zu erstellen?Verwendung von antlr zum Generieren von Quellcode für eine andere Sprache
Da bisher bei all den Zuhörern ich auf der Suche keinen Weg sehen können separate Einrichtungen zu trennen - wie verschiedene statement
Blöcke usw. -, um eine andere Sprache Einrichtungen
(program (programHeading program (identifier HelloWorld) ;)
(block (procedureAndFunctionDeclarationPart (procedureOrFunctionDeclaration
(procedureDeclaration procedure (identifier myprocedure) (formalParameterList (
(formalParameterSection (parameterGroup (identifierList (identifier x) , (identifier y)) : (typeIdentifier integer))))) ;
(block (compoundStatement begin (statements (statement (unlabelledStatement (simpleStatement (procedureStatement (identifier writeln) (
(parameterList (actualParameter (expression (simpleExpression (term (signedFactor (factor (variable (identifier x))))) + (term (signedFactor
(factor (unsignedConstant (string ' : '))))) + (term (signedFactor (factor (variable (identifier y)))))))))))))) ;
(statement (unlabelledStatement (simpleStatement emptyStatement)))) end)))) ;) (compoundStatement begin (statements
(statement (unlabelledStatement (simpleStatement (procedureStatement (identifier from))))) i := 1 to 10 do begin writeln (i) ;) end)) ; writeln ('Hello, World!') ; end .)
Zum Beispiel zu schaffen es kann ich nicht Siehe einen Weg zu definieren, wo eine begin
Anweisung begann und eine andere endete end
.
Nun, ich kann etwas mit stack
Helfer tun, aber ich kann Datei Zeile für Zeile selbst in diesem Fall ...
Es ist die Parse-Ergebnis dieser Code
program HelloWorld;
procedure myprocedure(x, y: integer);
begin
writeln(x + ' : ' + y);
end;
begin
from i := 1 to 10 do
begin
writeln(i);
end;
writeln('Hello, World!');
end.
Vielleicht bin ich einfach analysieren von der falschen Seite schauen oder etwas nicht verstehen?
Versuchen Sie mit Besuchern anstelle von Zuhörern, sie sind besser für diese Art von Dingen geeignet. –
@ LucasTrzesniewski oh ich verstehe. Ich werde es mir ansehen. Ich habe Lexer usw. ohne "visitor" -Flaggen generiert, also habe ich sie nicht bekommen. – lapots