728x90
java 소스를 Delphi로 변환 프로그램을 간단하게 만들어 보았습니다.
원래 필요로 했던 것은 사칙연산이나 제어문 정도라서 일주일 투자해서 간단하게 만들어 보았습니다.
JavaCC을 이용했으며, jj 파일을 제외하고 Java 소스를 첨부합니다.
사용법:
java -jar java2delphi.jar Formatter.java
위와 같이 명령을 하시면 Formatter.pas의 결과물을 얻을 수 있습니다.
아래에 일부 변환된 예를 입니다.
public int sum(int s1, int s2) {
return s1 + s2;
}
function TFormatter.sum(s1 : integer; s2 : integer): int;
begin
result := s1+s2;
end;
------------------------------------------------------------------
public boolean checkSELECT(String s1) {
if (s1.equalsIgnoreCase("select")) {
return true;
} else {
return false;
}
}
function TFormatter.checkSELECT(s1 : String): boolean;
beginif ((UpperCase(s1)='SELECT')) then
begin
result := true;
end else begin
result := false;
end;
end;
------------------------------------------------------------------
public static int testFor() {
int sum = 0;
for (int i=0; i<100; i++)
sum = sum + 1;
}
function TFormatter.testFor(): int;
var
i : integer;
sum : integer;
begin
sum:=0;
i:=0;
while (i<100) do begin
sum:=sum+1;
inc(i);
end;
end;
------------------------------------------------------------------
private void doEscape2Space() {
for (aD = 1; aD <= queryTokenCount; aD++) {
if (isTokenQuoteLiterals[aD])
continue;
if (queryToken[aD].equals("\t")
|| queryToken[aD].equals("\f")
|| queryToken[aD].equals("\r")
|| queryToken[aD].equals("\b"))
queryToken[aD] = " ";if (queryToken[aD].equals("\r"))
queryToken[aD] = "\\n";
}}
procedure TFormatter.doEscape2Space();
begin
aD:=1;
while (aD<=queryTokenCount) do beginif (isTokenQuoteLiterals[aD]) then
begin
continue;
end;if ((queryToken[aD]=#9)
or (queryToken[aD]=#12)
or (queryToken[aD]=#13)
or (queryToken[aD]=#8)) then
begin
queryToken[aD]:=' ';
end;if ((queryToken[aD]=#13)) then
begin
queryToken[aD]:='\\n';
end;
inc(aD);
end;
end;
728x90