]> matita.cs.unibo.it Git - helm.git/commitdiff
- tabs removed
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Tue, 10 Jun 2003 14:59:38 +0000 (14:59 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Tue, 10 Jun 2003 14:59:38 +0000 (14:59 +0000)
- "\" correctly quoted in strings
- in case of self-loops, the process diverged. Self-loops are now
  ignored during parsing.

helm/graphs/tools/simplify_deps/simplify_deps.ml

index 0763d614974b35679a6993e06b23622c99a1c36c..9b0fb0042ab5d5847807fcd6fae877789c090c1e 100644 (file)
@@ -55,32 +55,36 @@ let parse () =
  try
   while true do
    let line = read_line () in
-    if Str.string_match (Str.regexp " \([^ ]*\) -> \([^ ;]*\)\(\( \[.*\]\)?\);") line 0 then
+    if Str.string_match (Str.regexp " \\([^ ]*\\) -> \\([^ ;]*\\)\\(\\( \\[.*\\]\\)?\\);") line 0 then
      let source = Str.matched_group 1 line in
      let target = Str.matched_group 2 line in
-     let rest   = Str.matched_group 3 line in
-      let tar =
-        try
-        search_node target
-        with
-         Not_found ->
-         let tar = Node (target,ref []) in
-          nodes := tar :: !nodes ;
-          tar
-      in
-       let sou =
-        try
-         let sou = search_node source in
-          let Node (_,ts) = sou in
-           ts := tar::!ts ;
-          sou
-        with
-         Not_found ->
-          let sou = Node (source,ref [tar]) in
-           nodes := sou :: !nodes ;
-          sou
-       in
-        arcs := (sou,tar,rest)::!arcs
+      begin
+       if source <> target then
+        (* not a self loop *)
+        let rest   = Str.matched_group 3 line in
+         let tar =
+           try
+                 search_node target
+           with
+            Not_found ->
+                  let tar = Node (target,ref []) in
+                   nodes := tar :: !nodes ;
+                   tar
+         in
+          let sou =
+           try
+            let sou = search_node source in
+             let Node (_,ts) = sou in
+              ts := tar::!ts ;
+                   sou
+           with
+            Not_found ->
+             let sou = Node (source,ref [tar]) in
+              nodes := sou :: !nodes ;
+                   sou
+          in
+           arcs := (sou,tar,rest)::!arcs
+      end
     else
      print_endline line
   done