X-Git-Url: http://nitlanguage.org diff --git a/src/syntax/syntax.nit b/src/syntax/syntax.nit index 4ec5516..b597a9c 100644 --- a/src/syntax/syntax.nit +++ b/src/syntax/syntax.nit @@ -32,6 +32,16 @@ special ModuleLoader redef fun parse_file(context, file, filename, name, dir) do + var name_is_valid = name.to_s.length > 0 and name.to_s[0].is_lower + for char in name.to_s do if not char.is_digit and not char.is_letter and not char == '_' + then + name_is_valid = false + break + end + if not name_is_valid then + 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 parser = new Parser(lexer) var node_tree = parser.parse @@ -43,15 +53,15 @@ special ModuleLoader 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 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