Top 1K Features Creators Events Podcasts Books Extensions Interviews Blog Explorer CSV

Monkey

< >

Monkey is a programming language created in 2011 by Anthony Diamond.

#620on PLDB 13Years Old 254Repos
Download source code:
git clone https://github.com/Regal-Internet-Brothers/webcc-monkey
Homepage · Source Code · Wikipedia · Docs

Monkey X is a high-level programming language designed for video game development for many different platforms, including desktop and laptop computers, mobile phones, tablets, and video game consoles. The language itself is an object-oriented dialect of BASIC, which the compiler translates into native source code for several target platforms. The resulting code is then compiled normally. Read more on Wikipedia...


Example from hello-world:
puts("Hello World")
Example from Linguist:
'Showcases use of Lambda functions and Generics. #Import "<std>" Using std.. Function Main() Local testStack := New Stack< MyObject > For Local n := 1 To 20 Local newItem := New MyObject newItem.depth = Rnd( 0, 100 ) testStack.Push( newItem ) Next testStack.Sort( Lambda:Int( x:MyObject,y:MyObject ) Return x.depth<=>y.depth End ) For Local n := Eachin testStack Print( n.depth ) Next End Struct MyObject Field depth := 0 End
Example from Wikipedia:
' The 'Player' class, as referenced previously (Placement does not matter): Class Player ' Declare all of our fields (Class-local variables): ' These two variables will act as our position on the screen. ' (Alternatively, an 'Array or third-party class could be used) Field x:Float, y:Float ' This will be a reference to an 'Image' object we'll specify. Field image:Image ' Constructor(s): ' Overloading 'New' mainly works the same way as constructors in other languages. ' Returning is generally not recommended for constructors. Method New(img:Image, x:Float=100, y:Float=100) ' Due to the arguments using the same names, 'Self' ' is required to resolve our fields' names: Self.image = img Self.x = x Self.y = y End ' Methods: ' This will be our main render-method for this object: Method Draw:Void() ' Draw the 'image' object to the screen using our 'x' and 'y' fields. DrawImage(image, x, y) ' Returning in a 'Void' function is not required. (Some still recommend it) Return End End

Language features

Feature Supported Example Token
MultiLine Comments ✓
Binary Literals ✓ ' \%[10]+
Integers ✓ ' [0-9]+
Floats ✓ ' [0-9]+\.[0-9]*(?!\.)
Hexadecimals ✓ ' \$[0-9a-fA-Z]+
Strings ✓ "Hello world" "
Print() Debugging ✓ puts
Comments ✓ ' A comment
Line Comments ✓ ' A comment '
Semantic Indentation X

- Build the next great programming language · Add · Issues · About · Search · Keywords · Livestreams · Labs · Resources · Acknowledgements

Built with Scroll v154.3.0