Example #1
0
        internal static bool TryParse(Node parent, Queue <Word> remainingWords, out VariableAssignment assignment)
        {
            assignment = null;
            if (!remainingWords.Peek().Text.StartsWith("$"))
            {
                return(false);
            }
            var word = remainingWords.Dequeue();

            assignment = new VariableAssignment(parent)
            {
                Name = word.Text, SourceLine = word.Line
            };
            // remove ':'
            remainingWords.Dequeue();
            Expression expression;

            if (!Expression.TryParse(assignment, remainingWords, out expression))
            {
                return(false);
            }
            // remove ';'
            remainingWords.Dequeue();
            assignment.Expression = expression;
            return(true);
        }
Example #2
0
        internal static bool TryParse(Node parent, Queue <Word> remainingWords, out Script script)
        {
            script = new Script(parent);

            do
            {
                MixinDefinition mixinDefinition;
                if (MixinDefinition.TryParse(script, remainingWords, out mixinDefinition))
                {
                    script.Children.Add(mixinDefinition);
                    continue;
                }

                VariableAssignment variableAssignment;
                if (VariableAssignment.TryParse(script, remainingWords, out variableAssignment))
                {
                    script.Children.Add(variableAssignment);
                    continue;
                }

                Selector selector;
                if (Selector.TryParse(script, remainingWords, out selector))
                {
                    script.Children.Add(selector);
                    continue;
                }
            }while (remainingWords.Count > 0);

            return(true);
        }
Example #3
0
        public override Node Clone(Node newParent)
        {
            var newAssignment = new VariableAssignment(newParent)
            {
                Name = Name, SourceLine = SourceLine
            };

            newAssignment.Expression = (Expression)Expression.Clone(newAssignment.Expression);
            return(newAssignment);
        }
Example #4
0
 internal static bool TryParse(Node parent, Queue<Word> remainingWords, out VariableAssignment assignment)
 {
     assignment = null;
     if (!remainingWords.Peek().Text.StartsWith("$"))
     {
         return false;
     }
     var word = remainingWords.Dequeue();
     assignment = new VariableAssignment(parent) { Name = word.Text, SourceLine = word.Line };
     // remove ':'
     remainingWords.Dequeue();
     Expression expression;
     if (!Expression.TryParse(assignment, remainingWords, out expression))
     {
         return false;
     }
     // remove ';'
     remainingWords.Dequeue();
     assignment.Expression = expression;
     return true;
 }
Example #5
0
 public override Node Clone(Node newParent)
 {
     var newAssignment = new VariableAssignment(newParent) { Name = Name, SourceLine = SourceLine };
     newAssignment.Expression = (Expression)Expression.Clone(newAssignment.Expression);
     return newAssignment;
 }