From 4f033cee97fc4b520cf7243165d6ae071bd4e3b9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Sun, 15 Jun 2014 09:16:51 -0400 Subject: [PATCH] pep8analysis: intro a variant main program for a web interface MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- contrib/pep8analysis/src/pep8analysis_web.nit | 67 +++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 contrib/pep8analysis/src/pep8analysis_web.nit diff --git a/contrib/pep8analysis/src/pep8analysis_web.nit b/contrib/pep8analysis/src/pep8analysis_web.nit new file mode 100644 index 0000000..bb314f1 --- /dev/null +++ b/contrib/pep8analysis/src/pep8analysis_web.nit @@ -0,0 +1,67 @@ +module pep8analysis_web + +import emscripten + +import backbone +import ast +import model +import cfg +import flow_analysis + +redef class AnalysisManager + + fun run(src: String) + do + var stream = new StringIStream(src) + var ast = build_ast("web", stream) + assert ast != null + + if failed then exit 1 + + # Build program model + var model = build_model(ast) + if failed then exit 1 + + if model.lines.is_empty then + fatal_error( ast, "This programs appears empty" ) + exit 1 + end + + # Create CFG + var cfg = build_cfg(model) + if failed then exit 1 + + # Run analyses + + ## Reaching defs + do_reaching_defs_analysis(cfg) + + ## Range + do_range_analysis(ast, cfg) + + ## Types + do_types_analysis(ast, cfg) + + print_notes + if notes.is_empty then print "Success: Nothing wrong detected" + + # Ready next + reset + clear + end +end + +class StringIStream + super BufferedIStream + + init(str: String) do _buffer = new FlatBuffer.from(str) + + redef fun fill_buffer do end_reached = true + redef var end_reached: Bool = false +end + +redef class Object + redef fun manager do return once new AnalysisManager +end + +manager.run args.first -- 1.7.9.5