190 lines
6.7 KiB
Plaintext
190 lines
6.7 KiB
Plaintext
===================
|
|
Array Comprehension
|
|
===================
|
|
|
|
simple = [ i | i in X ];
|
|
where = [ i | i in X where i == 2 ];
|
|
multiple = [ i | i in X, j in Y where i == j];
|
|
|
|
---
|
|
|
|
(source_file
|
|
(assignment (identifier) (array_comprehension (identifier) (generator (identifier) (identifier))))
|
|
(assignment (identifier) (array_comprehension (identifier) (generator (identifier) (identifier) (infix_operator (identifier) (integer_literal)))))
|
|
(assignment (identifier) (array_comprehension (identifier) (generator (identifier) (identifier)) (generator (identifier) (identifier) (infix_operator (identifier) (identifier))))))
|
|
|
|
====
|
|
Call
|
|
====
|
|
|
|
no_args = my_fn();
|
|
single_arg = my_fn(1);
|
|
mult_args = my_fn(2, "test");
|
|
generator_lookalike = my_fn(x in Xs)
|
|
|
|
---
|
|
|
|
(source_file
|
|
(assignment (identifier) (call (identifier)))
|
|
(assignment (identifier) (call (identifier) (integer_literal)))
|
|
(assignment (identifier) (call (identifier) (integer_literal) (string_literal)))
|
|
(assignment (identifier) (call (identifier) (infix_operator (identifier) (identifier)))))
|
|
|
|
==============
|
|
Generator Call
|
|
==============
|
|
|
|
simple_sum = sum(i in N)(i);
|
|
selective_sum = sum(i in N where i in X)(i);
|
|
|
|
---
|
|
|
|
(source_file
|
|
(assignment (identifier) (generator_call (identifier) (generator (identifier) (identifier)) (identifier)))
|
|
(assignment (identifier) (generator_call (identifier) (generator (identifier) (identifier) (infix_operator (identifier) (identifier))) (identifier))))
|
|
|
|
============
|
|
If-Then-Else
|
|
============
|
|
|
|
if_only = if b then i < j endif;
|
|
value_select = if b then i else j endif;
|
|
elseif = if b then i elseif c then j else k endif;
|
|
elseif_no_else = if b then i < j elseif c then j > i endif;
|
|
|
|
---
|
|
|
|
(source_file
|
|
(assignment (identifier) (if_then_else (identifier) (infix_operator (identifier) (identifier))))
|
|
(assignment (identifier) (if_then_else (identifier) (identifier) (identifier)))
|
|
(assignment (identifier) (if_then_else (identifier) (identifier) (identifier) (identifier) (identifier)))
|
|
(assignment (identifier) (if_then_else (identifier) (infix_operator (identifier) (identifier)) (identifier) (infix_operator (identifier) (identifier)))))
|
|
|
|
============
|
|
Index Access
|
|
============
|
|
|
|
named_colection = my_collection[1];
|
|
named_accessor = my_collection[i];
|
|
literal_collection = [1,2,3][i];
|
|
multiple_accessor = my_collection[i,2];
|
|
expression_accessor = my_collection[-i + 2];
|
|
slice = my_collection[1..2];
|
|
|
|
---
|
|
|
|
(source_file
|
|
(assignment (identifier) (indexed_access (identifier) (integer_literal)))
|
|
(assignment (identifier) (indexed_access (identifier) (identifier)))
|
|
(assignment (identifier) (indexed_access (array_literal (integer_literal) (integer_literal) (integer_literal)) (identifier)))
|
|
(assignment (identifier) (indexed_access (identifier) (identifier) (integer_literal)))
|
|
(assignment (identifier) (indexed_access (identifier) (infix_operator (prefix_operator (identifier)) (integer_literal))))
|
|
(assignment (identifier) (indexed_access (identifier) (infix_operator (integer_literal) (integer_literal)))))
|
|
|
|
==============
|
|
Infix Operator
|
|
==============
|
|
|
|
exponent = x ^ y;
|
|
mult = x * y;
|
|
div = x / y;
|
|
idiv = x div y;
|
|
add = x + y;
|
|
minus = x - y;
|
|
set_inter = x intersect y;
|
|
set_dotdot = x..y;
|
|
set_symdiff = x symdiff y;
|
|
set_diff = x diff y;
|
|
set_union = x union y;
|
|
same = x = y;
|
|
samedouble = x == y;
|
|
different = x != y;
|
|
smaller = x < y;
|
|
bigger = x > y;
|
|
smalleq = x <= y;
|
|
bigeq = x >= y;
|
|
set_in = x in y;
|
|
set_sub = x subset y;
|
|
set_super = x superset y;
|
|
and = x /\ y;
|
|
bool_xor = x xor y;
|
|
or = x \/ y;
|
|
|
|
---
|
|
|
|
(source_file
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier)))
|
|
(assignment (identifier) (infix_operator (identifier) (identifier))))
|
|
|
|
===========
|
|
Precedences
|
|
===========
|
|
|
|
given_precedence = (1 + 1) * 1;
|
|
mult_first = 1 + 1 * 1;
|
|
exp_first = 1 * 1 ^ 1;
|
|
annotation_bind = 1 ^ 1::some_ann;
|
|
|
|
---
|
|
|
|
(source_file
|
|
(assignment (identifier) (infix_operator (infix_operator (integer_literal) (integer_literal)) (integer_literal)))
|
|
(assignment (identifier) (infix_operator (integer_literal) (infix_operator (integer_literal) (integer_literal))))
|
|
(assignment (identifier) (infix_operator (integer_literal) (infix_operator (integer_literal) (integer_literal))))
|
|
(assignment (identifier) (infix_operator (integer_literal) (infix_operator (integer_literal) (identifier)))))
|
|
|
|
===============
|
|
Prefix Operator
|
|
===============
|
|
|
|
negatitve_number = -5;
|
|
negative_ident = -num;
|
|
|
|
negated_bool = not true;
|
|
unicode_negation = ¬ b;
|
|
|
|
---
|
|
|
|
(source_file
|
|
(assignment (identifier) (prefix_operator (integer_literal)))
|
|
(assignment (identifier) (prefix_operator (identifier)))
|
|
(assignment (identifier) (prefix_operator (boolean_literal)))
|
|
(assignment (identifier) (prefix_operator (identifier))))
|
|
|
|
=================
|
|
Set Comprehension
|
|
=================
|
|
|
|
simple = { i | i in X };
|
|
where = { i | i in X where i == 2 };
|
|
multiple = { i | i in X, j in Y where i == j};
|
|
|
|
---
|
|
|
|
(source_file
|
|
(assignment (identifier) (set_comprehension (identifier) (generator (identifier) (identifier))))
|
|
(assignment (identifier) (set_comprehension (identifier) (generator (identifier) (identifier) (infix_operator (identifier) (integer_literal)))))
|
|
(assignment (identifier) (set_comprehension (identifier) (generator (identifier) (identifier)) (generator (identifier) (identifier) (infix_operator (identifier) (identifier))))))
|