Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

언어의 기준에 대하여 (About the Language Reference) #65

Open
simoniful opened this issue Nov 10, 2022 · 0 comments
Open

언어의 기준에 대하여 (About the Language Reference) #65

simoniful opened this issue Nov 10, 2022 · 0 comments

Comments

@simoniful
Copy link
Owner

simoniful commented Nov 10, 2022

이 부분부터 스위프트 프로그래밍 언어의 공식 문법을 설명한다
여기서 설명하는 문법은, 구문 해석기(parser) 나 컴파일러(compiler)를 직접 구현하게 하는 것 보단,
언어를 좀 더 자세히 이해하도록 돕는게 목적이다

스위프트 언어는 상대적으로 소규모(small)인데,
스위프트 코드 거의 어디서나 나타나는 수 많은 공통 타입과, 함수, 및 연산자들이
실제론 스위프트 표준 라이브러리에 대부분 정의되어 있기 때문이다
이러한 타입과, 함수, 및 연산자들은 스위프트 언어 그 자체의 일부는 아니긴 하지만,
이제부터의 논의와 코드 예제에서 광범위하게 사용된다

How to Read the Grammar (문법 읽는 방법)

스위프트 프로그래밍 언어의 공식 문법 설명에 사용하는 표기법은 몇 가지 협약(conventions)을 따르고 있다
Summary of the Grammar 페이지에서 다양한 구문 문법을 확인 가능하다

  • 문법 생산물 (grammar productions)은 화살표(→) 로 표시하며 “구성할 수 있다(can consist of)”고 읽는다
  • 구문 범주 (syntactic categories)는 이탤릭체(italic)로 지시하며 문법 생산 규칙(grammar production rule) 양 쪽에 나타난다
  • 글자값(literal) 단어 및 구두점 (punctuation)은 constant width(상수 폭) 굵은 글씨체로 지시하며
    문법 생산 규칙 오른쪽에만 나타난다
    여기서 ‘글자값 (literal)’ 이란 let a = 10 에서의 10 과 같은 값을 말한다
    글자값에 대한 더 자세한 정보는, Literals 페이지를 통해 알 수 있다
  • 대안으로 생산한 문법은 세로 막대(|)로 구분하며, 대안 생산물이 너무 길어 이해하기 쉽지 않을 땐
    여러 개의 문법 생산물로 끊어서 새로운 줄에 둔다
  • 몇 몇 경우에, 표준 글꼴(regular font) 텍스트를 사용하여 문법 생산 규칙의 오른쪽(부분)을 설명한다
    이 때 ‘표준 글꼴(regular font)’은 문법 그 자체가 아닌 그 문법 요소에 대한 설명에 사용한다
  • 옵셔널한 구문 범주와 글자 값은 뒤에 딸린 첨자(trailing subscript)인 opt로 표시한다

한 예시로 게터-세터 블럭(getter-setter block)의 문법은 다음 처럼 정의한다

GRAMMAR OF A GETTER-SETTER BLOCK
getter-setter-block → {­ getter-clause ­setter-clause opt­­ }­ | { ­setter-clause ­getter-clause }

위의 정의는 게터-세터 블럭이
게터절과 그 뒤의 선택적 세터절을, 중괄호로 테두리 친 것,
세터절과 그 뒤의 게터절을, 중괄호로 테두리 친 것,
두 가지로 구성할 수 있다는 걸 지시한다

위의 문법 생산물은 다음의 두 생산물과 같다고 볼 수 있는데, 여기선 하나씩 명시하여 상세하게 설명한다

GRAMMAR OF A GETTER-SETTER BLOCK
getter-setter-block → {­ getter-clause ­setter-clause opt­­
getter-setter-block → { ­setter-clause ­getter-clause }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant