int literal_id(atom value) { //string if(value.is_string()) return _literals.index(value.get()); //literal return literal_id(value.get()); }
string value_of(atom atom) { string type=atom.type(); string value=atom.get(); if(atom.is_number()) { //number if(value.is_integer()) type="integer"; else { check(value.is_real()); type="real"; } } else if(atom.is_string()) { //string type="literal"; value=stringify(literal_id(atom)); } else if(atom.is_identifier()) { //identifier value=_identifiers.index(literal_id(atom)).string_(); } else { //raw type="literal"; value=stringify(literal_id(atom)); } return concat(type,value.parens()); }