/** opens a scope in the current scope */ public Scope openScope(String scopeName, bool isTypeScope) { if (m_currentScope.containsChildScope(scopeName)) { m_currentScope = m_currentScope.getChildScope(scopeName); } else { Scope newScope = new Scope(scopeName, m_currentScope, isTypeScope); m_currentScope = newScope; } return(m_currentScope); }
private Scope getChildScopeInPragmaScope(String scopeName) { Scope result = null; IEnumerator enumerator = getChildScopeEnumeration(); while ((enumerator.MoveNext()) && (result == null)) { Scope thisScope = (Scope)enumerator.Current; if (thisScope is PragmaScope) { result = thisScope.getChildScope(scopeName); } } return(result); }
/// <summary>search starting from serachScope for a scope with name scopeNameParts private Scope ResolveScopedNameToScopeFromScope(Scope searchScope, IList parts) { if ((parts == null) || (parts.Count == 0)) { return(null); } Scope currentScope = searchScope; for (int i = 0; i < parts.Count; i++) { // resolve scopes currentScope = currentScope.getChildScope((String)parts[i]); if (currentScope == null) { return(null); // not found within this searchScope } } return(currentScope); }
/// <summary> /// resolve a scoped name to a symbol starting in searchScope /// </summary> private Symbol ResolveScopedNameToSymbolFromScope(Scope searchScope, IList parts) { if ((parts == null) || (parts.Count == 0)) { return(null); } Scope currentScope = searchScope; for (int i = 0; i < parts.Count - 1; i++) { // resolve scopes currentScope = currentScope.getChildScope((String)parts[i]); if (currentScope == null) { return(null); // not found within this searchScope } } // resolve symbol Symbol sym = currentScope.getSymbol((String)parts[parts.Count - 1]); return(sym); }