# Full syntax analysis of NIT AST.
# Detect syntax and some metamodel errors.
-package syntax
+module syntax
import mmloader
import mmbuilder
import typing
import icode_generation
+import extern_inline
+import extern_type_inheritance
# Loader of nit source files
class SrcModuleLoader
-special ModuleLoader
+ super ModuleLoader
redef type MODULE: MMSrcModule
redef fun file_type do return "nit"
break
end
if not name_is_valid then
- context.error( null, "{filename}: Error package name \"{name}\", must start with a lower case letter and contain only letters, digits and '_'." )
+ context.error( null, "{filename}: Error module name \"{name}\", must start with a lower case letter and contain only letters, digits and '_'." )
end
- var lexer = new Lexer(file, filename)
+ var source = new SourceFile(filename, file)
+ var lexer = new Lexer(source)
var parser = new Parser(lexer)
var node_tree = parser.parse
if node_tree.n_base == null then
end
var node_module = node_tree.n_base
assert node_module != null
- var module_loc = new Location.with_file(filename)
- var module = new MMSrcModule(context, node_module, dir, name, module_loc)
- return module
+ var module_loc = new Location.with_file(source)
+ var mod = new MMSrcModule(context, node_module, dir, name, module_loc)
+ return mod
end
- redef fun process_metamodel(context, module)
+ redef fun process_metamodel(context, mod)
do
- module.process_supermodules(context)
- context.info("Syntax analysis for module: {module.name}", 2)
- module.process_syntax(context)
+ mod.process_supermodules(context)
+ context.info("Syntax analysis for module: {mod.name}", 2)
+ mod.process_syntax(context)
end
init do end