。공부 。

[JESS] Jess 기초문법, bind, batch, printout

kyoe 2008. 7. 1. 17:58
jess 는 lisp 이라는 언어 기반의 문법을 사용하더군요..
jess 에서는 기본적으로 변수선언 이라는것이 없습니다. 단지 변수를 선언할때 변수 앞에 '?' 만 붙여주면 끝 ' ?name' 이런식으로 사용하면 되는것이죠.
하지만 변수에 값을 할당할시에는 꼭 bind 라는 예약어를 사용해 변수를 사용 해야 하더군요
(bind ?name "kyoe") 이런식으로 말이죠
이렇게 처음과 끝에 괄호를 붙어 사용하는 방식을 리스트방식 이라고 했던거 같네요..

- 변수에 데이터 할당  -
(bind ?age 25)           (O)
(bind ?age = 25)         (X)
(bind ?name "kyoe")   (O)
jess 에서의 변수는 어떤형식이든지 지원을 하기 때문에 특별히 변수 형식을 지정해줄 필요가 없습니다.
C언어나 자바에서는 변수에 데이터 할당시 age = 25 이런식으로 '=' 기호를 써서 데이터를 넣을수 있었는데 jess 에서는 '='을 사용하게 되면 에러가 발생합니다.

- 전역변수 선언 및 데이터 할당 -
(defglobal ?*temp* = 100)
변수 선언시 '?*  *' 이런형식으로 선언하며 데이터할당시 '='을 사용합니다.
일반 변수는 (reset)을 사용하면 사라지게 되지만
전역 변수는 (reset) 명령어를 사용해도 메모리상에서 지워지지 않습니다.

- 데이터 출력 (printout) -
(printout t"결과값2 : " ?age crlf)
(printout t"결과값5 : " ?*imsi* crlf)
위와 같이 printout 문을 사용해서 변수에 할당된 데이터를 콘솔창에 출력 할수있습니다..
여기서 't' 는 콘솔창에 출력하는 뜻이고, crlf는 한줄 개행입니다..
""를 쓰지않고 문자열을 출력할수도 있지만 만약 그렇게 할시에는 공백없이 문자열이 출력됩니다.

- 연산 (선행표기법 사용) -
JESS  : (bind ?x(+(+ 2 2)(* 3 3)))
C언어 : x = (2+2) + (3*3)
이렇게 jess에서는 lisp언어에서와 마찬가지로 선행표기법을 씁니다..

- batch  -
batch 는 확장자가 *.clp인 파일을 불러들어 사용할수 있습니다.
만약 hello.clp 파일에 다음과 같은 소스가 있다면
(printout t"Hello World!"crlf)
다른 파일에서는 다음과 같이
(batch hello.clp)
hello.clp 파일을 불러들어 사용할수 있는것입니다.
실행시키면 당연히 'Hello World' 가 출력 되겠죠?