물 1.10

2016. 6. 25. 23:02

하늘소^^ 소프트웨어/개발툴

물은 한글로 코드를 작성하면 영문으로 변환해주는 전처리기 프로그램입니다.

당시 한글로 프로그래밍을 하자는 시도는 많았었는데..

대부분 실패로 돌아갔죠.. 그닥 유용하지는 못했을것 같네요. ㅎㅎ




 <한글 프로그래밍 언어 전처리기,물1.10>


 한글 프로그래밍 언어를 가능하게...


  /**********/

  /* 소 개  */

  /**********/


  물1.10은 영문을 쓰지 않는 프로그래밍을 가능하게 해주는 프로그램으로 이

 프로그램은 본인이 작년 1월부터 만들기 시작한 같은 목적의 한글 프로그래밍

 도구들 가운데 최신판이다.(전처리기-preprocessor-란 고급언어를 또 다른

 고급언어로 변환하는 프로그램을 말한다)


  현재의 C,Pascal,BASIC 등은 모두 영문자(a,b,c..z,A,B,C..Z)와 아라비아

 수자만(일부는 밑줄문자'_'을 포함) 예약어(ex. Pascal의 begin,end,if,for...)

 와 식별자(변수이름이나 함수,프로시저이름)에 사용되도록 하여 한글의 사용은

 봉쇄돼 있다.그런데 물1.10을 사용하면 변수,함수,프로시저의 이름,프로그래밍

 언어 예약어 자체를 한글화할 수 있다.이것은 모든 프로그래밍 언어에 적용된다.

 ( 영문과 섞어 프로그래밍하는 것도 물론 가능하다.예를 들어 기존의 영문 프로그

 래밍 언어를 그대로 쓰면서 변수만 한글로 쓰는 것이 가능하다. )


 즉 다음과 같은 한글 파스칼 문장이 가능하다.


 예1)--------------------------------------------------------------------

      프로 더하기;

      변수 첫째수,둘째수:정수;


      프로시저 결과(변수 ㅏ,ㅓ:정수);

      시작

          써라\('두 수의 합은 ',ㅏ+ㅓ,'입니다.');

      끝;


      시작

          써라('두 개의 수자를 넣으시오 ');

          읽어라\(첫째수,둘째수);

          결과(첫째수,둘째수);

      끝.


  -----------------------------------------------------------------------

  위 문장은  물1.10에 의 다음과 같이 변환될 수 있다.


  예2)-------------------------------------------------------------------

  program DeoHaGi;

       var CheosJjaeSu,DulJjaeSu:integer; 

  procedure GyeolGwa(var a,eo:integer); 

       begin 

           writeln('두 수의 합은 ',a+eo,'입니다.'); 

       end; 

  begin 

       write('두 개의 수자를 넣으시오 '); 

       readln(CheosJjaeSu,DulJjaeSu); 

       GyeolGwa(CheosJjaeSu,DulJjaeSu); 

  end. 


  ----------------------------------------------------------------------


   위에서 보는 바와 같이 ' '안의 문장은 전혀 손상을 받지 않고 일반 파스칼

  문장으로 변환이 되는 것이다(이 프로그램의 초기버전에선 ' '나 " "안의

  문장도 변수로 인식하고 마구 변환시켰다).그리고 한글변수는 같은 발음의

  로마자표기로 바뀌므로 혹시 터보 파스칼 등의 내장 디버거를 사용할 경우가

  생기더라도 편리하다.앞의 예1의 한글 파스칼 문장이 'test.bap'('bap'이란  

  확장자는 pascal과 발음이 약간 비슷한 밥숟갈에서유래한다)으로 저장이 되었고 

  예2의 이름은 'test.pas'로 한다면 도스 명령어라인(DOS command line)에서 

  다음과 같이 쳐 준다.


  mul test.bap test.pas pas.dfn


  일반 형식은

  mul <한글프로그램파일> <생길 프로그램 소스 파일> <정의파일> [경로명]

  (경로명은 정의파일과 'mul.dat'가 있는 경로의 이름이며 이것이 생략될

  경우 프로그램이  실행되는 현재의 디렉토리로 설정된다.)


  /**************************/

  /* 정 의 파 일 의   작 성 */

 /***************************/


   위에서 정의파일이란 변환될 한글단어와 영어단어가 정의되어 있는 파일이

  며 그 이름을 여기선  'pas.dfn'으로 했으며 test.bap -> test.pas의 변환을

  위해선 pas.dfn을 아래 예3)과 같이 작성한다.

 예3)----------------------------------------------------------------------

 //터보 파스칼용 물1.10 정의파일

 $$  프로 program, 변수 var ,프로시저 procedure

 $$  시작 begin, 끝 end ,정수 integer,실수 real

 $$  써라\ writeln, 써라  write //한글 예약어에 한글외의 기호를 쓰고

 $$  읽어라\ readln, 읽어라 read //한글외의 기호외엔 똑같은 한글예약어가

 $$  만약 if                     //있을 경우엔 기호가 있는 한글예약어를

 $$  이면  then,한다 end         //먼저 써주어야 한다(ex.'써라\'와 '써라')

 ---------------------------------------------------------------------------1


  위의 작성 형식은

  1) $$ 한글예약어  영문예약어, 한글에약어 영문예약어,. . .

   이며 ','은 안 써도 되며(보다 읽기 쉽게 쓰는 게 좋다)

  2) '//'이후는 주석으로 처리된다.

  3) 또 위에 이미 주석으로 쓰여 있는 바와 같이 '써라\'와 '써라'의 경우와 같이

   한글외의 기호(@,!,#,$,%,^,&,*,=,+,- 등 ',"를 제외한 프로그램 언어에서

   쓰이는 모든 기호)외의 한글부분이 같은 한글예약어 둘이상일 때는 기호가

   있는 한글 예약어가 먼저 와야 한다.)

  4)기호 '##'를 영문 예약어에 써서 한글예약어 하나에 둘이상의 영문 예약어가

   대응하게 할 수 있다.(ex. '$$ 이면한다  then##begin'이라고 정의 해놓고

   '이면한다'다라고 쓰면 'then begin'으로 변환된다)

  5)한글예약어,영문예약어의 최대길이는 한글20자,영문40자이다.

  (버젼 1.0의 경우는  각각 10자,20자이다)


  /**************************/

  /* 배 치 파 일 의   이 용 */

  /**************************/

  이런 후 'mul test.bap test.pas pas.dfn'이라고 치는 데 다음과 같은 배치

 파일을 작성해 두면 'pas bap'이라고만 쳐도 되므로 편리하다.

 예4)

    C:\>copy con pas.bat

    @echo off

    mul %1.bap %1.pas pas.dfn

    ^Z


    또는 컴파일까지 한꺼번에 되도록 다음과 같이 작성해도 될 것(이렇게 하면

    한글 프로그래밍 언어 컴파일러가 되는 것이다.)


    C:\>copy con pas.bat

    @echo off

    mul %1.bap %1.pas pas.dfn c:\tp\    (mul.dat와 pas.dfn이 c:\tp\에 존재할 때)

    tpc %1

    ^Z


    또는 물1.10은 파일이 발견되지 않는 등의 에러로 실행을 끝낼 땐 errorlevel

    로 1을 발생시키므로 이것을 이용하여 다음과 같이 작성하면 에러 발생시엔

    tpc.exe가 실행되지 않게 할 수 있다.


    C:\>copt con pas.bat

    mul %1.bap %1.pas pas.dfn

    if errorlevel=1 goto end

    tpc %1

    :end


  정의 가능한 한글명령어의 최대 갯수는 500개이고 프로그램내에서 사용 가능한

 쓸 수있는 한글 식별어의 갯수는 무제한이다.


 /**********************************************************/

 /*한 글  식 별 어(변수,함수,프로시저 등의 이름)의  작 성  */

 /**********************************************************/

  한글식별어의 작성시 사용할수 있는 문자는

 1)모든 한글(조합형 한글만 가능)

 2)아라비아 수자

 3) 한글예약어,영문예약어의 최대길이는 한글20자,영문40자이다.

  (버젼 1.0의 경우는  각각 10자,20자이다)

