From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id EAA05376; Fri, 31 Aug 2001 04:20:17 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id EAA05255 for ; Fri, 31 Aug 2001 04:20:16 +0200 (MET DST) Received: from smtp.nwlink.com (smtp.nwlink.com [209.20.130.57]) by concorde.inria.fr (8.11.1/8.10.0) with ESMTP id f7V2KFv25154 for ; Fri, 31 Aug 2001 04:20:15 +0200 (MET DST) Received: from ip178.usw22.rb1.bel.nwlink.com (ip178.usw22.rb1.bel.nwlink.com [207.202.195.178]) by smtp.nwlink.com (8.9.3/8.9.1) with SMTP id TAA28585 for ; Thu, 30 Aug 2001 19:18:25 -0700 (PDT) Received: (qmail 721 invoked by uid 500); 31 Aug 2001 02:19:58 -0000 Date: Thu, 30 Aug 2001 19:19:58 -0700 From: Michael Leary To: caml Subject: Re: [Caml-list] unbound value Parser.main? Message-ID: <20010830191958.B32310@ip178.usw22.rb1.bel.nwlink.com> References: <20010830184600.A32310@ip178.usw22.rb1.bel.nwlink.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20010830184600.A32310@ip178.usw22.rb1.bel.nwlink.com>; from leary@nwlink.com on Thu, Aug 30, 2001 at 06:46:00PM -0700 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk doh! the OcamlMakefile... is picky about names. I've got it like this now: SOURCES = lexer.mll parser.mly fbot.ml RESULT = fbot LIBS=str but now getting: ocamllex.opt lexer.mll 134 states, 7680 transitions, table size 31524 bytes ocamlyacc parser.mly make[1]: Entering directory `/home/leary/dev/ocaml/fbot' making ._ncdi/parser.di from parser.mli making ._d/parser.d from parser.ml making ._d/lexer.d from lexer.ml making ._d/fbot.d from fbot.ml make[1]: Leaving directory `/home/leary/dev/ocaml/fbot' make[1]: Entering directory `/home/leary/dev/ocaml/fbot' ocamlopt.opt -c lexer.ml File "lexer.mll", line 2, characters 0-11: Unbound module Parser make[1]: *** [lexer.cmi] Error 2 make[1]: Leaving directory `/home/leary/dev/ocaml/fbot' make: *** [native-code] Error 2 which seems closer to the problem... :/ On Thu, Aug 30, 2001 at 06:46:00PM -0700, Michael Leary wrote: > || ocamllex.opt lexer.mll > || 134 states, 7680 transitions, table size 31524 bytes > || ocamlyacc parser.mly > || make[1]: Entering directory `/home/leary/dev/ocaml/fbot' > || making ._ncdi/parser.di from parser.mli > || making ._d/parser.d from parser.ml > || making ._d/lexer.d from lexer.ml > || making ._d/fbot.d from fbot.ml > || make[1]: Leaving directory `/home/leary/dev/ocaml/fbot' > || make[1]: Entering directory `/home/leary/dev/ocaml/fbot' > || ocamlopt.opt -c fbot.ml > fbot.ml|302 col 16| File "fbot.ml", line 302, characters 16-27: Unbound > value Parser.main > || make[1]: *** [fbot.cmi] Error 2 > || make[1]: Leaving directory `/home/leary/dev/ocaml/fbot' > || make: *** [native-code] Error 2 > > let _ = > try > let lexbuf = Lexing.from_channel stdin in > while true do > let result = Parser.main Lexer.token lexbuf in (); <--- here > done > with Lexer.Eof -> exit 0 > > I'm assuming that (as usual) there's something plainly obvious I'm missing > here, but just in case, here's the lexer and parser: > > lexer.mll: > > { > open Parser > exception Eof > } > rule token = parse > [' ' '\t'] { token lexbuf } > | ['\n'] { EOL } > | "Initialize" { INITIALIZE } > | "YourName" { YOURNAME } > | "YourColour" { YOURCOLOUR } > | "GameOption" { GAMEOPTION } > | "GameStarts" { GAMESTARTS } > | "Radar" { RADAR } > | "Info" { INFO } > | "Coordinates" { COORDINATES } > | "RobotInfo" { ROBOTINFO } > | "RotationReached" { ROTATIONREACHED } > | "Energy" { ENERGY } > | "RobotsLeft" { ROBOTSLEFT } > | "Collision" { COLLISION } > | "Warning" { WARNING } > | "Dead" { DEAD } > | "GameFinishes" { GAMEFINISHES } > | "ExitRobot" { EXITROBOT } > | ['0' - '9']+ { INT(int_of_string(Lexing.lexeme lexbuf)) } > | ['0' - '9']+ '.' ['0' - '9']+ { DOUBLE(float_of_string(Lexing.lexeme lexbuf)) } > | ['0' - '9' 'a' - 'f' 'A' - 'F'] { HEX } > | ['a' - 'z' 'A' - 'Z']+ { STRING } > | eof { raise Eof } > > > parser.mly: > > %token INT > %token DOUBLE > %token HEX > %token STRING > %token EOL INITIALIZE YOURNAME YOURCOLOUR GAMEOPTION GAMESTARTS RADAR INFO COORDINATES ROBOTINFO ROTATIONREACHED ENERGY ROBOTSLEFT COLLISION WARNING DEAD GAMEFINISHES EXITROBOT > %start main > %type main > %% > main: > | INITIALIZE INT EOL { initialize INT } > | YOURNAME STRING EOL { your_name STRING } > | YOURCOLOUR HEX EOL { your_color HEX } > | GAMEOPTION INT DOUBLE EOL { game_option INT } > | GAMESTARTS EOL { game_starts } > | RADAR DOUBLE INT DOUBLE EOL { radar DOUBLE INT DOUBLE } > | INFO DOUBLE DOUBLE DOUBLE EOL { info DOUBLE DOUBLE DOUBLE } > | COORDINATES DOUBLE DOUBLE DOUBLE EOL { coordinates DOUBLE DOUBLE DOUBLE } > | ROBOTINFO DOUBLE INT EOL { robot_info DOUBLE INT } > | ROTATIONREACHED INT EOL { rotation_reached INT } > | ENERGY DOUBLE EOL { energy DOUBLE } > | ROBOTSLEFT INT EOL { robots_left INT } > | COLLISION INT DOUBLE EOL { collision INT } > | WARNING INT STRING EOL { warning INT STRING } > | DEAD EOL { dead } > | GAMEFINISHES EOL { game_finishes } > | EXITROBOT EOL { exit_robot } > ; > > > thanks! > Mike > > -- > ------------------- > Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ > To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr -- ------------------- Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr