From 020a0a39a9afcbe2515a458f453d67ce10b43abc Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 16 Nov 2005 20:28:22 +0000 Subject: [PATCH] fixed description svn: r1330 original commit: ec2567b39202f75435d6df187fc05586ce6ae776 --- collects/algol60/cfg-parser.ss | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/collects/algol60/cfg-parser.ss b/collects/algol60/cfg-parser.ss index 02174e6..a67e16a 100644 --- a/collects/algol60/cfg-parser.ss +++ b/collects/algol60/cfg-parser.ss @@ -3,22 +3,21 @@ ;; `parser', except that it works on an arbitrary CFG (returning ;; the first sucecssful parse). -;; I think this is probably a packrat parser, except that -;; left-recursion is not transformed away. Instead, alternative -;; solutions are computed in parallel, and multiple attempts to -;; compute the same result block until the first one completes. -;; If you get into deadlock, such as when trying to match +;; It's a backtracking parser. Alternative for a non-terminal are +;; computed in parallel, and multiple attempts to compute the same +;; result block until the first one completes. If you get into +;; deadlock, such as when trying to match ;; := ;; then it means that there's no successful parse, so everything -;; that's blocked should fail. +;; that's blocked fails. -;; The packrat-ness is caching the series of results for a particular -;; non-terminal at a particular starting location. Otherwise, it's -;; backtracking search. Backtracking is implemented through explicit -;; success and failure continuations. Multiple results for a -;; particular nonterminal and location are kept only when they have -;; different lengths. (Otherwise, in the spirit of finding one -;; successful parse, only the first result is kept.) +;; Caching remember the series of results for a particular +;; non-terminal at a particular starting location. Otherwise, the +;; parser uses backtracking search. Backtracking is implemented +;; through explicit success and failure continuations. Multiple +;; results for a particular nonterminal and location are kept only +;; when they have different lengths. (Otherwise, in the spirit of +;; finding one successful parse, only the first result is kept.) ;; The parser-tools's `parse' is used to transform tokens in the ;; grammar to tokens specific to this parser. In other words, this