[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2005-12-07 (08:28) |
From: | Hendrik Tews <tews@t...> |
Subject: | Re: [Caml-list] LL(n) stream parsers? |
Dmitry Bely <dbely@mail.ru> writes: It looks like camlp4 can only generate LL(1) parsers. How difficult it would be to extend it to build LL(n) parsers? Camlp4 does some left factorization in the parsing rules. This gives some LL(n) effect: Objective Caml version 3.09.0 # #load "camlp4o.cma";; Camlp4 Parsing version 3.09.0 # #load "pa_extend.cmo";; # let gram = Grammar.gcreate (Plexer.gmake ());; val gram : Grammar.g = <abstr> # let test = Grammar.Entry.create gram "test";; val test : '_a Grammar.Entry.e = <abstr> # EXTEND test: [ [ "a"; "b"; "c"; "d" -> print_endline "abcd" | "a"; "b"; "c"; "e" -> print_endline "abce" ] ]; END;; - : unit = () # Grammar.Entry.parse test (Stream.of_string "a b c d");; abcd - : unit = () # Grammar.Entry.parse test (Stream.of_string "a b c e");; abce - : unit = () Bye, Hendrik