Re: print and get procedures

new topic     » goto parent     » topic index » view thread      » older message » newer message
menno said...

The idea is to do print() as dump of a sequence and with get() do a readback of that sequence .
Oke that works as long as it is only one sequence .
But this :
print(fileout,seq1)
print(fileout,seq2)
print(fileout,seq3)
Save this three sequence's to fileout .
But how to get thim back ?
seq1=get(filein) - works
seq2=get(filein) - doesn't work
seq3=get(filein) - doesn't work

Why , because the GET() routine within get.e does a recursion which ends on a wrong character .

I changed it in this way :

function Get(integer l) --l is level counter 
-- read a Euphoria data object as a string of characters 
-- and return {error_flag, value} 
-- Note: ch is "live" at entry and exit of this routine 
    sequence s, e 
    skip_blanks() 
    if find(ch, START_NUMERIC) then 
        return get_number() 
    elsif ch = '{' then 
        -- process a sequence 
        s = {} 
        get_ch() 
        skip_blanks() 
        if ch = '}' then 
            if l then get_ch() end if  -- change into if statement 
            return {GET_SUCCESS, s} -- empty sequence 
        end if     
        while TRUE do 
            e = Get(l+1) -- read next element  add level 
            if e[1] != GET_SUCCESS then 
                return e 
            end if 
            s = append(s, e[2]) 
            skip_blanks() 
            if ch = '}' then 
                if(l) then get_ch() end if  -- change into if statement 
                return {GET_SUCCESS, s} 
            elsif ch != ',' then 
                return {GET_FAIL, 0} 
            end if 
            get_ch() -- skip comma 
        end while 
    elsif ch = '\"' then 
        return get_string() 
    elsif ch = '\'' then 
        return get_qchar() 
    elsif ch = -1 then 
        return {GET_EOF, 0} 
    else 
        return {GET_FAIL, 0} 
    end if 
end function 

change the call to GET() into GET(0)

if all you need is to write and read seq's try this

include std/io.e sequence seq, seq1 = "abc", seq2 = "def", seq3 = "ghi"

write_lines("Test.txt",{seq1,seq2,seq3})

seq = read_lines("Test.txt") puts(1,seq[1]) puts(1,'\n') puts(1,seq[2]) puts(1,'\n') puts(1,seq[3])

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu