각 의미 론적 요소가 적어도 하나의 구문 론적 표현에 연결되어 있고 다른 하나는 각각의 구문 적 표현이 고유 한 의미를 갖도록하는 구문과 의미론 사이의 관계가 있습니다.
비교 차트
비교 근거 | 통사론 | 의미론 |
---|---|---|
기본 | 언어의 허용 문구. | 문구의 해석. |
오류 | 컴파일 할 때 처리됩니다. | 런타임시 대면했습니다. |
관계 | 통사론 해석에는 몇 가지 뚜렷한 의미가 있어야합니다. | 시맨틱 구성 요소는 구문 표현과 관련이 있습니다. |
구문의 정의
프로그래밍 언어의 구문 은 프로그램의 의미를 고려하지 않고 프로그램의 구조를 나타 내기 위해 사용됩니다. 기본적으로 프로그램의 외양과 구조, 레이아웃을 강조합니다. 여기에는 프로그램에서 사용되는 기호 및 명령의 순서를 검증하는 규칙 모음이 포함됩니다. 실용적 및 계산 모델은 프로그래밍 언어의 이러한 구문 요소를 나타냅니다. 프로그래밍 언어의 구문 지정을 위해 개발 된 도구는 규칙적이고 컨텍스트가없고 속성 문법입니다.
그러나, 이 측면에서 문법의 사용은 무엇입니까? Grammars는 일반적으로 프로그램을 인식하고 생성하는 것을 목적으로하는 재 작성 규칙입니다. 문법은 언어 구조에 대한 설명 대신 계산 모델에 의존하지 않습니다. 문법에는 문법적 범주 (명사구, 동사구, 기사, 명사기 등), 독방 단어 (영문자 요소) 및 문법 범주의 구성 요소 내에서 순서를 지정하는 올바른 규칙이 포함되어 있습니다 나타나야합니다.
구문 분석 은 컴파일러가 수행하는 작업으로, 프로그램에 적절한 파생 트리가 있는지 여부를 검사합니다.
프로그래밍 언어의 구문은 다음 공식 및 비공식 기술을 사용하여 해석 할 수 있습니다.
- 식별자, 리터럴, 문장 부호 및 연산자와 관련된 기본 기호에 대한 규칙을 정의하기위한 어휘 구문 입니다.
- 구체적인 구문 은 알파벳과 같은 어휘 기호를 사용하여 프로그램의 실제 표현을 지정합니다.
- 추상 구문 은 중요한 프로그램 정보 만 전달합니다.
문법 유형
- 컨텍스트 프리 (context-free) 문법 은 전체 언어 구조를 파악하는 데 널리 사용됩니다.
- 정규 표현식 은 프로그래밍 언어의 어휘 단위 (토큰)를 설명합니다.
- 속성 문법 은 언어의 상황에 맞는 부분을 지정합니다.
의미 정의
프로그래밍 언어의 의미론 용어는 구문과 계산 모델 간의 관계를 파악하는 데 사용됩니다. 프로그래머가 쉽게 이해하고 프로그램 실행 결과를 예측할 수 있도록 프로그램의 해석을 강조합니다. 구문 지향적 의미론 ( syntax-directed semantics )으로 알려진 접근법은 함수의 도움으로 구문 구조를 계산 모델에 매핑하는 데 사용됩니다.
프로그래밍 언어의 의미는 다양한 기술 (대수적 의미론, 공리적 의미론, 운영 적 의미론, 의미 론적 의미론 및 번역 의미론)로 설명 될 수 있습니다.
- 대수적 의미론 은 대수를 정의하여 프로그램을 해석합니다.
- 공리적 의미론 은 프로그램 실행의 각 지점 (즉, 암묵적으로)을 억류하는 연관성에 대한 주장을 구축함으로써 프로그램의 의미를 결정합니다.
- 조작 상 의미론 은 언어를 추상 기계와 비교하고 프로그램은 상태 전이의 연속으로 평가됩니다.
- 의미 론적 의미 는 프로그램 상태에서 작동하는 일련의 기능의 형태로 프로그램의 의미를 표현합니다.
- 번역 의미론 은 프로그램을 다른 언어로 번역하는 데 사용되는 방법에 중점을 둡니다.
구문과 의미의 주요 차이점
- 구문은 프로그래밍 언어로 작성된 프로그램의 구조를 나타냅니다. 반면에, 의미론은 프로그램 감각과 계산 모델 사이의 관계를 설명합니다.
- 구문 오류는 컴파일시 처리됩니다. 반대로 시맨틱 오류는 런타임에서 찾기 어렵습니다.
- 예를 들어, C ++에서 변수 "s"는 "int s;"로 선언되며 초기화하려면 정수 값을 사용해야합니다. 정수를 사용하는 대신 "7"을 사용하여 초기화했습니다. 이 선언 및 초기화는 구문 상 정확하지만 "7"은 정수 형식을 나타내지 않으므로 의미 상 부정확합니다.
결론
프로그래밍 언어의 구문은 코드의 구조 나 형식을 지정하는 규칙의 모음이며, 의미는 코드의 해석 또는 기호, 문자 또는 프로그램의 모든 부분과 관련된 의미를 의미합니다.