1) Built in operators:

+,-,*,/,%,==,!=,<=,>=,<,>,;

2) Integers and floats in arithmetics:

1 or 2.33333 or 0.34 or .34

3) Arbitrary nesting of parentheses:

(1+2*(5+((3+4)*3)-6/2)+7*2)\n    => 61

4) Comments:

# A comment until the end of the line
/* A longer comment that
   spans multiple lines
 */

5) Built in keywords:

TRUE,FALSE,NULL,IF,ELSE,END

6) Built in functions:

HELP,ENV,SIZE,SPLIT,ROUND,MIN,MAX
SUM,MULT,AVG, PRINT, PRINT_LINE
TO_INT, TO_FLOAT, TO_ARRAY, AVG_SUM
MATCHING_IDS, VALUES_OF_TYPE

7) Standard library functions:

foreach_in, inject, map, select
reject, in_groups_of, sum_of_type
avg_sum_of_type, avg_range_sum_of_type
total_range_sum_of_type, ratio
year_from_date, month_from_date,
hash_values, hash_value_sum,
avg_hash_value_sum, hash_range_values,
hash_range_value_sum,
avg_hash_range_value_sum

8) Access the current environment:

ENV; (your output may differ)
=> { :a => 3, :foo => 5 }
Given the following environment:
{ :a => 1, :b => 2, :c => 3 }
ENV['a']
=> 1
ENV['a'..'b']
=> { :a => 1, :b => 2 }

9) Numeric variables and literals

3;
=> 3
a = 3;
=> 3
a;
=> 3

10) String variables and literals

"This is a string";    
=> "This is a string";
'This is a string';
=> "This is a string";
s1 = "This is a string"; s1;
=> "This is a string"
s2 = 'This is a string'; s2;
=> "This is a string"
SIZE(s1);
=> 16
SIZE("foo");
=> 3

11) Variables and closure applications

a = 3; foo = 5;
calc = fun(x,y) { (x + y) * a + foo };
calc(2,2);
=> 17

12) Array variables and literals

arr = [1, [fun(){2}()], fun(x){x}(3)]
SIZE(arr);
=> 3
SIZE([1,2,3]);
=> 3
[1,2,3] + [4,[5,6]];
=> [1,2,3,4,[5,6]]
[1,2,3] - [[1],2,3];
=> [1]

13) Hash variables and literals

h = { 1 => fun(){2}(), 'a' => 'foo' }
SIZE(h);
=> 2
h[1];
=> 'fun(){2}()'
h['a'];
=> 'foo'
SIZE({ 1 => 2});
=> 1

14) Range variables and literals

range_including_upper = 1..5
=> [ 1, 2, 3, 4, 5 ]
SIZE(range_including_upper);
=> 5
range_excluding_upper = 1...5
=> [ 1, 2, 3, 4 ]
SIZE(range_excluding_upper);
=> 4
SIZE([1..5);
=> 5

15) Conditional branching and recursion:

factorial = fun(x) {      
  if(x == 0)
    1
  else
    x * factorial(x - 1)
  end
}
factorial(5);
=> 120

16) Conditional branching:

foo = fun(x) {
  if(x == 0)
    0
  elsif(x == 1)
    1
  else
    2
  end
}
foo(0);
=> 0
foo(1);
=> 1
foo(2);
=> 2

17) case expressions:

foo = fun(x) {
  case x
  when NULL then NULL
  when 0    then 0
  when 1    then 1
  when 2    then 2
  else          
    3
  end
}
foo(1);
=> 1
foo(3);
=> 3