PageRenderTime 40ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/IronBrainFuck/Parser/BrainAction.cs

http://ironbrainfuck.codeplex.com
C# | 57 lines | 30 code | 5 blank | 22 comment | 2 complexity | b8c8aea5672a2ddbdee262969d2a3a19 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ZackFlame.IronBrainFuck.Parser
  6. {
  7. /// <summary>
  8. /// Описывает одну или несколько одинаковых команд в BrainFuck программе.
  9. /// </summary>
  10. public struct BrainAction
  11. {
  12. /// <summary>
  13. /// Тип команды в BrainFuck программе.
  14. /// </summary>
  15. public BrainOperation Operation;
  16. /// <summary>
  17. /// Количество одинаковых команд.
  18. /// </summary>
  19. public uint Count;
  20. /// <summary>
  21. /// Инициализирует команду с полем Count = 1.
  22. /// </summary>
  23. /// <param name="operation">Тип команды в BrainFuck программе.</param>
  24. public BrainAction(BrainOperation operation)
  25. : this(operation, 1)
  26. {
  27. }
  28. /// <summary>
  29. /// Инициализирует команду с заданным количеством в поле Count.
  30. /// При value большим, чем 1, значение operation должно быть равным
  31. /// BrainOperation.(Add|Sub|Right|Left|Zero).
  32. /// </summary>
  33. /// <param name="operation">Тип команд в BrainFuck программе.</param>
  34. /// <param name="value">
  35. /// Количество последовательно следующих друг за другом команд в программе.
  36. /// </param>
  37. public BrainAction(BrainOperation operation, uint value)
  38. {
  39. if (value > 1 && BrainParser.SingleOperations.Contains(operation))
  40. {
  41. throw new ArgumentException(
  42. string.Format(
  43. "При operation == {0} значение {1} недопустимо для value.",
  44. typeof(BrainOperation).Name + "." + operation.ToString(),
  45. value),
  46. "value");
  47. }
  48. Operation = operation;
  49. Count = value;
  50. }
  51. }
  52. }