
Nom 언어로 작성한 컴파일러는 Nom 코드로 컴파일할 수 있고, Nom 스크립트 번역기 역시 자기 자신을 Java 코드로 변환할 수 있다. Pep/Nom 시스템에서 이런 자기 변환을 실행하는 방법과 관련 스크립트가 소개됐다.
Nom 컴파일러는 다음 명령으로 새 컴파일러 코드를 생성한다.
pep -f compile.pss compile.pss > asm.new.pp
생성된 asm.new.pp가 제대로 작동하는지 확인한 뒤 asm.pp에 덮어쓸 수 있다. Nom의 translation 폴더에 있는 스크립트들도 스스로 컴파일·변환할 수 있으며, 이를 이용하면 Nom 스크립트를 Java 코드로 변환하는 프로그램을 만들 수 있다.
pep -f translate.java.pss translate.java.pss > Machine.java
javac Machine.java
이렇게 만든 Java 번역기로 표현식 파서 스크립트를 Java 코드로 변환하고 실행할 수도 있다.
cat eg/exp.tolisp.pss | java Machine > Machine.java
javac Machine.java
echo "(a+2)*3+4" | java Machine
# will print the expression (a+2)*3+4 as Lisp code
예시에서는 Java 컴파일러의 제약 때문에 프로그램과 소스 파일을 Machine과 Machine.java로 지정해야 한다. 글은 Go 번역기로 컴파일러를 만들면 이 문제가 발생하지 않는다고 설명한다. 번역기를 시험할 때 입력을 간단히 하는 함수 모음은 helpers.pars.sh에서 확인할 수 있으며, Nom JSON 파서를 Go로 변환해 파일 입력으로 실행하는 예시는 다음과 같다.
pep.goff eg/json.check.pss somedata.json
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요