sustlang/print_args.sus

81 lines
1.8 KiB
Plaintext

# constants
INIT_VAR char space
SET_VAR space 32
INIT_VAR int one
SET_VAR one 1
# constants
FUNC null println text string # println function
TEMP_VAR char new_line 10
ADD_STR text new_line
WRITE text cout
FUNC_END
# write args length
INIT_VAR integer args_size
LIST_SIZE args args_size
TEMP_VAR integer add -1
ADD_INT args_size add
INIT_VAR string args_size_str
TO_STRING args_size args_size_str
INIT_VAR string args_size_str_formatted # create var
SET_VAR args_size_str_formatted # init var with value
INIT_VAR string prefix
SET_VAR prefix Args length:
ADD_STR args_size_str_formatted prefix
ADD_STR args_size_str_formatted space
ADD_STR args_size_str_formatted args_size_str
USE_FUNC println null args_size_str_formatted
DROP_VAR prefix
DROP_VAR args_size_str_formatted
DROP_VAR args_size_str
DROP_VAR args_size
FUNC null print_arg_finally
INIT_VAR string prefix
SET_VAR prefix -
ADD_STR prefix space
ADD_STR prefix now_arg
USE_FUNC println null prefix
FUNC_END
FUNC null print_arg index integer
INIT_VAR bool is_first
SET_VAR is_first false
TEMP_VAR integer first 0
MORE index first is_first
GET_ITEM args index now_arg
IF is_first print_arg_finally
FUNC_END
FUNC null print_args_list
TEMP_VAR string text Args:
USE_FUNC println null text
INIT_VAR integer end_index
LIST_SIZE args end_index
TEMP_VAR integer add -1
ADD_INT end_index add
TEMP_VAR integer start_index 0
FOR print_arg start_index end_index
FUNC_END
INIT_VAR integer args_size
LIST_SIZE args args_size
INIT_VAR string now_arg
INIT_VAR bool is_args_more_than_one
MORE args_size one is_args_more_than_one
IF is_args_more_than_one print_args_list