1234567891011121314151617181920212223242526272829303132333435363738394041424344moduleMake(Parser:Transept_specs.PARSERwithtypee=char)=structopenTransept_utils.UtilsopenParserletspaces=in_list[' ';'\t';'\r';'\n']<$>constant()letalpha=in_range'a''z'<|>in_range'A''Z'letdigit=in_range'0''9'letident=to_list(alpha<&>optrep(alpha<|>digit))<$>string_of_charsletunsigned_number=repdigitletnatural=repdigit<$>string_of_chars<$>int_of_stringletsign=opt(in_list['+';'-'])<$>(functionNone->'+'|Somec->c)letsigned_number=to_list(sign<&>unsigned_number)letinteger=signed_number<$>string_of_chars<$>int_of_stringletrational=signed_number<&>(opt@@to_list(atom'.'<&>unsigned_number)<$>(functionNone->[]|Somel->l))<$>uncurry(@)letfloat=rational<&>(opt@@to_list(in_list['e';'E']<&>signed_number)<$>(functionNone->[]|Somel->l))<$>uncurry(@)<$>string_of_chars<$>float_of_string(** TODO reviewed ASAP *)letstring=atom'"'&>optrep@@not@@atom'"'<&atom'"'<$>string_of_chars(** TODO reviewed ASAP *)letchar=atom'\''&>not@@atom'\''<&atom'\''end