Rename parsing/ to src/
authorRichard W.M. Jones <rjones@redhat.com>
Sat, 21 Dec 2019 17:01:52 +0000 (17:01 +0000)
committerRichard W.M. Jones <rjones@redhat.com>
Sat, 21 Dec 2019 20:23:36 +0000 (20:23 +0000)
And some refactoring of the main code and command line parsing.

13 files changed:
.gitignore
Makefile.in
configure.ac
src/Goalfile.in [moved from parsing/Goalfile.in with 100% similarity]
src/Makefile.in [moved from parsing/Makefile.in with 95% similarity]
src/ast.ml [moved from parsing/ast.ml with 100% similarity]
src/ast.mli [moved from parsing/ast.mli with 100% similarity]
src/lexer.mli [moved from parsing/lexer.mli with 100% similarity]
src/lexer.mll [moved from parsing/lexer.mll with 100% similarity]
src/main.ml [new file with mode: 0644]
src/parse.ml [moved from parsing/main.ml with 95% similarity]
src/parse.mli [new file with mode: 0644]
src/parser.mly [moved from parsing/parser.mly with 100% similarity]

index 535fea6..bd1d969 100644 (file)
@@ -18,10 +18,10 @@ config.log
 /config.h.in
 /config.status
 /install-sh
-/parsing/goals
-/parsing/lexer.ml
-/parsing/parser.conflicts
-/parsing/parser.ml
-/parsing/parser.mli
-/parsing/stamp-parser
+/src/goals
+/src/lexer.ml
+/src/parser.conflicts
+/src/parser.ml
+/src/parser.mli
+/src/stamp-parser
 /stamp-h
index 2928514..30fe5b1 100644 (file)
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-SUBDIRS = parsing
+SUBDIRS = src
 
 all clean depend install:
-       $(MAKE) -C parsing $@
+       $(MAKE) -C src $@
 
 config.h: stamp-h
 stamp-h: config.h.in config.status
index a542e70..d521660 100644 (file)
@@ -53,6 +53,6 @@ dnl Produce output files.
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
 AC_CONFIG_FILES([Goalfile Makefile
-                 parsing/Goalfile parsing/Makefile])
+                 src/Goalfile src/Makefile])
 
 AC_OUTPUT
similarity index 100%
rename from parsing/Goalfile.in
rename to src/Goalfile.in
similarity index 95%
rename from parsing/Makefile.in
rename to src/Makefile.in
index 666bd6b..15e8006 100644 (file)
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-OBJECTS = ast.cmx parser.cmx lexer.cmx main.cmx
+OBJECTS = \
+       ast.cmx \
+       parser.cmx \
+       lexer.cmx \
+       parse.cmx \
+       main.cmx
 
 all: goals
 
similarity index 100%
rename from parsing/ast.ml
rename to src/ast.ml
similarity index 100%
rename from parsing/ast.mli
rename to src/ast.mli
similarity index 100%
rename from parsing/lexer.mli
rename to src/lexer.mli
similarity index 100%
rename from parsing/lexer.mll
rename to src/lexer.mll
diff --git a/src/main.ml b/src/main.ml
new file mode 100644 (file)
index 0000000..30ba31f
--- /dev/null
@@ -0,0 +1,55 @@
+(* Goalfile parser
+ * Copyright (C) 2019 Richard W.M. Jones
+ * Copyright (C) 2019 Red Hat Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *)
+
+open Printf
+
+let usage =
+  "\
+goals: Build software.
+
+ goals [-f Goalfile] ['var = value' ...] [target ...]
+
+For detailed help see goals(1).
+
+Options:"
+
+let main () =
+  (* Command line arguments. *)
+  let filename = ref "Goalfile" in
+
+  let argspec = [
+    "-f",        Arg.Set_string filename,
+                 "filename Set name of Goalfile";
+    "--file",    Arg.Set_string filename,
+                 "filename Set name of Goalfile";
+  ] in
+  let argspec = Arg.align argspec in
+  let args = ref [] in
+  let anon_fun s = args := s :: !args in
+  Arg.parse argspec anon_fun usage;
+
+  (*let args = List.rev !args in*)
+  let filename = !filename in
+
+  (* Parse the input file. *)
+  let file = Parse.parse_from_file filename in
+
+  Ast.print_file stdout file
+
+let () = main ()
similarity index 95%
rename from parsing/main.ml
rename to src/parse.ml
index 7253954..6b7c03d 100644 (file)
@@ -38,12 +38,10 @@ let parse lexbuf =
      eprintf "%a: parse error\n" print_position lexbuf;
      exit 1
 
-let () =
-  let filename = "Goalfile" in
+let parse_from_file filename =
   let fp = open_in filename in
   let lexbuf = Lexing.from_channel fp in
   lexbuf.lex_curr_p <- { lexbuf.lex_curr_p with pos_fname = filename };
   let file : Ast.file = parse lexbuf in
   close_in fp;
-
-  Ast.print_file stdout file
+  file
diff --git a/src/parse.mli b/src/parse.mli
new file mode 100644 (file)
index 0000000..692524c
--- /dev/null
@@ -0,0 +1,21 @@
+(* Goalfile parser
+ * Copyright (C) 2019 Richard W.M. Jones
+ * Copyright (C) 2019 Red Hat Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *)
+
+val parse : Lexing.lexbuf -> Ast.file
+val parse_from_file : string -> Ast.file
similarity index 100%
rename from parsing/parser.mly
rename to src/parser.mly