2009-11-09 3 views
0

저는 컴파일러 세계에서 새로운 학생입니다.^_^스택에 음수가 합법적임을 나타냅니다. 예를 들어스택에 음수가 있습니다.

:

중위 1-5 = -4 후위 : 15

명령문은 :

push(1) 
push(5) 
x=pop() 
y=pop() 
t=sub(y,x) 
push(t) 

스택의 최종 결과가 될 것이다 (-4)

합법적 인 경우 어떻게 표현할 수 있습니까 ??

감사합니다.^_^

+0

나에게 맞는 것 같아. 무슨 문제 있니? –

답변

2

예. 음수는 메모리에 Two's complement form에 저장되므로 서명을 위해 스택에 추가 셀이 필요하지 않습니다.

0

스택에 대해 말하면 추상적 인 데이터 유형에 대해 이야기합니다. push/pop 기능을 가지고있는 한, 스택에 넣은 것과 아무런 차이가 없습니다.

0

먼저 빼기 연산자와 음수 기호로 사용되는 대시 '-'사이에 차이점이 있습니다. 우리는 같은 성격을 사용하지만, 다른 의미를 가지고 있습니다.

-4와 같이 양수와 음수 모두 스택의 슬롯 하나만 사용합니다. 당신의 postifx 언어는 한 자리 정수와 산술 연산자를 취할 수있는 경우

, 당신은 0에서 뺀 음수를 나타낼 수

04-2 +

이에 해당합니다

0-4 + 2

에 중위 표기

다음은 몇 가지 용어입니다. 빼기 연산은 "이진 연산자"입니다. 즉, 두 개의 피연산자가 필요합니다. 음수 기호는 "단항 연산자"입니다. 즉, 하나의 피연산자를 사용합니다. 중위 연산자와 피연산자는 이항 연산자와 피연산자에 대한 표기법입니다.

당신이, 당신은 아마 당신의 표현에 대한 몇 가지 문법 규칙을 정의 할 텍스트로 (아마도 당신의 프로그램에서 읽을 수있는 파일) 발현을 나타내는 언급하는 경우
1

- 공백으로 토큰의 분리를 말한다

예를 들어, 접미사에서 444/(4/44) 또는 (44/4) 또는 (4/(4/4))와 동일합니까? 여러 자리 숫자를 구분하는 몇 가지 방법이 필요합니다. 이제

, 당신이 공백을 결정 가정, 당신은 (3 음의 정수가 어떤 분리 공백

그래서 중위 표현 '-1 *없이 일련의 숫자 다음에 마이너스 기호 것이 규칙을 만들 수^(-4) - 7 '은 (는)'-1 -3 -4^* 7 - '이 (가) 될 수 있습니다 이것은 무엇을 찾고 있었습니까?

PS - 적절한 파서를 사용하면 연산자에 공백없이 실제로 처리 할 수 ​​있지만 여전히 피연산자를 서로 구분해야합니다.

관련 문제