コード例 #1
0
        private Statement ProcessVariableDeclarationStatement(VariableDeclarationNode node)
        {
            VariableDeclarationStatement statement = new VariableDeclarationStatement();
            TypeSymbol variableType = _symbolSet.ResolveType(node.Type, _symbolTable, _memberContext);

            foreach (VariableInitializerNode initializerNode in node.Initializers) {
                string name = initializerNode.Name.Name;

                VariableSymbol symbol = new VariableSymbol(name, _memberContext, variableType);
                if (initializerNode.Value != null) {
                    Expression value = _expressionBuilder.BuildExpression(initializerNode.Value);
                    if (value is MemberExpression) {
                        value = _expressionBuilder.TransformMemberExpression((MemberExpression)value);
                    }
                    symbol.SetValue(value);
                }

                _symbolTable.AddSymbol(symbol);

                statement.AddVariable(symbol);
            }
            return statement;
        }
コード例 #2
0
        private static void GenerateVariableDeclarationStatement(ScriptGenerator generator, MemberSymbol symbol, VariableDeclarationStatement statement)
        {
            ScriptTextWriter writer = generator.Writer;

            GenerateVariableDeclarations(generator, symbol, statement);
            writer.Write(";");
            writer.WriteNewLine();
        }
コード例 #3
0
ファイル: ForStatement.cs プロジェクト: mobilligy/scriptsharp
 public void AddInitializer(VariableDeclarationStatement variables)
 {
     Debug.Assert(_initializers == null);
     Debug.Assert(_variables == null);
     _variables = variables;
 }
コード例 #4
0
        private static void GenerateVariableDeclarations(ScriptGenerator generator, MemberSymbol symbol, VariableDeclarationStatement statement)
        {
            ScriptTextWriter writer = generator.Writer;

            bool firstVariable = true;

            writer.Write("var ");
            foreach (VariableSymbol variableSymbol in statement.Variables) {
                if (firstVariable == false) {
                    writer.WriteTrimmed(", ");
                }

                writer.Write(variableSymbol.GeneratedName);

                if (variableSymbol.Value != null) {
                    writer.WriteTrimmed(" = ");
                    ExpressionGenerator.GenerateExpression(generator, symbol, variableSymbol.Value);
                }

                firstVariable = false;
            }
        }