어떤 언어는 이것을 할 수 있고 어떤 언어는 그렇지 않습니까? 세미콜론을 끝에 추가하는 균일 한 시스템을 유지해야하는 이유는 무엇입니까?
Robert는 Swift에 대해 좋은 대답을했으며 일반적으로 구문 분석과 세미콜론을 사용하거나 사용하지 않는 이유에 대해 조금 더 추가하려고합니다.
프로그램을 컴파일 할 때 소스 파일을 실행 가능 코드로 변환하기 전에 몇 가지 단계가 있으며, 첫 번째는 읽기 및 구문 분석 중 하나입니다 . 구문 분석 중 코드는 언어 의 문법 에 따라 일련의 문자에서 구조화 된 표현으로 변환 됩니다. 이를 위해 코드를 구성하는 요소 (변수, 상수, 선언 등)를 식별하고 분리해야합니다. 다음과 같은 선언을 할 때 :
int someNumber = 0;
그것은 "어떤 someNumber
유형 의 '것을 만들어서 int
할당 0
하는 것" 개념으로 돌아 가야하는 일련의 문자 일 뿐이다 .
이를 위해서는 명령문의 정확한 시작과 끝을 식별해야합니다. 당신이 이것을 가지고 있다고 상상해보십시오.
int someNumber = 0;
int otherNumber = 1;
그것들은 두 가지 다른 선언이라는 것을 알아야합니다. ;
파서가이 일을 찾을 때까지 문자를 읽고, 시도 단지 하나의 문으로 읽은 것을 이해 할 수 있도록 C와 같은 언어가 사용됩니다있다. 이것은 Robert가 말했듯이 다음과 같이 같은 줄에 여러 문장을 가질 수 있습니다.
int someNumber = 0; int otherNumber = 1;
두 줄로 쓰는 것과 정확히 같은 효과가 있습니다.
Python 과 같은 다른 언어에서는 각 문장을 다른 줄에 배치해야합니다.
x = 3
if x < 10:
print 'x smaller than 10'
else:
print 'x is bigger than 10 or equal'
따라서 ;
언어 자체로 인해 같은 줄에 문장을 추가 할 수 없으므로을 추가 할 필요가 없습니다 !
그러나 LISP 또는 Scheme 과 같은 다른 언어 는 문장을 그룹화하는 방법이 매우 다릅니다 (실제로 문장은 아니지만 지금은 무시합시다). 따라서 모든 것에 대한 괄호가 있습니다.
(define (do-stuff x)
(begin
(display (format "value: ~a" x))
x))
다시 말하지만, 당신은 필요하지 않습니다 ;
같은 문자 (사용하기 때문에 단지를 )
, (
것들에 대한) 다른 언어가에 있음을 {
, }
, :
왜 필요합니까 : 만 리스프의 구문을 알고있는 등 누군가가 당신을 요청할 수 있습니다 ;
명령문의 끝에서 ?
낯선 예를 추가하기 만하면됩니다 : OCaml 은 문장 끝에 세미콜론이있을뿐만 아니라 두 개가 있습니다!
let rec fact x =
if x <= 1 then 1 else x * fact (x - 1);;
왜? 모르겠어요 :)
다른 언어는 다른 목적과 다른 철학으로 설계되었습니다. 모든 언어가 동일한 구문과 규칙을 공유하는 경우 동일한 방식으로 만 동일한 작업을 수행 할 수 있습니다.