问题标签 [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.
c++ - 按位结构定义语言生成c++代码
在提出任何问题之前:我正在处理实际的硬件。
我正在寻找一种元语言,它允许我指定数据结构内容,其中字段具有不同的位长(这包括像 1、3 或 24 或 48 位长的字段),关于字节序,并会生成 C++ 代码访问数据。
这个问题因为太模糊而被搁置,所以我会尽量说清楚:
我正在寻找一种语言:
- 接受简单的结构描述并生成有用的 C++ 代码,
- 将允许精确指定从 1 位到多个(最多 8 个)字节长的整数以及数据(通常是字符串),
- 将使我不再需要转换字节顺序,
- 产生准确的、可预测的输出,不会带来开销(如在协议缓冲区中)
ASN.1 听起来几乎可以达到目的,但它增加了自己的开销(意思是,我不能生成一个简单的结构,将 2 个字节分成 4 个半字节)——我正在寻找的是一种能够提供精确表示的语言结构。
例如,我想抽象一下:
以上需要精确打包到携带8 + record_count * 11
字节的结构中,全部准确形成,没有额外的数据,没有额外的位或字节集。
以上只是一个例子。它变得简单,这样我就不会用通常有数百个字段的实际结构阻塞站点。它已被简化,但显示了许多我期待看到的特性(剩下的两个特性是 48 或 64 位整数和纯数据 (bytes[]))
如果这个问题仍然太模糊,请解释我应该在评论中添加什么。谢谢!
javascript - 以编程方式将同步代码转换为异步代码
我正在为要在浏览器中运行的元语言编写解析器。元语言是阻塞的,但由于javascript的限制,需要在解释器中转换为非阻塞。
例如,元语言代码可能看起来像
在javascript中实现的功能为
如果没有这些goto
语句,这将很容易编译为 javascript 然后eval
. 但是,我不知道如何实现goto
s. 任何帮助表示赞赏。
python - Mako:def 合成(在渲染时)没有正确评估
在了解 Mako(Python 模板引擎)的过程中,我开始使用 defs 构造。
我尝试做的一件事是从 def 调用中生成一个通用的“if”语句(比如 JavaScript 语句)。正文如下:
输出不是预期的if(3 == 3)
,而是3 == 3if()
,就像if_statement
' 的参数在 def 的任何其他内容之前被评估并呈现在前面一样。
这是预期的行为吗?如果是,为什么?另外,我怎样才能实现我想要做的事情?
ios - 通过 SceneKit 中的 Metal 实现剪影轮廓着色器修改器
着色器修改器有多个入口点。在此之后:http ://wiki.unity3d.com/index.php?title=Silhouette-Outlined_Diffuse我应该有两个入口点,一个在顶点着色器 ( SCNShaderModifierEntryPointSurface
) 和片段着色器 ( SCNShaderModifierEntryPointFragment
) 之后。这些是正确的切入点吗?
另外,如果有人对编写金属着色器代码有任何提示,那将不胜感激。关于如何从 glsl 着色器翻译它的一些一般说明会很棒。老实说,我以前从未遇到过阅读代码的问题,但这些东西对我来说就像日语一样。
function - 标准元语言: hd 和 tl 是先评估右还是左?
在标准元语言中,如果我的函数包含对hd
andtl
函数的多次连续调用,它们是从右到左执行还是从左到右执行?
例子:
这个函数会返回等价的tl ( hd s)
orhd (tl s)
吗?
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
,则可以加分。+
Number
typed/racket/base
macos - OSX - 将 GLSL 'InOut' 转换为 Metal
我正在尝试转换以下GLSL
函数:
用在Metal
然后使用它:
我得到了一个错误:
非连续引用不能绑定到向量元素
- 如何解决这个问题?
InOut
in的等效限定词是Metal
什么?
ios - XCode8 Swift 2.2 中的 MTLPixelFormatInvalid
我创建了一个简单的金属代码来显示一些 3D 对象。现在代码在我的 mac 中运行良好。
当我将它转移到另一台安装了相同 xcode 8 的相同 Mac 机器上时,它给了我以下错误
并且在以下区域中指示错误:
他最后一行我收到了这个错误。有人可以帮忙吗?
metal - 片段功能似乎正确编写,但金属抱怨
TL;DR:Metal 似乎没有检测到我的顶点着色器返回的内容
我有这两个用 MSL 编写的函数:
当我尝试使用这些创建渲染管道状态时,使用以下代码:
创建管道状态时出错:
致命错误:“试试!” 表达式意外引发错误:Error Domain=CompilerError Code=1“链接失败:在顶点着色器输出中未 找到片段输入 vPos ” [...]
我检查并重新检查了代码,无法理解出了什么问题。
有任何想法吗?谢谢!
compiler-construction - 有完整的元语言吗?
只是问了一个相当简单的问题,但我在谷歌的搜索是......不成功。我现在正在寻找一种完整的编程元语言。简而言之,是否存在可以表达所有其他编程语言(java、c、其他任何东西)的这种语言?包括可以在任何其他语言中找到的所有词汇和所有概念。比如类、函数、方法、线程等。
提前致谢 !