문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 이동문서 삭제토론 Forth (문단 편집) === 단어 === 포스는 단어를 정의하여 그 단어가 무슨 행동을 할 지를 정한다. 이는 다른 언어에서의 [[함수(프로그래밍)|함수]]처럼 쓰인다. 차이점은 다른 언어에서의 함수는 입력되는 매개변수와 출력값이 존재하지만, 포스는 스택 기반 언어이기에 코드에 기술한 만큼의 스택을 소비하고 값을 스택에 남긴다. 포스는 이러한 스택의 변화를 단어를 정의할 때 [[소괄호]]를 활용하여 주석으로 적어 놓는다. 포스의 장점은 확장성으로 손꼽히는데, 그 이유는 단어를 정의함에 있어서 큰 제한이 없기 때문이다. 기존의 단어를 다시 재정의할 수도 있기 때문이다. 예컨대 연산자 + 를 다른 역할을 하게 만들거나, '더하기'란 이름의 연산자를 새로 만들어 더하기의 역할을 하게 만들 수 있다. 다만 포스는 단어의 대소문자를 구별하지 않는 특징이 있고, 포스 자체가 앞서 설명했듯 공백으로 단어를 구분하기 때문에 단어 중간에는 공백이 들어갈 수 없다. {{{: addprint ( n1 n2 -- n1+n2 ) + dup . ; }}} 위의 코드에서는 두 정수를 더하고 출력한 뒤, 다시 그 값을 스택에 남기는 단어인 addprint를 정의한다. : ([[콜론]])은 단어를 정의하는 단어이다. 세미콜론 뒤에는 단어의 이름을 기술하고, ; ([[세미콜론]])이 오기 전까지 단어의 행동을 기술한다. 1. : 를 통해 단어를 정의하기 시작한다. 1. 단어의 이름은 addprint이다. 1. [[소괄호]]를 통해 스택의 변화를 주석으로 기술해놓았다. 1. \-\- 앞은 소비할 값, 뒤는 내놓을 값이다. 1. 두 정수 n1과 n2를 소비할 것임을 알려준다. 1. n1과 n2를 더한 값을 내놓을 것임을 알려준다. 1. 단어는 '+ dup .' 의 행동을 취한다. 1. + 연산자를 통해 우선 스택의 두 값을 뽑아 더한다. 1. dup 명령어를 통해 스택의 맨 위에 있는 값, 즉 앞에서 더한 값을 복사해 스택의 맨 위에 추가한다. 1. . 명령어를 통해 스택의 맨 위에 있는 값을 뽑으면서 출력한다. dup을 하였으므로 스택에는 더한 값이 여전히 남았다. 1. ; 를 통해 단어의 정의를 마친다. 스택 변화에 대한 주석으로 쓰이는 소괄호에는 상당히 구체적인 정보를 적을 수 있고 그것은 어느 정도의 형식을 갖고 있다. 하지만 실제로 스택에 미치는 영향은 없다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기