예제 #1
0
        public virtual CommandDeclareVariable DefineLocalVariable(ILanguageType symbolType)
        {
            var localVar = SymbolLocalVariable.Create(symbolType, ChildCommandBlockScope);

            var command = new CommandDeclareVariable(ChildCommandBlockScope, localVar);

            CommandsList.Add(command);

            return(command);
        }
예제 #2
0
        public bool LookupLocalVariable(string symbolName, out SymbolLocalVariable localVar)
        {
            LanguageSymbol symbol;

            if (ChildCommandBlockScope.LookupSymbol(symbolName, RootAst.LocalVariableRoleName, out symbol))
            {
                localVar = (SymbolLocalVariable)symbol;
                return(true);
            }

            localVar = null;
            return(false);
        }
예제 #3
0
        /// <summary>
        /// Removes the definition of a local variable from this command block
        /// </summary>
        /// <param name="localVar"></param>
        /// <returns></returns>
        public bool UndefineLocalVariable(SymbolLocalVariable localVar)
        {
            var declareCommand =
                DeclareVariableCommands.FirstOrDefault(
                    command => command.DataStore.ObjectName == localVar.ObjectName
                    );

            if (ReferenceEquals(declareCommand, null) == false)
            {
                RemoveCommand(declareCommand);
            }

            return(ChildScope.RemoveLocalVariable(localVar));
        }
예제 #4
0
 internal static AstLocalVariable ToAstLocalVariable(this SymbolLocalVariable variable)
 {
     return(new AstLocalVariable(variable));
 }
예제 #5
0
 /// <summary>
 /// Remove a local variable from this scope
 /// </summary>
 /// <param name="symbol"></param>
 /// <returns></returns>
 internal bool RemoveLocalVariable(SymbolLocalVariable symbol)
 {
     return(_symbols.Remove(symbol.ObjectName));
 }
예제 #6
0
 internal AstLocalVariable(SymbolLocalVariable parameter)
 {
     AssociatedVariable = parameter;
 }