(물론 영문자로 시작하는 식별어는 변환되지 않으며 따라서 영문과 한글을 섞

어서 프로그램을 작성할 수 있다.)


예5)한글식별어의 표기

    --------------------+-----------------------

      맞 음             |      틀림

    --------------------+-----------------------

    밥솥 밥1 물 다람쥐  |         a밥

    월급  독도사랑      |

    밥                  |

    --------------------+-----------------------

 /************************/

 /*기 타  알 아 야  사항 */

 /************************/

 다음은 기타 알아야 할 사항이다.

 1.한글 프로그램작성시 주석을 달고 싶으면 '//'를 치고 뒤어 주석문을 쓰면 된다.

   이러한 주석문은 정의파일내에도 달 수 있다.(다른 주석기호는 쓰지 말 것)

 2.한글 프로그램 언어로 소스 작성시 ' '나 " "안에 쓰는

   '  는 \'

   "  는 \"

   // 는 \// 로 바꾸어 쓴다.

   그리고 ' '나 " "안에서 맨 마지막에 역슬래쉬(\)를 쓸 경우엔 \\로 표시한다.

   (이것은 맨마지막에 \를 쓸 경우 \' 나 \"가 되어 앞의 예와 충돌하기 때문에

   이렇게 쓰며,중간에 \\를 쓰더라도 \로 변환된다.즉

   \ -> \    (' '나 " "안의 맨끝이 아닌 경우)

   \\ -> \

   \\\ -> \\

   \\\\-> \\

   와 같이 변환되는 것이다.)

   예를 들어 다음과 같다(정의 파일은 앞에 예로 든 것을 쓸 때)

