mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-11 14:18:42 +01:00
Add syntax example file
This commit is contained in:
158
example/syntax.wren
Normal file
158
example/syntax.wren
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
// This file provides examples of syntactic constructs in wren, which is mainly
|
||||||
|
// interesting for testing syntax highlighters.
|
||||||
|
|
||||||
|
// This is a comment.
|
||||||
|
/* This is /* a nested */ comment. */
|
||||||
|
|
||||||
|
// Class definition with a toplevel name.
|
||||||
|
class SyntaxExample {
|
||||||
|
// Constructor
|
||||||
|
new {
|
||||||
|
// toplevel name `IO`
|
||||||
|
IO.print("I am a constructor!")
|
||||||
|
// method calls
|
||||||
|
variables
|
||||||
|
fields()
|
||||||
|
// static method call
|
||||||
|
SyntaxExample.fields(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Constructor with arguments
|
||||||
|
new(a, b) {
|
||||||
|
print(a, b)
|
||||||
|
field = a
|
||||||
|
}
|
||||||
|
|
||||||
|
// Method without arguments
|
||||||
|
variables {
|
||||||
|
// Valid local variable names.
|
||||||
|
var hi
|
||||||
|
var camelCase
|
||||||
|
var PascalCase
|
||||||
|
var abc123
|
||||||
|
var ALL_CAPS
|
||||||
|
}
|
||||||
|
|
||||||
|
// Method with empty argument list
|
||||||
|
fields() {
|
||||||
|
// Fields
|
||||||
|
_under_score = 1
|
||||||
|
_field = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
// Static method with single argument
|
||||||
|
static fields(a) {
|
||||||
|
// Static field
|
||||||
|
__a = a
|
||||||
|
}
|
||||||
|
|
||||||
|
// setter
|
||||||
|
field=(value) { _field = value }
|
||||||
|
|
||||||
|
// Method with arguments
|
||||||
|
print(a, b) { IO.print(a + b) }
|
||||||
|
}
|
||||||
|
|
||||||
|
// `class`, `is`
|
||||||
|
class ReservedWords is SyntaxExample {
|
||||||
|
// `new`
|
||||||
|
new {
|
||||||
|
// `super`, `true`, `false`
|
||||||
|
super(true, false)
|
||||||
|
// `this`
|
||||||
|
this.foo
|
||||||
|
// `new`
|
||||||
|
new SyntaxExample
|
||||||
|
}
|
||||||
|
|
||||||
|
foo {
|
||||||
|
// `var`
|
||||||
|
var n = 27
|
||||||
|
// `while`, `if`, `else`
|
||||||
|
while (n != 1) if (n % 2 == 0) n = n / 2 else n = 3 * n + 1
|
||||||
|
|
||||||
|
// `for`, `in`
|
||||||
|
for (beatle in ["george", "john", "paul", "ringo"]) {
|
||||||
|
IO.print(beatle)
|
||||||
|
// `break`
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
// `return`, `null`
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
imports {
|
||||||
|
// `import`
|
||||||
|
import "hello"
|
||||||
|
// `import`, `for`
|
||||||
|
import "set" for Set
|
||||||
|
}
|
||||||
|
|
||||||
|
// `foreign`, `static`
|
||||||
|
foreign static bar
|
||||||
|
foreign baz(string)
|
||||||
|
// (Remove lines above to make this file compile)
|
||||||
|
}
|
||||||
|
|
||||||
|
class literals is SyntaxExample {
|
||||||
|
booleans { true || false }
|
||||||
|
numbers {
|
||||||
|
0
|
||||||
|
1234
|
||||||
|
-5678
|
||||||
|
3.14159
|
||||||
|
1.0
|
||||||
|
-12.34
|
||||||
|
0xdeadbeef
|
||||||
|
0x1234567890ABCDEF
|
||||||
|
}
|
||||||
|
strings {
|
||||||
|
"hi there"
|
||||||
|
// Escapes:
|
||||||
|
"\0" // The NUL byte: 0.
|
||||||
|
"\"" // A double quote character.
|
||||||
|
"\\" // A backslash.
|
||||||
|
"\a" // Alarm beep. (Who uses this?)
|
||||||
|
"\b" // Backspace.
|
||||||
|
"\f" // Formfeed.
|
||||||
|
"\n" // Newline.
|
||||||
|
"\r" // Carriage return.
|
||||||
|
"\t" // Tab.
|
||||||
|
"\v" // Vertical tab.
|
||||||
|
// Unicode code points
|
||||||
|
IO.print("\u0041\u0b83\u00DE") // "AஃÞ"
|
||||||
|
// Unencoded bytes
|
||||||
|
IO.print("\x48\x69\x2e") // "Hi."
|
||||||
|
}
|
||||||
|
ranges {
|
||||||
|
3..8 // inclusive
|
||||||
|
4...6 // half-inclusive
|
||||||
|
}
|
||||||
|
nothing { null }
|
||||||
|
|
||||||
|
lists {
|
||||||
|
var list = [1, "banana", true]
|
||||||
|
list[0] = 5
|
||||||
|
list[1..2]
|
||||||
|
}
|
||||||
|
maps {
|
||||||
|
var stringMap = {
|
||||||
|
"George": "Harrison",
|
||||||
|
"John": "Lennon",
|
||||||
|
"Paul": "McCartney",
|
||||||
|
"Ringo": "Starr"
|
||||||
|
}
|
||||||
|
var a = 1
|
||||||
|
var weirdMap = {
|
||||||
|
true: 1,
|
||||||
|
false: 0,
|
||||||
|
null: -1,
|
||||||
|
"str": "abc",
|
||||||
|
(1..5): 10,
|
||||||
|
a: 2,
|
||||||
|
_a: 3,
|
||||||
|
__a: 4
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user