1 // Copyright 2006 all rights reserved; see LICENSE file for BSD-style license
3 package edu.berkeley.sbp.misc;
4 import edu.berkeley.sbp.util.*;
5 import edu.berkeley.sbp.*;
6 import edu.berkeley.sbp.chr.*;
9 import javax.servlet.*;
10 import javax.servlet.http.*;
15 public class ParserServlet extends HttpServlet {
17 public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException {
20 public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException {
24 System.out.println("a");
27 new CharParser(MetaGrammar.make()).parse(new StringReader(req.getParameter("grammar").trim())).expand1();
28 System.out.println("b");
29 Union meta = MetaGrammar.make();
30 Forest<String> out = new CharParser(meta).parse(new StringReader(req.getParameter("input").trim()));
31 System.out.println(out);
33 final GraphViz gv = new GraphViz();
36 resp.setContentType("image/svg+xml");
37 final Process proc = Runtime.getRuntime().exec(new String[] { "dot", "-Tsvg" });
41 PrintWriter pw = new PrintWriter(new OutputStreamWriter(proc.getOutputStream()));
45 } catch (Exception e) {
51 byte[] buf = new byte[1024];
52 InputStream is = proc.getInputStream();
53 OutputStream os = resp.getOutputStream();
56 int numread = is.read(buf, 0, buf.length);
57 if (numread==-1) break;
58 os.write(buf, 0, numread);
63 } catch (ParseFailed e) {
65 resp.setContentType("text/plain");
66 PrintWriter pw = new PrintWriter(new OutputStreamWriter(resp.getOutputStream()));
72 } catch (Exception e) {
73 throw new ServletException(e);