중첩을 RPN으로 변환하는 Dijkstra shunting yard 알고리즘 옆에 어떤 방법이 있습니까? 나는 shunting 야드 알고리즘의 약점과 이점을 다른 변환 방법과 비교하여 연구하려고 노력 중이다. shunting 야드 알고리즘의 저널에 대한 링크는 크게 감사하겠습니다. 감사합니다중위어를 역 폴란드어 표기법 (후위)으로 변환하는 방법
0
A
답변
1
물론, 거기에 LR 파싱, 파서 combinators, 아마 다른 많은 kinds of parsers입니다.
1
실생활에서는 항상 재귀 적으로 구문을 구문 분석합니다. 파이썬에서
는 기본 알고리즘은 다음과 같습니다
import re
import sys
def toRpn(infixStr):
# divide string into tokens, and reverse so I can get them in order with pop()
tokens = re.split(r' *([\+\-\*\^/]) *', infixStr)
tokens = [t for t in reversed(tokens) if t!='']
precs = {'+':0 , '-':0, '/':1, '*':1, '^':2}
#convert infix expression tokens to RPN, processing only
#operators above a given precedence
def toRpn2(tokens, minprec):
rpn = tokens.pop()
while len(tokens)>0:
prec = precs[tokens[-1]]
if prec<minprec:
break
op=tokens.pop()
# get the argument on the operator's right
# this will go to the end, or stop at an operator
# with precedence <= prec
arg2 = toRpn2(tokens,prec+1)
rpn += " " + arg2 + " " +op
return rpn
return toRpn2(tokens,0)
print toRpn("5+3*4^2+1")
#prints: 5 3 4 2^* + 1 +
이 양식을 쉽게 할당 연산자처럼 오른쪽이 왼쪽 연결 괄호, 단항 연산자 및 연산자를 처리하도록되어있다.
위의 코드는 구문 오류를 적절히 처리하지 않습니다.
관련 문제
- 1. 코덱 : 역 폴란드어 표기법
- 2. 역 폴란드어 표기법 Java
- 3. C로 역 폴란드어 표기법
- 4. 역 폴란드어 표기법 Double Division Error
- 5. 역 폴란드어 표기법 (Python)을 사용하여 계산
- 6. Z3py 폴란드어 표기법 출력
- 7. 폴란드어 표기법 구현
- 8. 역 폴란드어 표기법 및 스택. valueOf 메소드에 오류가 있습니다. 자바
- 9. 역 폴란드어 표기법 계산기 : 입력을 가져 와서 결과 표시
- 10. 내 역 폴란드어 표기법 계산기에 대한 도움이 필요합니다
- 11. 역방향 폴란드어 표기법 이해, 숙제 지정?
- 12. 리눅스 명령 행, 역 폴란드 기호 표기법
- 13. 역 폴란드어 표기법에 대한 CFG
- 14. 역 알고리즘은 폴란드 표기법
- 15. (역 폴란드 표기법) 형태
- 16. 폴란드어 표기법을 역 폴란드어 표기법으로 변환하는 재귀 함수에서 포인터를 반환하는 방법은 무엇입니까?
- 17. 역 폴란드어 표기법 : 계산을 수행하기 위해 입력 텍스트 상자에서 값 가져 오기
- 18. RPN (역 폴란드어 표기법)에서 OR 및 AND 연산자를 사용하는 방법은 무엇입니까?
- 19. 평가 방법 스택을 사용하여 역 폴란드어 표기법을 사용하십시오.
- 20. 역 폴란드어 계산기에 다중 숫자 정수를 추가하는 방법
- 21. 역방향 폴란드어 표기법 계산기 서버를 만들 클라이언트/서버를 편집하려면
- 22. 중위어를 후미로 변환 한 다음 방정식을 푸십시오.
- 23. 수정 된 역 폴란드어 표기법을 사용하여 방정식을 푸십시오.
- 24. 역 폴란드어 표기법을 사용하는 데 문제가 있습니다. (Java)
- 25. Java에서 중위어를 접미사로 변환하고 계산하십시오.
- 26. 큰 부정적인 과학 표기법 번호를 자바 스크립트에서 10 진수 표기법 문자열로 변환하는 방법?
- 27. 역 슬래시를 슬래시로 변환하는 파이썬
- 28. 폴란드어 문자
- 29. 바이너리 트리를 사용하여 중위어를 접미사로 변환
- 30. 표기법 스키마의 표기법
LL 파싱, 다양한 연산자 우선 구문 분석기, ... – EJP