Skip to content

A C++ version monkey language interpreter. From Write An Interpreter In Go

License

Notifications You must be signed in to change notification settings

zhuzilin/monkey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

monkey

A C++ version monkey language interpreter. From Write An Interpreter In Go. With additional mark-and-sweep garbage collection.

Usage

You can use the vscode config to build and run the interpreter. Or

> g++ -std=c++11 main.cpp src/*.cpp -o monkey --debug
> ./monkey test.mk
hello world!
minimal prime factor for 1321231 is 487 

return: 
type:  NULL
value: NULL

The test.mk is function to get minimal prime factor.

print("hello world!");

let a = 1321231;

// find mininum factor that is greater than 1
let minFactor = fn (a) {
	let i = 2;
	while(true) {
		if (a % i == 0) { 
			return i;
		}
		let i = i + 1;
	}
}

let f = minFactor(a);

if (f == a) {
	print(a, "is a prime!");
} else {
	print("minimal prime factor for", a, "is", f);
}

And repl.cpp is the REPL(Read-Eval-Print Loop) main function, to only use parser or lexer, you can change to rppl.cpp or rlpl.cpp.

TODOs

  • Add garbage collection.
  • Add array support.
  • Add buildin functions.
  • Add dictionary support.
  • Add error handling for lexer.

About

A C++ version monkey language interpreter. From Write An Interpreter In Go

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published