首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用rakudo编译和执行用perl6子集编写的程序

用rakudo编译和执行用perl6子集编写的程序
EN

Stack Overflow用户
提问于 2016-01-06 13:37:17
回答 1查看 210关注 0票数 4

假设我想使用仅是子集 of Perl6的简单语言作为扩展/嵌入语言来“编写”我自己的Perl 6程序。例如,让这种语言只有:

  • 变量声明
  • 表达
  • 文字

使用Perl6语法,并且可能是非常有限的内置函数子集。

在此之外的任何内容都应导致编译错误,不应执行。

是否有可能为此使用Rakudo编译器,或者只能通过手工编写的解释器/编译器来完成?

让我澄清一下我的动机。

  1. 使用(子集)主机语言(在本例中为Perl 6)作为DSL--用主机语言编写脚本/应用程序的配置文件的DSL语言。 这可以用EVAL (perl6 'do(file)' equivalent)来完成,但是它根本不安全,因为EVAL无法控制它所能做的事情。
  2. 使用主机语言的子集作为用主机语言编写的应用程序的扩展/脚本语言。很像用Python编写混合器或用Lua编写WoW。我想在这种情况下需要一些API的应用程序核心吗?但究竟该如何做呢?

但是,为什么要使用主机语言进行配置/脚本呢?对于conf文件,我不喜欢使用像YAML或JSON这样的“外文”,因为:

  • 需要额外的代码/库将这些格式中的数据转换为本机Perl6内存数据结构,但是我们已经有了所有(语言和编译器)来表示conf的内容;
  • conf文件可以使用本地主机语言代码(即回调)和编译时检查;
  • 在我的情况下,conf文件的可移植性不是问题;

对于扩展/脚本:同样,我没有看到在Perl 6应用程序中使用Lua或Python的任何理由,但是,如果我已经有了Perl 6/Rakudo,我也不喜欢发明自己的扩展/脚本语言和用Perl 6编写解释器/编译器的想法。

EN

回答 1

Stack Overflow用户

发布于 2018-04-11 14:40:34

我知道这不是您想要的答案,但我真的认为大多数配置都可以通过JSON很好地处理。JSON在JavaScript社区之外被很好地接受。很多语言都使用它。事实上,JSON::Fast与Rakudo-Star (如 submodule所证明)一起出现。您可以使用这个一行将JSON文件转换为Perl 6数据结构(好的,包括use JSON::Fast):

代码语言:javascript
复制
use JSON::Fast;
my %json = from-json(slurp($filename));

而且,JSON是一个相当不错的数据结构。如果您需要简单的话,它可以很简单,但是您可以使用嵌套的散列和数组来进行非常复杂的配置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34634488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档