1

在重新阅读关闭/打开主题列表后,我仍然不确定这个问题是否最好发布到这个网站,所以提前道歉,如果不是。

概述:


我正在研究一个混合多种编程语言的项目,我们正在尝试确定用于特别调用一种语言的命令的重要考虑因素。

为了明确起见,我将列出具体的语言;但是,我认为这些原则应该是通用的,因此熟悉这些特定的语言并不是很重要。

具体上下文


具体来说,我们正在使用:Maxima、KaTeX、Markdown 和 HTML)。在构建原型时,我们使用了以下(我相信是标准的)约定:

  • KaTeX 由$ $或分隔$$ $$
  • < > </ >成对分隔的 HTML ;
  • Markdown 可以在身体的任何地方工作,除了在 KaTeX 或 Maxima 环境中;

我们在这个设计阶段使用的唯一非标准约定是使用\comp{<Maxima commands>}. 此命令适用于所有其他环境(这是所需的)。

现在我们已经准备好开始使用该平台,很明显这个调用 Maxima 的临时命令对我们的用户来说很麻烦。绝大多数用例只涉及调用单个变量或函数,例如

因此,我们有 $\eval{function-name()}(\eval{variable-name})$

而不是实际使用 Maxima 进行计算,例如

在这里,很明显 $\eval{a} + \eval{b} = \eval{a+b}$

(其中\eval{a+b}将返回由 Maxima 计算的实际总和)。

因此,我们的用户更喜欢使用无定界符的命令选项来调用单个变量或函数,例如 \@<variable-name-in-Maxima>\@<function-name>(<argument>)(其中@一些保留字符未在其他语言中使用),同时也有一个定界替代选项(频率要低得多)他们实际上想要使用 Maxima 进行计算的情况;也许像\@{a+b}.

但是,我们普遍认为这不是最佳实践,即使我们无法预见任何具体问题

“研究”/比较:


实际上,对于单个参数x^2(在任何计算器上)或a \over bTeX 中的 Knuth (在 LaTeX 中持续存在\frac12并被解析为\frac{1}{2}.

IIRC Knuth 的观点是,这种无定界符号更具语义性(因此,在他看来,更可取),并且由于可以添加定界符,因此可以在需要时避免歧义:例如 x^{22}{a+b}\over{c+d}\frac{12}{3}

正确的问题:


任何人都可以指出或解释与双重解决方案相关的实际缺点/风险,例如:

  • \@<var>,\@<function>(<arg>)和,
  • \@[<extended expression>],

@保留(和可转义)字符在哪里),用于调用一种语言,而不是仅使用分隔命令?

关于如何实现上述解决方案启用的易用性和更多语义代码的任何替代建议,同时保持代码明确,将非常受欢迎和赞赏。

4

0 回答 0