问题标签 [metalanguage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
140 浏览

c++ - 按位结构定义语言生成c++代码

在提出任何问题之前:我正在处理实际的硬件。

我正在寻找一种元语言,它允许我指定数据结构内容,其中字段具有不同的位长(这包括像 1、3 或 24 或 48 位长的字段),关于字节序,并会生成 C++ 代码访问数据。

这个问题因为太模糊而被搁置,所以我会尽量说清楚:

我正在寻找一种语言:

  • 接受简单的结构描述并生成有用的 C++ 代码,
  • 将允许精确指定从 1 位到多个(最多 8 个)字节长的整数以及数据(通常是字符串),
  • 将使我不再需要转换字节顺序,
  • 产生准确的、可预测的输出,不会带来开销(如在协议缓冲区中)

ASN.1 听起来几乎可以达到目的,但它增加了自己的开销(意思是,我不能生成一个简单的结构,将 2 个字节分成 4 个半字节)——我正在寻找的是一种能够提供精确表示的语言结构。

例如,我想抽象一下:

以上需要精确打包到携带8 + record_count * 11字节的结构中,全部准确形成,没有额外的数据,没有额外的位或字节集。

以上只是一个例子。它变得简单,这样我就不会用通常有数百个字段的实际结构阻塞站点。它已被简化,但显示了许多我期待看到的特性(剩下的两个特性是 48 或 64 位整数和纯数据 (bytes[]))

如果这个问题仍然太模糊,请解释我应该在评论中添加什么。谢谢!

0 投票
2 回答
2362 浏览

javascript - 以编程方式将同步代码转换为异步代码

我正在为要在浏览器中运行的元语言编写解析器。元语言是阻塞的,但由于javascript的限制,需要在解释器中转换为非阻塞。

例如,元语言代码可能看起来像

在javascript中实现的功能为

如果没有这些goto语句,这将很容易编译为 javascript 然后eval. 但是,我不知道如何实现gotos. 任何帮助表示赞赏。

0 投票
1 回答
54 浏览

python - Mako:def 合成(在渲染时)没有正确评估

在了解 Mako(Python 模板引擎)的过程中,我开始使用 defs 构造。

我尝试做的一件事是从 def 调用中生成一个通用的“if”语句(比如 JavaScript 语句)。正文如下:

输出不是预期的if(3 == 3),而是3 == 3if(),就像if_statement' 的参数在 def 的任何其他内容之前被评估并呈现在前面一样。

这是预期的行为吗?如果是,为什么?另外,我怎样才能实现我想要做的事情?

0 投票
0 回答
609 浏览

ios - 通过 SceneKit 中的 Metal 实现剪影轮廓着色器修改器

着色器修改器有多个入口点。在此之后:http ://wiki.unity3d.com/index.php?title=Silhouette-Outlined_Diffuse我应该有两个入口点,一个在顶点着色器 ( SCNShaderModifierEntryPointSurface) 和片段着色器 ( SCNShaderModifierEntryPointFragment) 之后。这些是正确的切入点吗?

另外,如果有人对编写金属着色器代码有任何提示,那将不胜感激。关于如何从 glsl 着色器翻译它的一些一般说明会很棒。老实说,我以前从未遇到过阅读代码的问题,但这些东西对我来说就像日语一样。

0 投票
0 回答
134 浏览

function - 标准元语言: hd 和 tl 是先评估右还是左?

在标准元语言中,如果我的函数包含对hdandtl函数的多次连续调用,它们是从右到左执行还是从左到右执行?

例子:

这个函数会返回等价的tl ( hd s)orhd (tl s)吗?

0 投票
1 回答
445 浏览

racket - Racket 中的模块元语言

我正在尝试在 Racket 中编写一个模块 meta-language mylang,它接受将修改后的主体传递给的第二种语言,例如:

相当于:

当然,该typed/racket部分可以用任何其他模块语言替换。

我尝试了一个简单的版本,它使身体保持不变。它在命令行上运行良好,但在 DrRacket 中运行时出现以下错误:

这是整个代码:


要求(即我宁愿避免的解决方案):

  • (require (only-in typed/racket))在模块内部添加一个mylang可以使这项工作,但我对一个通用的解决方案感兴趣,mylang根本不需要知道typed/racket(即如果有人添加了一种新语言foo,那么mylang应该开箱即用)。
  • 此外,我对声明子模块并立即require重新声明子模块的技巧不感兴趣provide就像这里所做的那样,因为这会改变到实际模块的路径(例如,因此会main失去test它们的特殊行为)。

    它在编译时也更慢,因为子模块被访问和/或实例化的次数更多(这可以通过编写来看到,并且对大型程序(begin-for-syntax (displayln 'here))有明显的影响。typed/racket

  • 如果 DrRacket 中的箭头适用于委托语言提供的内置功能,例如在上面的示例中具有来自和to的箭头ann,则可以加分。+Numbertyped/racket/base

0 投票
1 回答
188 浏览

macos - OSX - 将 GLSL 'InOut' 转换为 Metal

我正在尝试转换以下GLSL函数:

用在Metal

然后使用它:

我得到了一个错误:

非连续引用不能绑定到向量元素

  1. 如何解决这个问题?
  2. InOutin的等效限定词是Metal什么?
0 投票
0 回答
1005 浏览

ios - XCode8 Swift 2.2 中的 MTLPixelFormatInvalid

我创建了一个简单的金属代码来显示一些 3D 对象。现在代码在我的 mac 中运行良好。

当我将它转移到另一台安装了相同 xcode 8 的相同 Mac 机器上时,它给了我以下错误

并且在以下区域中指示错误:

他最后一行我收到了这个错误。有人可以帮忙吗?

0 投票
1 回答
848 浏览

metal - 片段功能似乎正确编写,但金属抱怨

TL;DR:Metal 似乎没有检测到我的顶点着色器返回的内容

我有这两个用 MSL 编写的函数:

当我尝试使用这些创建渲染管道状态时,使用以下代码:

创建管道状态时出错:

致命错误:“试试!” 表达式意外引发错误:Error Domain=CompilerError Code=1“链接失败:在顶点着色器输出中未 找到片段输入 vPos ” [...]

我检查并重新检查了代码,无法理解出了什么问题。

有任何想法吗?谢谢!

0 投票
1 回答
76 浏览

compiler-construction - 有完整的元语言吗?

只是问了一个相当简单的问题,但我在谷歌的搜索是......不成功。我现在正在寻找一种完整的编程元语言。简而言之,是否存在可以表达所有其他编程语言(java、c、其他任何东西)的这种语言?包括可以在任何其他语言中找到的所有词汇和所有概念。比如类、函数、方法、线程等。

提前致谢 !