------------------------------------------|----------------------------------

           한글 소스                      |물1.10에 의해 생긴 영문 소스

------------------------------------------|----------------------------------

프로  표시;                               | program  PyoSi;

시작                                      | begin

   써라\('\와 \\');                       |   writeln('\와 \');

   //위에서 맨마지막의 \\는 \로 변환됨    |

   써라\('Jung\'\'s pharmacy');           |   writeln('Jung''s pharmacy');

   써라\('토끼가 \"여우다!\"라고 말했다');|   writeln('토끼가 "여우다!"라고 말했다');

   써라\('기호 \//는 주석기호이다');      |   writeln('기호 //는 주석기호이다');

끝.                                       | end.

------------------------------------------|------------------------------------


                                         

 3.한글변수는 변환된 변수의 로마자 표기는 다음과 같다.

    1)초성은 무조건 대문자로 시작하며,'ㅇ'으로 시작하는 경우엔 모음을 대문자

    로 표기한다(ex. 아->A).

    2)'ㅇ'으로 시작하지 않는 모음은 소문자로 표기한다.(ex.ㅏ->a)

    3)중성과 종성은 소문자로 표기한다.

    4)'ㅅ'은 발음에 관계없이 'S'와 's'로 표기한다.

 4.'$$'명령문은 한글프로그램 문장 안에서도 사용가능하다.(그러므로 정의파일내에

   미처 정의되지 않았더라도 임시로 한글예약어를 만들어 쓸 수 있다.)


