问题标签 [camlp4]
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.
macos - 使 OPAM 在 MacOS X 下与系统编译器一起工作
我正在尝试在 MacOS 下进行非常基本的 OPAM 安装。使用 macports 我安装了以下软件包:
- 奥帕姆@1.2.0
- ocaml-findlib @1.5.5
- ocaml-camlp4 @4.02.0.1_1
当我这样做时opam init
(不是以root身份,因为我只需要一个用户)。
opam switch
显示我正在使用系统编译器:
system C system 系统编译器 (4.02.1)
然后我尝试通过 opam 安装“lwt”,它中途失败并出现错误:
这是我的opam list
:
我注意到它有自己的 ocamlfind,而不是系统一。也许这就是导致错误的原因:
我在通过 OPAM 安装 OCAML 编译器和 CAMLP 之前尝试过,在这种情况下它可以工作,但让我感到困扰的是我有两个相同版本的编译器安装。如果可能,我宁愿使用系统 OCAML 编译器和 CAMLP。
ocaml - 使用 Camlp4 解析一串通用量词和存在量词
我正在使用 Camlp4 解析一串量词,其中量化关键字和变量用逗号分隔。一个例子如下:
这里,exists
和forall
是关键字,x,y,z,a,b,h,k
是标识符。对应的记号是EXISTS
和。FORALL
IDENTIFIER of string
我的数据结构:
要解析上面的量词字符串,我的规则是:
但是,我的解析器总是抛出一个错误:
你知道如何解决这个问题吗?当它检测到关键字之后的元素时如何LIST1
停止抛出错误?`COMMA
非常感谢!
(有关更多信息,如果我使用空格分隔受相同量化关键字影响的变量,例如exists x y z, forall a b, exists h k
. 并删除规则SEP `COMMA
中的one_kind_quantifiers
,则解析器可以完美解析这个新字符串)。
============================
更新解决方案:
在 Igor (@ygrek) 的建议下,我可以通过不使用 LIST1 而是手动编写规则来解析字符串列表来编写预期的解析器。
请注意,解析字符串列表的规则是:
但不是:
编写规则的第二种方式与id_list
使用LIST1
. (所以我想这可能LIST1
是实现的方式......)
preprocessor - 使用 ocamlbuild 和 camlp5 编译
我正在尝试制作一个我正在使用 ocamlbuild 编译的项目,以避免使用常规的 Makefile,我发现它稍微复杂一些。
具体来说,我有一个语法扩展文件(extend.ml),我需要先编译它。在常规的 Makefile 中会有一条规则:
然后,为了计算依赖关系,会有这样的规则:
当然,任何目标文件的创建都需要与上述类似的规则。
我的问题是,如何将这些规则/要求集成到一个 ocamlbuild 命令(如果可能)?
我尝试先编译extend.ml文件,然后使用以下命令:
但我认为它在任何方面都不是最佳的。
不幸的是,我不熟悉使用 ocamlbuild 作为编译工具,所以任何帮助将不胜感激。
ocaml - Camlp5(前Camlp4)如何解析表达式
据我在互联网上搜索可以弄清楚,看起来Camlp5(以前的Camlp4)使用递归下降解析器,而ocamlyacc
基于LALR的解析器生成器。
在 LALR 解析器生成器中,优先级和关联性被映射到移位/减少冲突。我的问题是像 Camlp5 这样的递归下降解析器如何处理声明性运算符优先级?
它如何处理左递归调用?camlp5 (camlp4) 是否使用表驱动的运算符优先级方法:https ://en.wikipedia.org/wiki/Operator-precedence_parser
非常感谢任何有关 Camlp4 解析器内部工作的见解或链接。
ocaml - 如何查看由 camlp4 生成的代码
我正在使用语法扩展,想知道是否可以以某种方式输出生成的代码。
我宁愿避免将调试跟踪放在扩展中,因为我不是开发人员,对camlp4一无所知。
ocaml - 使用 Camlp4 的 OCaml 重载数字文字
我正在编写一个带有一些组合实用程序的小脚本。当我需要类似0
或1
不同类型的数字文字时,我使用_0
and _1
,但这种解决方案并不理想。是否可以使用 Camlp4 重新解释给定上下文中的数字文字或添加具有专用后缀的新型数字文字?
ocaml - 未绑定模块Camlp4
我知道这个网站上有类似的问题,但没有一个有助于解决我的问题。
我是 OCaml 的新手,正在使用以下关于使用 Camlp4 的教程https://github.com/ocaml/camlp4/wiki/OCaml_code_generation_tutorial
但是我在第一行得到一个错误:
open Camlp4.PreCast
说“Unbound module Camlp4”
我在其中下载了 OCaml 有一个 camlp4.exe 文件,所以我认为它已安装。我在 Windows 8 和 Xubuntu 上都试过了
这是我传递给命令行以编译文件的输入:
ocamlc -o test.exe test.ml
其中 test.ml 是包含错误行的文件
ocaml - How to compile using Camlp4?
I am testing out quotations in Camlp4. My tester.ml program is as follows:
I have tried compiling this in various ways, eg.
however the executable produced doesn't print out "done" as expected. How should I compile this file?
ocaml - 使兼容ocaml、camlp4、ppx、node、js_of_ocaml、ocamlbuild
安装npm
and后node
,编译 OCaml 文件时js_of_ocaml
出现错误,因此我这样做了opam switch reinstall system
:
然后,我意识到ocamlfind
不再工作了:
PS:node --version
给v6.1.0
;npm --version
给3.8.6
; ocaml -version
给The OCaml toplevel, version 4.03.0
.
js_of_ocaml --version
是2.7
,但在之后opam swtich reinstall system
,它给了-bash: /Users/softtimur/.opam/system/bin/js_of_ocaml: No such file or directory
。
有谁知道如何使所有这些软件包兼容?
早些时候:这是安装npm
and之后node
和之前的编译错误opam switch reinstall system
:
另一种方式也报错:
最初:
我最初的目标是编写和编译cubes.ml
这样 1)它包装一个 OCaml 函数来制作一个可以在 Web 中调用的 JS 函数;2)OCaml函数和字节码可以在Linux下用命令行测试。
cubes.ml
如下:
然后,ocamlfind ocamlc -package js_of_ocaml.ppx -linkpkg cubes.ml -o T
应该生成T
这样./T
应该返回hello
的。并且js_of_ocaml T -o cubes.js
应该生成cubes.js
这样的函数jsOneArgument
可以cubes.js
很好地被其他JS或HTML文件调用。
在我弄乱包裹之前,./T
返回Unimplemented Javascript primitive caml_pure_js_expr!
,这就是我安装的原因npm
,node
等等......