================ Simple function ================ function Factorial(n) if n le 1 then return 1; end if; return n * Factorial(n - 1); end function; --- (source_file (function_definition name: (identifier) (parameter_list (parameter (identifier))) (if_statement (binary_expression (identifier) (number)) (return_statement (number))) (return_statement (binary_expression (identifier) (call_expression name: (identifier) (binary_expression (identifier) (number))))))) ================ Procedure with tilde ================ procedure Swap(~x, ~y) t := x; x := y; y := t; end procedure; --- (source_file (procedure_definition name: (identifier) (parameter_list (parameter (identifier)) (parameter (identifier))) (assignment_statement (identifier) (identifier)) (assignment_statement (identifier) (identifier)) (assignment_statement (identifier) (identifier)))) ================ Intrinsic with type ================ intrinsic MyAdd(x::RngIntElt, y::RngIntElt) -> RngIntElt { Returns x+y } return x + y; end intrinsic; --- (source_file (intrinsic_definition name: (identifier) (parameter_list (parameter (identifier) (identifier)) (parameter (identifier) (identifier))) (identifier) (doc_string) (return_statement (binary_expression (identifier) (identifier)))))