이 계열의 파싱 알고리즘 중 요즘 가장 선호하는 방식은 중위 연산자의 우선순위가 모두 같다고 가정하고 식을 임시 배열로 파싱한 뒤, 그 배열에 우선순위 상승(precedence climbing) 알고리즘을 적용하는 것임. 예를 들어 x + y * -z / q는 중위 연산자가 한 칸씩 번갈아 들어가는 7개 원소의 배열이 됨.
임시 배열을 알고리즘의 동작 과정에서 암묵적으로 만들어지는 상태가 아니라 명시적인 작업 공간으로 두면, 중위 연산자가 아닌 연산자와 우선순위의 상호작용이나 Pratt 파서에 이들을 올바르게 연결하는 방법으로 골머리를 앓지 않아도 됨. 결과와 동작은 같으며, 사실상 Pratt 알고리즘을 다르게 구성한 것이라고 봄.
덤으로 수식 관련 파싱을 거의 전부 직접 작성하는 대신, 파서 생성기 뒤에 CST→AST 변환 단계로 구현할 수도 있음. 직접 파서를 작성할 때도 우선순위를 동일하게 취급하는 임시 배열 파싱을 어디에 넣어야 할지 알려주는 단서가 됨.
Pratt 파싱의 핵심은 파싱의 복잡성을 “이 토큰은 왼쪽에 무언가를 요구하는가?”라는 질문 하나로 줄이는 데 있음. 토큰 흐름에서 이항·전위·후위·삼항·함수 호출 연산자를 따로 보는 대신, nud와 led만 보는 것임.
Matklad의 설명 방식은 마음에 들지 않을 뿐 아니라, Pratt 파싱의 사고방식 자체가 뿌리내리지 못하게 한다는 점에서 해롭다고 봄. 이 글은 토큰을 nud와 led로 나누는 대신, 불완전한 파싱 루프에 이항·전위·후위 연산자 처리를 차례로 추가함. 새로운 토큰 범주를 만날 때마다 루프를 확장하는 것은 Pratt의 핵심과 어긋남. Pratt 알고리즘은 이미 이런 연산자를 모두 처리할 수 있으므로, 바꿔야 하는 것은 알고리즘이 아니라 문법의 nud와 led를 기술할 체계를 마련하는 쪽임.
후위 연산자 지원을 추가하는 부분에서도 루프 안에 postfix_binding_power(op) 분기를 넣고, min_bp와 비교한 뒤 토큰을 소비하고 lhs를 갱신함. 이미 led로 처리할 수 있어야 하는데, 왜 별도의 후위 연산자 결합력 개념을 도입하고 파싱 알고리즘까지 바꾸는 것인가? nud와 led를 이해하지 못했다면 Pratt 파싱을 배운 것이 아님.
parsing expressions에 셔unting-yard 알고리즘을 사용하는 것이 그리 어렵지는 않았음. 단항 연산자와 괄호는 이항 연산자보다 하위 계층에서 처리하며, 이 알고리즘은 오른쪽 결합 이항 연산자도 쉽게 처리할 수 있음.