Now you may do the following tests: Try:
val ins = streamize_string_char("a;b") // should work Try: val ins = streamize_string_char("a;b\n") // may not work Try: val ins = streamize_string_char("a;b\015\012") // should cause crash On Thursday, March 2, 2017 at 9:21:21 PM UTC-5, gmhwxi wrote: > > When tried, I saw the following 5 chars (ascii) in small.csv: > > 97 > 59 > 98 > 13 > 10 > > My testing code: > > #include"share/atspre_staload.hats" > #include"share/HATS/atspre_staload_libats_ML.hats" > > implement main0 () = { > val inp = fileref_open_exn("small.csv", file_mode_r) > val ins = streamize_fileref_char(inp) > val ins = stream2list_vt(ins) > val ins = g0ofg1(list_vt2t(ins))97 > val ( ) = println! ("length(ins) = ", length(ins)) > val ( ) = (ins).foreach()(lam c => println!(char2int0(c))) > (* > val lexed = lex_csv(true, ';', ins) > *) > val () = fileref_close(inp) > (* > val h = (lexed.head()) > val- CSV_Field(r) = h > val a = r.csvFieldContent > val () = println!(a) > *) > } > > > > On Thu, Mar 2, 2017 at 9:13 PM, August Alm <...> wrote: > >> Just "a;b", or? (Attached.) >> >> Den fredag 3 mars 2017 kl. 03:03:08 UTC+1 skrev gmhwxi: >>> >>> I suspect that the file you used contains other characters. >>> >>> What is in "small.csv"? >>> >>> On Thu, Mar 2, 2017 at 8:52 PM, August Alm <...> wrote: >>> >>>> The file compiles (I've tried a few compiler options) and "gdb run" >>>> yields >>>> >>>> Program received signal SIGSEGV, Segmentation fault. >>>> 0x00007ffff783eea5 in _int_malloc (av=0x7ffff7b6a620 <main_arena>, >>>> bytes=16) at malloc.c:3790 >>>> >>>> The frames 0-3 involve allocation functions that are not particular to >>>> my file. Frame 4 says: >>>> >>>> #4 __patsfun_28__28__14 (arg0=<optimized out>, env1=0x605540, >>>> env0=10 '\n') at csv_lexer_dats.c:9023 >>>> 9023 ATSINSmove_con1_new(tmpret63__14, postiats_tysum_7) ; >>>> >>>> My not-so-educated guess is that this refers to making a cons-cell of a >>>> stream. >>>> >>>> But: How can my function do just fine when manually fed >>>> >>>> cons('a', cons( ';', sing('b'))): stream_vt(char), >>>> >>>> but segfault when I use [streamize_fileref_char] to construct the very >>>> same stream from the string "a;b" in a file? Where is the room for an >>>> infinite recursion in that? >>>> >>>> Thank you, >>>> August >>>> >>>> >>>> Den torsdag 2 mars 2017 kl. 23:04:35 UTC+1 skrev August Alm: >>>>> >>>>> Hi! >>>>> >>>>> I'm in over my head and tried writing a CSV-parser using linear lazy >>>>> streams. My code thus far is 600 lines and almost to my own surprise I >>>>> get >>>>> it to compile! However, there is something fishy because I get a segfault >>>>> when applying my program to an actual CSV-file. I've been trying to debug >>>>> using gdb but the fault eludes me. Since I don't expect anyone to mull >>>>> through 600 lines of code, I am hoping these code snippets are enough for >>>>> one of you guys to give me some advice. >>>>> >>>>> This code executes just fine: >>>>> >>>>> implement main0 () = { >>>>> >>>>> val test = stream_vt_make_cons( >>>>> 'a', stream_vt_make_cons( >>>>> ';', >>>>> stream_vt_make_sing('b'))) (* the stream ('a', ';', 'b') *) >>>>> val lexed = lex_csv(true, ';', test) >>>>> val h = (lexed.head()) >>>>> val- CSV_Field(r) = h >>>>> val a = r.csvFieldContent >>>>> val () = println!(a) >>>>> >>>>> } >>>>> >>>>> Here [lex_csv] is my 600-line alogrithm. It reads a [stream_vt(char)] >>>>> and gives back a [stream_vt(CSVEntry)], where [CSVEntry] is a record >>>>> type, >>>>> one of whose fields is [CSVFieldContent]. When executing the program I >>>>> get >>>>> "a" printed to the console. >>>>> >>>>> This code results in a segfault: >>>>> >>>>> implement main0 () = { >>>>> >>>>> val inp = fileref_open_exn("small.csv", file_mode_r) >>>>> val ins = streamize_fileref_char(inp) >>>>> val lexed = lex_csv(true, ';', ins) >>>>> val () = fileref_close(inp) >>>>> val h = (lexed.head()) >>>>> val- CSV_Field(r) = h >>>>> val a = r.csvFieldContent >>>>> val () = println!(a) >>>>> >>>>> } >>>>> >>>>> The file "small.csv" only contains the string "a;b". Hence I would >>>>> expect this code to give the result as the previous one! But, it doesn't >>>>> just return something else, it segfaults. >>>>> >>>>> gdb indicates there is a malloc problem having to do with >>>>> "GC_clear_stack_inner", in case that's helpful. (I'm a mathematician who >>>>> recently left academia after postdoc and decided to teach myself >>>>> programming to become more useful outside of academia; hence I understand >>>>> type systems and the like--the mathy stuff--a lot better than I >>>>> understand >>>>> memory allocation and other stuff that most programmers are supposed to >>>>> be >>>>> confident with.) >>>>> >>>>> What could be the problem here? >>>>> >>>>> Best wishes, >>>>> August >>>>> >>>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "ats-lang-users" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to ats-lang-user...@googlegroups.com. >>>> To post to this group, send email to ats-lan...@googlegroups.com. >>>> Visit this group at https://groups.google.com/group/ats-lang-users. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/ats-lang-users/69535c5c-eac3-472c-bb39-062ad4708a72%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/ats-lang-users/69535c5c-eac3-472c-bb39-062ad4708a72%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "ats-lang-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to ats-lang-users+unsubscr...@googlegroups.com. >> To post to this group, send email to ats-lang-users@googlegroups.com. >> Visit this group at https://groups.google.com/group/ats-lang-users. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/ats-lang-users/e608c7bb-42ce-457b-a606-9fe3525f801d%40googlegroups.com >> >> <https://groups.google.com/d/msgid/ats-lang-users/e608c7bb-42ce-457b-a606-9fe3525f801d%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > > -- You received this message because you are subscribed to the Google Groups "ats-lang-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to ats-lang-users+unsubscr...@googlegroups.com. To post to this group, send email to ats-lang-users@googlegroups.com. Visit this group at https://groups.google.com/group/ats-lang-users. To view this discussion on the web visit https://groups.google.com/d/msgid/ats-lang-users/9dbd2355-9149-4ea9-920f-fe4fe603db4f%40googlegroups.com.