티스토리 뷰

Programming/Delphi

초간단 java2delphi

파란크리스마스 2007. 8. 23. 15:42
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;
  begin
    if ((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 begin
      if (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;  
                                    
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함