From 1a7fe29c6a9bff88b46c7084ecc96b23e92afbd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Fri, 28 Mar 1997 15:42:43 +0100 Subject: [PATCH] Cleaned up the code a bit. Rev: lib/modules/LR.pmod/Grammar_parser.pmod:1.2 --- lib/modules/LR.pmod/Grammar_parser.pmod | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/modules/LR.pmod/Grammar_parser.pmod b/lib/modules/LR.pmod/Grammar_parser.pmod index 1710448fc7..69311fa79c 100755 --- a/lib/modules/LR.pmod/Grammar_parser.pmod +++ b/lib/modules/LR.pmod/Grammar_parser.pmod @@ -1,7 +1,7 @@ #!/home/grubba/src/pike/build/sol2.5/pike /* - * $Id: Grammar_parser.pmod,v 1.1 1997/03/03 23:50:14 grubba Exp $ + * $Id: Grammar_parser.pmod,v 1.2 1997/03/28 14:42:43 grubba Exp $ * * Generates a parser from a textual specification. * @@ -151,7 +151,7 @@ private object(Stack.stack) id_stack = Stack.stack(); private mapping(string:int) nonterminal_lookup = ([]); -private object(parser) g=parser(); +private object(parser) g; private object master; @@ -328,6 +328,17 @@ object(parser) make_parser(string str, object|void m) return (res); } +int|object(parser) make_parser_from_file(string f, object|void m) +{ + object(files.file) f = files.file(); + int|object(parser) g = 0; + if (f->open(argv[i], "r")) { + g = make_parser(f->read(0x7fffffff), m); + f->close(); + } + return(g); +} + /* * Syntax-checks and compiles the grammar files */ @@ -339,12 +350,10 @@ int main(int argc, string *argv) int i; for (i=1; i < argc; i++) { - object(FILE) f = FILE(); - object(parser) g; - f->open(argv[i], "r"); werror(sprintf("Compiling \"%s\"...\n", argv[i])); - g = make_parser(f->read(0x7fffffff)); - if (error) { + + int|object(parser) g = make_parser_from_file(argv[i]); + if (error || !g) { werror("Compilation failed\n"); } else { werror("Compilation done\n"); -- GitLab