From e67369c3e1743b6a612740716c72a933c6183b76 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Wed, 17 Sep 1997 19:22:17 -0700
Subject: [PATCH] some remodeling done

Rev: tutorial/wmmltohtml2:1.2
---
 tutorial/wmmltohtml2 | 77 ++++++++++++++++++++++++++++++++------------
 1 file changed, 57 insertions(+), 20 deletions(-)

diff --git a/tutorial/wmmltohtml2 b/tutorial/wmmltohtml2
index a14f3f641d..40ff6041c7 100755
--- a/tutorial/wmmltohtml2
+++ b/tutorial/wmmltohtml2
@@ -6,24 +6,61 @@ import Stdio;
 
 int main(int argc, string *argv)
 {	
-  program output=(program)argv[1];
-  werror("Reading ");
-  mixed data=stdin->read(0x7fffffff);
-  werror("Lexing ");
-  data=Sgml.lex(data);
-  werror("Grouping ");
-  data=Sgml.group(data);
-  werror("Including ");
-  data=Wmml.handle_include(data);
-  werror("Verifying\n");
-  Wmml.verify(data);
-  werror("Collecting TOC ");
-  SGML toc=Wmml.collect_toc(data);
-  werror("index ");
-  INDEX_DATA index=Wmml.collect_index(data);
-  // write(sprintf("%O\n",Wmml.group_index(Wmml.collect_index(data))));
-  werror("\nWriting output\n");
-  output()->output(argv[2],data,toc,index);
-  write("Ok\n");
-  exit(0);
+  mixed *ER=catch {
+    program output=(program)argv[1];
+    werror("Reading ");
+    mixed data=stdin->read(0x7fffffff);
+    werror("Lexing ");
+    data=Sgml.lex(data,"stdin");
+    werror("Grouping ");
+    data=Sgml.group(data);
+    werror("Verifying\n");
+    Wmml.verify(data);
+    werror("Concretizing\n");
+    data=Wmml.make_concrete_wmml(data);
+    werror("Verifying (again)\n");
+    Wmml.verify(data);
+    werror("Collecting TOC ");
+    SGML toc=Wmml.collect_toc(data);
+    werror("index ");
+    INDEX_DATA index=Wmml.collect_index(data);
+    // write(sprintf("%O\n",Wmml.group_index(Wmml.collect_index(data))));
+    werror("\nWriting output\n");
+    output()->output(argv[2],data,toc,index);
+    write("Ok\n");
+    exit(0);
+  };
+
+  if(ER)
+  {
+    catch {
+      if(arrayp(ER) && sizeof(ER)>1 && arrayp(ER[1]))
+      {
+	mixed x;
+	x=ER[1];
+	x=reverse(x);
+	foreach(x,x)
+	  {
+	    for(int e=3;e<sizeof(x);e++)
+	    {
+	      mixed s=x[e];
+	      if(!arrayp(s)) s=({s});
+	      foreach(s,s)
+		{
+		  if(object_program(s)==Sgml.Tag)
+		  {
+		    if(s->pos)
+		    {
+		      werror("This error occured close to tag "+s->tag+" near pos "+
+			     s->pos+".\n");
+		      throw(0);
+		    }
+		  }
+		}
+	    }
+	  }
+      }
+    };
+    throw(ER);
+  }
 }
-- 
GitLab