공통 연산자 표기법

Common operator notation

프로그래밍 언어에서 과학적인 계산기와 유사한 공통 연산자 표기법 또는 연산자 문법은 수학적 및 기타 형식적 표현을 정의하고 분석하는 방법이다.이 모델에서 토큰의 선형 순서는 연산자와 피연산자의 두 종류로 나뉜다.

피연산자는 운영자가 운용하는 대상이다.여기에는 단순한 스칼라 변수부터 복잡한 집계 구조 및 개체에 이르기까지 모든 것을 나타낼 수 있는 문자적 숫자와 기타 상수(이름)뿐만 아니라, 사용 상황뿐만 아니라 당면한 언어의 복잡성과 능력에 따라 식별자(이름)도 포함된다.피연산자의 한 가지 특별한 유형은 괄호 그룹이다.괄호 안에 둘러싸인 표현식은 일반적으로 다음 평가 수준에서 단일 피연산자로 처리되도록 재귀적으로 평가된다.

각 운영자에게는 직위, 우선 순위, 연상성이 부여된다.연산자 우선 순위는 서로 다른 우선 순위(또는 우선 순위)의 두 연산자로 둘러싸인 피연산자를 어느 연산자가 가져갈지를 정의하는 수(높음에서 낮음 또는 그 반대로)이다.곱셈은 일반적으로 덧셈보다 우선 순위가 높으므로,[1] 예를 들어 3+4×5 = 3+(4×5) ≠(3+4)×5이다.

운영자 위치의 측면에서 운영자는 접두사, 사후 수정 또는 infix일 수 있다.접두사 연산자는 -x에서와 같이 피연산자 바로 앞에 있다.postfix 연산자는 예를 들어 x!와 같이 피연산자를 즉시 성공시킨다.infix 연산자는 x+y와 같이 왼쪽과 오른쪽 피연산자 사이에 위치한다.C-syntax 계열을 가장 두드러지게 나타내는 일부 언어는 이 관습적인 용어를 확장하며, 또한 3차 인픽스 연산자(a?b:c)를 말한다.이론적으로 괄호화를 단항적 분기 연산으로 정의하는 것조차 가능할 것이다(그러나 반드시 실용적인 것은 아님).

연산자 연관성

연산자 연관성은 연산자가 1-2-3에서와 같이 동일한 우선순위의 연산자들로 둘러싸여 있을 때 어떤 일이 일어나는지 결정한다. 연산자는 왼쪽 연관성, 오른쪽 연관성 또는 비 연관성일 수 있다.피연산자에 대해서는 좌우 순서에 따라 좌뇌연산자를 적용하고, 우뇌연산자는 반대로 적용한다.기본 산술 연산자는 일반적으로 모두 좌익 연관성이 있으며,[1] 예를 들어 1-2-3 = (1-2)-3 ≠ 1-(2-3)을 의미한다.이것은 상위 사업자에게 해당되지 않는다.예를 들어, 지수는 일반적으로 수학에서는 우 연상이지만 [1]엑셀과 같은 일부 컴퓨터 응용 프로그램에서는 좌 연상으로서 구현된다.연산자로서 할당이 구현되는 프로그래밍 언어에서, 그 연산자는 종종 우 연상이다.만약 그렇다면, 다음과 같은 진술이 있다.a := b :=c는 a :=(b :=c)와 같을 것인데, c의 값이 b에 복사되고, 그 다음에 a에 복사된다는 뜻이다.연관성이 없는 운영자는 동등한 우선 순위를 가진 운영자와 경쟁할 수 없다.예를 들어 프롤로그에서 infix 연산자 :-는 연관성이 없으므로 :- b :- c와 같은 구조는 구문 오류다.- (부정) 또는 sin(트리거계 함수)과 같은 단일 접두사 연산자는 일반적으로 연관 접두사 연산자다.둘 이상의 연관 접두사 또는 동일한 우선순위의 사후 처리 연산자가 피연산자보다 앞에 있거나 피연산자와 가장 가까운 연산자가 먼저 간다.그래서 -sin x = -(sin x), sin -x = sin(-x)이다.

수학 지향 언어(과학적 계산기 등)는 접두사 연산자(죄 등)보다 우선 순위가 높은 암묵적 곱셈을 허용하는 경우가 있어 sin 2x+1 = (sin(2x)+1)+1을 예로 들 수 있다.[citation needed]

그러나 접두사(및 사후 수정) 연산자가 반드시 모든 infix 연산자보다 높은 우선순위를 가지는 것은 아니다.일부 (광학) 프로그래밍 언어에는 sin이라고 하는 연산자가 있을 수 있는데, 이 연산자는 ×보다 낮지만 +보다 높을 수 있다.그런 언어에서는 보통 그렇듯이 (죄 2)·x+1 대신 죄(2·x)+1이 진실일 것이다.

표현 평가 규칙은 대개 세 가지다.

  1. 괄호 안의 하위표현을 하나의 재귀적으로 평가된 피연산자로 처리한다(단, 다른 의미로는 다른 종류의 괄호가 있을 수 있다).
  2. 피연산자를 우선 순위가 낮은 연산자보다 우선 순위가 높은 연산자에 바인딩하십시오.
  3. 동일한 우선 순위를 위해 연산자의 연관성에 따라 연산자에 바인딩하십시오.

몇 가지 다른 예:

1-2+3/4*5+6+7 = (((1-2)+((3/4)*5))+6)+7
4 + -x + 3 = (4 + (-x) + 3

공통 연산자 표기법 일반화

운영자 우선 순위 클래스와 연관성의 사용은 한 가지 방법일 뿐이다.단, 가장 일반적인 방법은 아니다. 이 모델은 '+'와 경쟁할 때 '-'와 경쟁할 때 '+'와 동등한 선행 및 연관성을 여전히 부여하면서 '+'와 경쟁할 때 '-'와 경쟁할 때보다 더 많은 우선 순위를 제공할 수 없다.이 모델의 일반화된 버전(각 운영자에게 독립적인 좌우 선행 조건을 부여할 수 있는)은 [1]에서 확인할 수 있다.

참고 항목

참조

  1. ^ a b c Bronstein, Ilja Nikolaevič; Semendjajew, Konstantin Adolfovič (1987) [1945]. "2.4.1.1.". In Grosche, Günter; Ziegler, Viktor; Ziegler, Dorothea (eds.). Taschenbuch der Mathematik (in German). Vol. 1. Translated by Ziegler, Viktor. Weiß, Jürgen (23 ed.). Thun and Frankfurt am Main: Verlag Harri Deutsch (and B. G. Teubner Verlagsgesellschaft, Leipzig). pp. 115–120. ISBN 3-87144-492-8.