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