728x90
출처 : http://eclipse-javacc.sourceforge.net/

1. 메뉴 [Help] -> [Install New Software] 선택



2. [Install]창에서 [Add] 버튼 선택



3. 아래와 같이 입력하고 [OK] 버튼 선택

Name : JavaCC Plug-In
Location : http://eclipse-javacc.sourceforge.net/



4. JavaCC Eclipse Plug-in 선택하고  [Next] 버튼 선택



5. [Next] 버튼 선택



6. 라이센스 수용하고, [Finish] 버튼 선택



7. [OK] 버튼 선택



8. Plug-in 설치 완료 후, [Restar Now] 버튼을 선택하여 Eclipse을 다시 시작한다.



- jj 파일을 열어본 화면



- jj 파일에서 오른쪽 마우스를 선택하여 Compile 하기



- jj Compile 결과



- jj 파일 Compile 하여 생성된 java 파일들



728x90
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;  
                                    
728x90

+ Recent posts