예6)------------------------------------------------------------------------

   프로 계산;

  //도스 명령어 라인에서 간단한 사칙연산을 하는 한글파스칼 프로그램

  변수 첫,둘:실수;

      에러:정수;


  시작

     val(paramstr(1),첫,에러); //영문과 섞어 쓰는 것이 물론 가능하다.

     val(paramstr(3),둘,에러);

     만약  paramstr(2)='+' 이면 써라\(첫:8:2,' +',둘:8:2,'=',(첫+둘):8:2);

     만약  paramstr(2)='-' 이면 써라\(첫:8:2,' -',둘:8:2,'=',(첫-둘):8:2);

     만약  paramstr(2)='*' 이면 써라\(첫:8:2,' *',둘:8:2,'=',(첫*둘):8:2);

     만약  paramstr(2)='/' 이면 써라\(첫:8:2,' /',둘:8:2,'=',(첫/둘):8:2);

  끝.

  --------------------------------------------------------------------------

  위의 프로그램은 '$$'명령을 프로그램내에 직접 써서 다음과 같이 쓸 수 있다.

 예7)-----------------------------------------------------------------------

    $$ 수자화 val,파라미터 paramstr //정의 파일내에 이미 정의되어 있는 겨우엔

                                    //물론 이렇게 쓸 필요가 없다.

    프로 계산;

    //도스 명령어 라인에서 간단한 사칙연산을 하는 한글파스칼 프로그램

    변수 첫,둘:실수;

         에러:정수;

   시작

       수자화(파라미터(1),첫,에러); //'val' 대신 '수자화'라는 한글 사용

       수자화(파라미터(3),둘,에러);

       만약  파라미터(2)='+' 이면 써라\(첫:8:2,' +',둘:8:2,'=',(첫+둘):8:2);

       만약  파라미터(2)='-' 이면 써라\(첫:8:2,' -',둘:8:2,'=',(첫-둘):8:2);

       만약  파라미터(2)='*' 이면 써라\(첫:8:2,' *',둘:8:2,'=',(첫*둘):8:2);

       만약  파라미터(2)='/' 이면 써라\(첫:8:2,' /',둘:8:2,'=',(첫/둘):8:2);

   끝.

  --------------------------------------------------------------------------


  *위의 문장에서 '$$','//'와 그 이후의 문장은 mul에 의해 변환되어 만들어진

  파일에선 지워져 존재하지 않는다.



  /********************************************/

  /* mul1.10의 부속파일 mul.dat에 대한 도움말 */

  /********************************************/

  조합형한글이 그 코드안에 C나 Pascal 등의 프로그래밍언어의 기호인  '[',

 ']','{','}','|'를 포함하는 글자들(ex. 같,갛,갚..)을 가지고 있음에 따라

 물1.10에서 제공하는 정상적인 한글-로마자변환시 일부 한글 글자들의 로마자

 변환이 제대로 안 이뤄지는 수가 있다.이것은 선문자 처리를 하지 조합형

 코드를 사용할 때 영문 프로그램의 외곽선이 엉망으로 깨져서 괴물문자들이

 나타나는 현상과 유사한 점이 있다.


   mul.dat는 이러한 경우를 방지하기 위해 우선적으로 변환되어야 할 한글

  글자들을 모아 놓은 파일이며 mul.exe를 실행하면 자동으로 읽혀 여기에

  있는 한글을 우선적으로 변환시킨다.mul.dat엔 실제로  쓰이지 않는 한글

  글자들(쓭,븉...)은 제외하고 꼭 필요하다고 생각되는한글 글자들만 모아

  놓았다.그 결과 크기가 매우 작아지고 mul.exe의  실행속도도 현저히 빨라

  졌다.


   그래도 혹시 물1.10를 쓰다가 변환이 제대로 안되는 글자가 발견되면

  mul.dat에 그 글자를 추가하면 되는 데 그 글자를 mul.dat에서 맨 앞에

  놓는 것이 좋다.그리고 mul.dat엔 한글외의 어떤 다른 기호도 넣지

  않아야 한다.


   /**************************************************/

   /* Q editor를 이용한 한글 프로그래밍 환경의 구축 */

   /**************************************************/

   Q editor와 같은 훌륭한 에디터를 이용하면 일반컴파일러에 못지않는 개

   발환경을 만들 수 있다.Q editor는 key의 용도를 사용자 마음대로 정의

   할 수 있으므로 key를 한번 눌러 파일의 저장과 컴파일이 동시에

   되게 정의하면 매우 편리하다(이렇게 하지 않아도 별 불편은 없지만).

   예를 들어 mcc.bat라는 배치파일을 다음과 같이 우선 작성한다.

   C:\>copy con mcc.bat

   @echo off

   mul %1 %1.c c.dfn

   if errorlevel=1 goto end

   tcc %1

   :end


   그리고 Q editor의 키를 재정의하는 파일의 일부를 다음과 같이 고친다.


   @f9            macroBegin gSave dos 'mcc ' currentFileName return


   마지막으로 qconfig.exe(Qedit의 환경을 고치는 프로그램)을 실행하여

   Q editor의 키 정의 상태를 바꾼다.(잘 이해가 안되면 qedit에서 정의하는

   문서 파일이나 잡지 등에 소개된 Q editor 관련 내용이 많으므로 그것

   들을 보기 바람)

   이런 뒤 qedit(q.exe)를 써서 파일을 작성하여  alt키와 F9를 동시에

   누르면 다음과 같은 작업이 자동적으로 일어난다.


   1.현재 작성중인 파일이 자동으로 저장된다.(저장을 하지 않으면 현재

   에디터에 작성중인 프로그램이 디스크에 저장되지 않은 상태이므로

   컴파일러는 파일이 존재하지 않는다고 보고하거나 이전에 저장된 내용을

   컴파일한다.)

   2.DOS로 나가 mcc.bat를 실행시킨다.


   여기서 Q editor에서 작성하는 파일의 이름엔 확장자를 붙이지 않아야

   한다.그리고 확장자를 이용하여 분류하고자 한다면 배치파일을 다음과

   같이 수정한다.


   C:\>copy con mcc.bat

   @echo off

   mul %1 %1.c c.dfn

   if errorlevel=1 goto end

   copy %1 %1.ssi                (rename명령은 쓰지 말 것)

   tcc %1

   :end


   /*****************/

   /* 기        타 */

   /****************/

  <버전별 차이>

  1.0 :물의 최초버전

  1.01:하나의 한글예약어,식별어의 크기를 한글 20자로 늘림

  1.02:1.01의 버그 잡은 것

  1.10:1.02의 버그 잡고 문법 에러 탐지 기능 추가.파일 발견되지 않든가 하여

       실행 도중에 그만 둘 때는 errorlevel로 1을 발생시키므로 배치파일

       작성시 보다 편리.


   제공되는 파일은 다음과 같다.

  mul.exe 주프로그램

  *.dfn  정의파일

  *.bap  한글 파스칼 예제

  *.ssi  한글 씨언어 예제

  *.bat  배치파일

  mul.dat  mul.exe의 실행에 필수적인 파일

  mul.doc  문서 파일


  본 프로그램에 대해  문의할 것이 있으면 KORTEL ID,daramzui로 메일 바람.


                                                        1992.5 정 만국



mul11.zip


'소프트웨어 > 개발툴' 카테고리의 다른 글

Turbo C 2.01  (0) 2016.06.28
한글 라이브러리 1.0  (0) 2016.06.27
클리퍼 강좌 예제  (0) 2016.06.25
미니 한글 라이브러리  (0) 2016.06.25
허르미 한글 라이브러리 2.0  (0) 2016.06.25