gpt4 book ai didi

Dart Petitparser 处理 Lisp 代码

转载 作者:太空宇宙 更新时间:2023-11-03 18:59:50 26 4
gpt4 key购买 nike

我正在考虑在我的项目中使用 petitparser for Dart ( https://pub.dartlang.org/packages/petitparser )。我想用它来处理存储为字符串的 Lisp 代码。

例如,给定这样的数据:

(setq age 20)
(setq livesin "Mississippi")

还有一个包含如下 Lisp 表达式的 String:

'(and (< age 21) (string= livesin "Iowa"))'

我怎样才能得到结果?

其次,您认为这是一个好的方法,并且是对 petitparser 的正确使用吗?

请注意,我是 Lisp 新手。

最佳答案

您可以使用提供简单解析器和求值器的包含示例来执行此操作。以下 Dart 代码可以满足您的需求:

const data = '''
(define age 20)
(define livesin "Mississippi")
''';
const program = '(and (< age 21) (= livesin "Iowa"))';

void main() {
var environment = new NativeEnvironment().create();
evalString(lispParser, environment, data);
var result = evalString(lispParser, environment, program);
print("Result is $result");
}

请注意,我需要稍微更改您的数据定义和程序中的函数名称,以使其执行。但是,通过重新定义 example/lisp/src/native.dart 中的原语,应该很容易适应您的需求。

查看 test/lisp_test.dart 以获取有关如何解析代码、如何操纵环境以及如何评估代码的更多示例。

关于Dart Petitparser 处理 Lisp 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46925405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com