54ab9ce43f524661c3d555f32e1123157c8c9319
[sbp.git] / src / edu / berkeley / sbp / misc / ParserServlet.java
1 package edu.berkeley.sbp.misc;
2 import edu.berkeley.sbp.util.*;
3 import edu.berkeley.sbp.*;
4 import edu.berkeley.sbp.chr.*;
5 import java.util.*;
6 import java.io.*;
7 import javax.servlet.*;
8 import javax.servlet.http.*;
9 import java.io.*;
10 import java.net.*;
11 import java.util.*;
12
13 public class ParserServlet extends HttpServlet {
14
15     public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException {
16         doPost(req, resp);
17     }
18     public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException {
19         /*
20         try {
21         try {
22             System.out.println("a");
23            
24             Tree<String> gram =
25                 new CharParser(MetaGrammar.make()).parse(new StringReader(req.getParameter("grammar").trim())).expand1();
26             System.out.println("b");
27             Union meta = MetaGrammar.make();
28             Forest<String> out = new CharParser(meta).parse(new StringReader(req.getParameter("input").trim()));
29             System.out.println(out);
30             
31             final GraphViz gv = new GraphViz();
32             out.toGraphViz(gv);
33
34             resp.setContentType("image/svg+xml");
35             final Process proc = Runtime.getRuntime().exec(new String[] { "dot", "-Tsvg" });
36             new Thread() {
37                 public void run() {
38                     try {
39                         PrintWriter pw = new PrintWriter(new OutputStreamWriter(proc.getOutputStream()));
40                         gv.dump(pw);
41                         pw.flush();
42                         pw.close();
43                     } catch (Exception e) {
44                         e.printStackTrace(); 
45                    }
46                 }
47             }.start();
48
49             byte[] buf = new byte[1024];
50             InputStream is = proc.getInputStream();
51             OutputStream os = resp.getOutputStream();
52
53             while(true) {
54                 int numread = is.read(buf, 0, buf.length);
55                 if (numread==-1) break;
56                 os.write(buf, 0, numread);
57             }
58             os.flush();
59             os.close();
60
61         } catch (ParseFailed e) {
62             e.printStackTrace();
63             resp.setContentType("text/plain");
64             PrintWriter pw = new PrintWriter(new OutputStreamWriter(resp.getOutputStream()));
65             pw.println(e);
66             pw.flush();
67             pw.close();
68         }
69         
70         } catch (Exception e) {
71             throw new ServletException(e);
72         }
73         */
74     }
75
76 }