【问题标题】:Sending commands to a device, name for idiom?向设备发送命令,成语的名称?
【发布时间】:2017-03-19 11:24:11
【问题描述】:

有时一个设备有命令要发送到另一个设备。在简单的情况下,我经常使用数字和字母的字符串,例如

"123X456YG"

有含义

 set the value of parameter X to 123, 456 to Y, and then Go.

解释算法非常简单:逐个字符处理,“推动”数字构建一个数字(n = 10*n + ch-'0'),当它是一个字母时执行操作(并重置数字)。

在没有太多不同动作的情况下非常方便(并且你可以记住字母),当然你可以使用SCPI处理更复杂的事情。

这种(相当明显的)方式有名称吗?

【问题讨论】:

  • 也许我应该写一个专利申请。

标签: arduino communication interpreter


【解决方案1】:

这是一个后缀符号的例子。这是一个很自然地从任何使用堆栈的东西中消失的符号。

示例包括:

逆波兰表示法——从 1960 年代后期开始,在可编程计算器上很常见。

...其中4 3 - 5 + 导致6 留在堆栈的头部,因为堆栈是这样构建的:

 Stack     Unconsumed input
1 [      ]  4 3 - 5 +
2 [ 4    ]  3 - 5 +
3 [ 4 3  ]  - 5 +
4 [ 1    ]  5 +
5 [ 1 5  ]  +
6 [ 6    ]

在第 4 步和第 6 步中,通过从堆栈中弹出元素,然后将结果压入堆栈来执行运算符。

许多基于堆栈的编程语言——包括ForthPostscript。后缀语法在esoteric programming languages 的世界中也相当普遍。

如果您很好奇,我强烈建议您尝试手写 Postscript。它是一种成熟的编程语言;例如,您可以在几个字节内编写一个递归 Postscript 程序来绘制分形曲线。在 Ghostscript 中测试它。 PDF 与 Postscript 密切相关。

您创建的语言在标记化方法上与这些语言不同,但其核心 - 将操作数放在运算符之前 - 它是一种后缀语言。

您不太可能获得专利授权。 :)

【讨论】:

  • 嗯,它并不是真正基于堆栈的,因为深度严格限制为 1。
  • 更准确地说:我看到几个程序使用相同的技巧,所以我想知道它是否有一个通用名称,所以我可以在论文中参考它。我熟悉基于堆栈的语言(编写解释器),但不熟悉微型计算机编程领域的流行技术。
猜你喜欢
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多