"/* This file is part of GNU epsilon, a functional language implementation\n"
"\n"
"Copyright (C) 2003 Luca Saiu\n"
"\n"
"GNU epsilon is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published\n"
"by the Free Software Foundation; either version 2, or (at your\n"
"option) any later version.\n"
"\n"
"GNU epsilon is distributed in the hope that it will be useful, but\n"
"WITHOUT ANY WARRANTY; without even the implied warranty of\n"
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
"General Public License for more details.\n"
"\n"
"You should have received a copy of the GNU General Public License\n"
"along with epsilon; see the file COPYING.  If not, write to the\n"
"Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
"Boston, MA 02111-1307, USA. */\n"
"\n"
"\n"
"/* Code for the ins instruction */\n"
"\n"
"// To do: manage errors\n"
"int i;\n"
"char* s;\n"
"int length_of_s;\n"
"word_t* array;\n"
"\n"
"/* Read a string from the console: */\n"
"s = readline(\"\"); /* This malloc()\'s the string */\n"
"\n"
"/* Throw an exception if the buffer is over */\n"
"if(s == NULL)\n"
"  THROW(interrupted_exception, NULL);\n"
"\n"
"/* Create the eAM array: */\n"
"length_of_s = strlen(s);\n"
"ASSIGN_CREATE_ARRAY(array, length_of_s + 1);\n"
"\n"
"/* Fill the eAM array: */\n"
"array[0] = (word_t)((integer_t)length_of_s); /* length */\n"
"for (i = 0; i < length_of_s; i++)\n"
"  array[i + 1] = (word_t)((integer_t)(s[i]));\n"
"\n"
"/* Free the string allocated by readline(): */\n"
"free(s);\n"
"\n"
"/* Put the result into output_register, converted into an word_t: */\n"
"output_register = (word_t)array;\n"
""
