pep8analysis: enable analyzing from stream
[nit.git] / contrib / pep8analysis / src / ast / ast_base.nit
1 import backbone
2 import parser
3
4 redef class AnalysisManager
5 fun build_ast_from_file( filename : String ) : nullable AListing
6 do
7 var file = new IFStream.open( filename )
8 return build_ast(filename, file)
9 end
10
11 fun build_ast(filename: String, stream: IStream): nullable AListing
12 do
13 var source = new SourceFile(filename, stream)
14 var lexer = new Lexer(source)
15 var parser = new Parser(lexer)
16 var node_tree = parser.parse
17
18 var ast = node_tree.n_base
19 if ast == null then
20 var err = node_tree.n_eof
21 assert err isa AError
22 print "error at {err.location}: {err.message}"
23 return null
24 end
25
26 return ast
27 end
28 end