From 25a0c78aee1f3eccd61ca633869b8655246993b9 Mon Sep 17 00:00:00 2001 From: John van Groningen Date: Mon, 6 May 2013 11:44:34 +0000 Subject: [PATCH] also search in hierarchical modules of which the name starts with a lower case character --- Pm/PmParse.icl | 81 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 27 deletions(-) diff --git a/Pm/PmParse.icl b/Pm/PmParse.icl index 6b18d15..8594e13 100644 --- a/Pm/PmParse.icl +++ b/Pm/PmParse.icl @@ -315,21 +315,48 @@ FindIdentifiersInInput imp cleanid imports sym=:{repr} input positions where FindFrom :: !(List String) !(Input a) IdentifierPositionList -> (!Input a, !Symbol, !List String, !IdentifierPositionList) | ScanInput a; FindFrom imports input positions - # (input,sym,linenr,charnr) = ScanInput input; + # (input,sym,linenr,charnr) = scan_module_symbol_from_input input; | IdentSymId sym.repr | sym.string == cleanid # (input,sym,imports,positions) = FindFromIdent (sym.string :! imports) input positions = (input,sym,imports,Pos linenr charnr positions) = FindFromIdent (sym.string :! imports) input positions = (input,sym, imports,positions); - - FindFromIdent :: !(List String) !(Input a) IdentifierPositionList -> (!Input a, !Symbol, !List String, IdentifierPositionList) | ScanInput a; - FindFromIdent imports input positions - # (input,sym,_,_) = ScanInput input; - | sym.repr == ImportSymID - # (input,sym,_,positions) = FindImport Nil input positions - = (input,sym,imports,positions) - = (input, sym, imports,positions); + where + FindFromIdent :: !(List String) !(Input a) IdentifierPositionList -> (!Input a, !Symbol, !List String, IdentifierPositionList) | ScanInput a; + FindFromIdent imports input positions + # (input,sym,_,_) = ScanInput input; + | sym.repr == ImportSymID + # (input,sym,positions) = FindImport input positions + = (input,sym,imports,positions) + = (input, sym, imports,positions); + + FindImport :: !(Input a) IdentifierPositionList -> (!Input a, !Symbol, !IdentifierPositionList) | ScanInput a; + FindImport input positions + # (input,sym,linenr,charnr) = ScanInput input + | IdentSymId sym.repr + | sym.string == cleanid + # (input,sym,positions) = FindImportIdent input positions + = (input,sym,Pos linenr charnr positions) + = FindImportIdent input positions + = (input,sym,positions); + where + FindImportIdent :: !(Input a) IdentifierPositionList -> (!Input a, !Symbol,IdentifierPositionList) | ScanInput a; + FindImportIdent input positions + # (input,sym,_,_) = ScanInput input + | sym.repr == CommaSymID + = FindImportIdentComma input positions + = (input,sym, positions); + + FindImportIdentComma :: !(Input a) IdentifierPositionList -> (!Input a, !Symbol, IdentifierPositionList) | ScanInput a; + FindImportIdentComma input positions + # (input,sym,linenr,charnr) = ScanInput input + | IdentSymId sym.repr + | sym.string == cleanid + # (input,sym,positions) = FindImportIdent input positions + = (input,sym,Pos linenr charnr positions) + = FindImportIdent input positions + = (input,sym, positions) FindImport :: !(List String) !(Input a) IdentifierPositionList -> (!Input a, !Symbol, !List String, !IdentifierPositionList) | ScanInput a; FindImport imports input positions @@ -340,23 +367,23 @@ where = (input,sym,imports,Pos linenr charnr positions) = FindImportIdent (sym.string :! imports) input positions = (input,sym,imports,positions); - - FindImportIdent :: !(List String) !(Input a) IdentifierPositionList -> (!Input a, !Symbol, !List String,IdentifierPositionList) | ScanInput a; - FindImportIdent imports input positions - # (input,sym,_,_) = ScanInput input - | sym.repr == CommaSymID - = FindImportIdentComma imports input positions - = (input,sym, imports,positions); - - FindImportIdentComma :: !(List String) !(Input a) IdentifierPositionList -> (!Input a, !Symbol, !List String,IdentifierPositionList) | ScanInput a; - FindImportIdentComma imports input positions - # (input,sym,linenr,charnr) = scan_module_symbol_from_input input - | IdentSymId sym.repr - | sym.string == cleanid - # (input,sym,imports,positions) = FindImportIdent (sym.string :! imports) input positions - = (input,sym,imports,Pos linenr charnr positions) - = FindImportIdent (sym.string :! imports) input positions - = (input,sym, imports, positions) + where + FindImportIdent :: !(List String) !(Input a) IdentifierPositionList -> (!Input a, !Symbol, !List String,IdentifierPositionList) | ScanInput a; + FindImportIdent imports input positions + # (input,sym,_,_) = ScanInput input + | sym.repr == CommaSymID + = FindImportIdentComma imports input positions + = (input,sym, imports,positions); + + FindImportIdentComma :: !(List String) !(Input a) IdentifierPositionList -> (!Input a, !Symbol, !List String,IdentifierPositionList) | ScanInput a; + FindImportIdentComma imports input positions + # (input,sym,linenr,charnr) = scan_module_symbol_from_input input + | IdentSymId sym.repr + | sym.string == cleanid + # (input,sym,imports,positions) = FindImportIdent (sym.string :! imports) input positions + = (input,sym,imports,Pos linenr charnr positions) + = FindImportIdent (sym.string :! imports) input positions + = (input,sym, imports, positions) FindDefinitionInInput :: !Bool !String !(List String) !(Input a) -> (!Input a, !List String,!IdentifierPositionList) | ScanInput a; FindDefinitionInInput imp cleanid imports input @@ -792,7 +819,7 @@ find_module_symbol :: !Int !Int !String -> (!Bool,!Int,!Symbol); find_module_symbol curpos curlen line | curpos >= curlen = (False, curpos, ErrorSym); - | UpperCase line.[curpos] + | UpperCase line.[curpos] || LowerCase line.[curpos] = find_module_ident curpos (curpos+1) curlen line; = FindSym curpos curlen line; where -- GitLab