Predefined Functions

Some runtime function may fail if some assertions are not fulfilled. In that case, the program must exit with a properly labeled error message, and with exit code 120. The error messages must follow the standard. Any difference, in better or worse, is a failure to comply with this Tiger Reference Manual.

string: chr (code: int)
Return the one character long string containing the character which code is code.
If code does not belong to the range [0..255], raise a runtime error: chr: character out of range.
string: concat (first: string, second: string)

Concatenate first and second.

void: exit (status: int)

Exit the program with exit code status.

void: flush ()

Flush the output buffer.

string: getchar ()

Read a character on input. Return an empty string on an end of file.

int: not (boolean: int)

Return 1 if boolean = 0, else return 0.

int: ord (string: string)

Return the ascii code of the first character in string and -1 if the given string is empty.

void: print (string: string)

Print string on the standard output.

void: print_err (string: string)

Note: this is an EPITA extension. Same as print, but the output is written to the standard error.

void: print_int (int: int)

Note: this is an EPITA extension. Output int in its decimal canonical form (equivalent to %d for printf).

int: size (string: string)

Return the size in characters of the string.

int: strcmp (a: string, b: string)

Note: this is an EPITA extension. Compare the strings a and b. Return -1 if a < b, 0 if equal, and 1 otherwise.

int: streq (a: string, b: string)

Note: this is an EPITA extension. Return 1 if the strings a and b are equal, 0 otherwise. Often faster than strcmp to test string equality.

string: substring (string: string, first: int, length: int)

Return a string composed of the characters of string starting at the first character (0 being the origin), and composed of length characters (i.e., up to and including the character first + length - 1).

Let size be the size of the string, the following assertions must hold:

  • 0 <= first

  • 0 <= length

  • first + length <= size

Otherwise a runtime failure is raised: substring: arguments out of bounds.