Ejemplo n.º 1
0
        // <logo-move-command> ::= MOVETO <integer> , <integer>
        private BaseLogoCommand ParseLogoMoveToCommand()
        {
            Match(Token.MOVETO);
            Match(Token.NUMBER);
            var numberXRecord = new NumberRecord(Token.MOVETO, scanner.ScanBuffer);

            Match(Token.COMMA);
            Match(Token.NUMBER);
            var numberYRecord = new NumberRecord(Token.MOVETO, scanner.ScanBuffer);

            return(new LogoPositionCommand(numberXRecord, numberYRecord));
        }
Ejemplo n.º 2
0
        // <logo-repeat-command> ::= REPEAT <integer> [ <logo-sentence> { <logo-sentence> } ]
        private BaseLogoCommand ParseLogoRepeatCommand()
        {
            Match(Token.REPEAT);
            Match(Token.NUMBER);
            var repeatNumberRecord = new NumberRecord(Token.REPEAT, scanner.ScanBuffer);

            Match(Token.LBRACKET);
            var logoCommands = new Collection <BaseLogoCommand>();

            ParseLogoSentences(logoCommands);
            Match(Token.RBRACKET);
            return(new LogoRepeatCommand(repeatNumberRecord, logoCommands));
        }
Ejemplo n.º 3
0
        // <logo-direction-command> ::= FORWARD <integer>
        //														| BACK <integer>
        //														| LEFT <integer>
        //														| RIGHT <integer>
        private BaseLogoCommand ParseLogoDirectionCommand(Token nextToken)
        {
            BaseLogoCommand result;

            Match(nextToken);
            Match(Token.NUMBER);
            var numberRecord = new NumberRecord(nextToken, scanner.ScanBuffer);

            if (nextToken == Token.FORWARD || nextToken == Token.BACK)
            {
                result = new LogoMoveCommand(numberRecord);
            }
            else
            {
                result = new LogoTurnCommand(numberRecord);
            }
            return(result);
        }
Ejemplo n.º 4
0
 public LogoTurnCommand(NumberRecord numberRecord)
 {
     TurnAngle = numberRecord.Number;
 }
Ejemplo n.º 5
0
 public LogoMoveCommand(NumberRecord numberRecord)
 {
     Distance = numberRecord.Number;
 }
Ejemplo n.º 6
0
 public LogoRepeatCommand(NumberRecord repeatNumber, IEnumerable <BaseLogoCommand> logoCommands)
 {
     Repeat = repeatNumber.Number;
     commands.AddRange(logoCommands);
 }