Пример #1
0
        public override void Visit(MultiplicationNode node)
        {
            node.LeftSide.Accept(this);

            foreach (var pair in node.RightSides)
            {
                pair.Item2.Accept(this);

                this.BinaryOperation(() =>
                {
                    switch (pair.Item1)
                    {
                    case Tokenizer.TokenKind.ASTERISK:
                        this.Add("   imul rax, rdi");
                        break;

                    case Tokenizer.TokenKind.SLASH:
                        this.Add("   cqo");
                        this.Add("   idiv rdi");
                        break;
                    }
                });
            }
        }
Пример #2
0
 public abstract void Visit(MultiplicationNode node);