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 DAA05000; Fri, 31 Aug 2001 03:46:19 +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 DAA04649 for ; Fri, 31 Aug 2001 03:46:18 +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 f7V1kGv24663 for ; Fri, 31 Aug 2001 03:46:17 +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 SAA19336 for ; Thu, 30 Aug 2001 18:44:28 -0700 (PDT) Received: (qmail 32696 invoked by uid 500); 31 Aug 2001 01:46:00 -0000 Date: Thu, 30 Aug 2001 18:46:00 -0700 From: Michael Leary To: caml Subject: [Caml-list] unbound value Parser.main? Message-ID: <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 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk || 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