文件名称:monkey-lang:目前正在扩展“在Go中编写解释器”和“在Go中编写编译器”一书中设计的Monkey编程语言。
文件大小:71KB
文件格式:ZIP
更新时间:2024-06-13 00:20:04
go golang parser compilers languages
猴子郎 目前扩展了用语言语言设计的Monkey编程语言。 我强烈建议拿起他的书的副本。 我将在某种程度上正式记录该语言及其功能,但是现在,我保留了在原始设计之上添加的其他功能的列表。 解释器和编译器均实现了所有其他功能(如果适用): 除交互式控制台外,还能够执行Monkey文件(.mo文件ext)。 现在,这是默认行为。 执行时添加--console标志,改为放入REPL中。 文件执行和控制台使用都响应--engine=标志,您可以在其中选择使用评估程序或VM。 逻辑运算符&&和|| 以//开头的单行注释 使用/* */多行注释 const变量声明(尽管它仅在这一点上模拟直到让我添加变量重新分配为止) 模运算符% Postfix运算符++和-- 比较运算符>=和<= 使用!=和==字符串比较 令牌/词法分析器/解析/评估器中的行号用于更好的错误。 标识符中带有问号的能
【文件预览】:
monkey-lang-master
----.gitignore(275B)
----main.go(2KB)
----README.md(3KB)
----lexer()
--------lexer.go(5KB)
--------lexer_test.go(5KB)
----evaluator()
--------builtins.go(523B)
--------evaluator_test.go(14KB)
--------evaluator.go(12KB)
----code()
--------code_test.go(2KB)
--------code.go(6KB)
----token()
--------token.go(2KB)
----repl()
--------repl.go(3KB)
----compiler()
--------compiler.go(12KB)
--------compiler_test.go(30KB)
--------symbol_table.go(3KB)
--------symbol_table_test.go(8KB)
----examples()
--------fibonacci.mo(177B)
--------program.mo(2KB)
----LICENSE(1KB)
----.goreleaser.yml(699B)
----parser()
--------parser.go(14KB)
--------parser_test.go(25KB)
----vm()
--------vm.go(16KB)
--------vm_test.go(16KB)
--------frame.go(2KB)
----.travis.yml(164B)
----ast()
--------ast.go(1KB)
--------infix_expression.go(1KB)
--------expression_statement.go(729B)
--------return_statement.go(816B)
--------index_expression.go(923B)
--------prefix_expression.go(964B)
--------hash_literal.go(860B)
--------boolean.go(522B)
--------ast_test.go(13KB)
--------array_literal.go(870B)
--------integer_literal.go(573B)
--------string_literal.go(581B)
--------call_expression.go(1KB)
--------identifier.go(587B)
--------block_statement.go(696B)
--------function_literal.go(1KB)
--------if_expression.go(1KB)
--------postfix_expression.go(831B)
--------const_statement.go(903B)
--------let_statement.go(887B)
----Makefile(349B)
----object()
--------object_test.go(16KB)
--------function.go(886B)
--------closure.go(520B)
--------object.go(688B)
--------integer.go(366B)
--------null.go(275B)
--------boolean.go(376B)
--------return_value.go(370B)
--------error.go(306B)
--------environment.go(1KB)
--------compiled_function.go(908B)
--------builtin.go(5KB)
--------string.go(314B)
--------array.go(612B)
--------hash.go(2KB)
----cmd()
--------benchmark()