1. Parsing
- Posted by Joseph Martin <jam at EXIS.NET> Apr 07, 1997
- 892 views
I should know how to do this, but I don't. Could some one show me an example of parsing stuff read in from a file. For example sake an HTML file, and reading any <P>, <BR>, or <B> tags. Thanks. ~~>Joseph Martin ~~>Personal: joe at cyber-wizard.com ~~>Web: jam.net at poboxes.com ~~>URL: http://users.exis.net/~jam/
2. Parsing
- Posted by "Cuny, David" <ATB.DCUNY at HW1.CAHWNET.GOV> Apr 07, 1997
- 823 views
Joe wrote: > I should know how to do this, but I don't. Could some one show me an > example of parsing stuff read in from a file. For example sake an > HTML file, and reading any <P>, <BR>, or <B> tags. Thanks. Here's a program that will read an HTML file, and return a sequence of token in the form: { { tokenType, tokenValue } ... } -- CODE BEGINS HERE -- html.ex -- simple HTML parser integer tag sequence buffer, parse, text -- token types constant STRING = 1, -- string of text TAG = 2 -- html tag procedure if_err( object test, sequence errMessage ) -- generic error handler -- if test is true, abort with message if test then puts( 1, errMessage & '\n' ) abort( 0 ) end if end procedure function read_file( sequence fName ) -- see help file under 'gets()' -- read file fName, return as sequence atom handle sequence buffer object line -- open file handle = open( fName, "r" ) if_err( handle = -1, "Unable to open file " & fName & "." ) -- clear buffer buffer = {} -- read until end of file while 1 do line = gets(handle) if atom(line) then exit -- end of file else buffer = append(buffer, line) end if end while close( handle ) return buffer end function -- read the file buffer = read_file( "test.htm" ) -- parse the file parse = "" for line = 1 to length( buffer ) do -- clear tag tag = 0 -- clear accumulated text text = "" for char = 1 to length( buffer[line] ) do -- start of html tag if buffer[line][char] = '<' then -- save accumulated text if length( text ) > 0 then parse = append( parse, { STRING, text } ) end if -- inside of tag already? if_err( tag != 0, "Error - unexpected '<' in tag." ) -- start of tag tag = 1 text = "" -- end of html tag elsif buffer[line][char] = '>' then -- was a tag started? if_err( tag = 0, "Error - unexpected '>'.\n" ) -- write tag parse = append( parse, { TAG, text } ) text = "" -- clear flag tag = 0 -- end of line elsif buffer[line][char] = '\n' then -- was tag started? if_err( tag, "Error - unexpected end of line in tag.\n" ) -- text accumulated? if length( text ) > 0 then parse = append( parse, { STRING, text } ) end if -- clear text text = "" -- normal character else -- accumulate text text = text & buffer[line][char] end if end for end for -- show results of parse -- each token for i = 1 to length( parse ) do -- show results, based on type of token if parse[i][1] = STRING then printf( 1, "STRING: %s\n", {parse[i][2]} ) elsif parse[i][1] = TAG then printf( 1, "TAG : %s\n", {parse[i][2]} ) else if_err( 1, "Unknown token." ) end if end for -- END OF CODE Here's a test file: -- TEST FILE BEGINS HERE <B>This is bold<\B> <I>This is italic<\I> <P>This is a new paragraph. <BR>This is a paragraph break. <B>This is bold <I>and italic<\I><\B> -- TEST FILE ENDS HERE Hope this helps. -- David Cuny
3. Re: Parsing
- Posted by Lucius L Hilley III <luciuslhilleyiii at JUNO.COM> Apr 07, 1997
- 820 views
- Last edited Apr 08, 1997
I lost the original message and a couple other messages too. Someone asked about parsing. They even mentioned <HTML>. Here is a throw together HTML parser. This strips out MOST <tags>, replaces linefeeds with spaces, and replaces <BR>, <HR>, </H????>, </TITLE> with line feed. ----------Parses and displays file.htm--------- -----Few comments involved include wildcard.e--used for changing some text to upper case. sequence buffer object line integer handle integer l, g --l is lessthan --g is greaterthan integer lf --lf is linefeed lf = 10 handle = open("file.htm", "r") buffer = {} while 1 do line = gets(handle) if atom(line) then exit end if line[length(line)] = 32 buffer = buffer & line end while l = find('<', buffer) while l do g = find('>', buffer) buffer[l..g] = upper(buffer[l..g]) if compare(buffer[l..g], "<BR>") = 0 then buffer = buffer[1..l - 1] & 10 & buffer[g + 1..length(buffer)] elsif compare(buffer[l..g], "<HR>") = 0 then buffer = buffer[1..l - 1] & 10 & buffer[g + 1..length(buffer)] elsif compare(buffer[l..g], "</TITLE>") = 0 then buffer = buffer[1..l - 1] & 10 & buffer[g + 1..length(buffer)] elsif compare(buffer[l..l + 2], "</H") = 0 then buffer = buffer[1..l - 1] & 10 & buffer[g + 1..length(buffer)] else buffer = buffer[1..l - 1] & buffer[g + 1..length(buffer)] end if l = find('<', buffer) end while puts(1, buffer) ------------------End file------------ --Lucius Lamar Hilley III -- E-mail at luciuslhilleyiii at juno.com -- I support transferring of files less than 60K. -- I can Decode both UU and Base64 format.
4. Re: Parsing
- Posted by The Reaper <reaper at LOKI.ATCON.COM> Apr 08, 1997
- 796 views
At 05:33 PM 4/7/97 PST, you wrote: >Joe wrote: > >> I should know how to do this, but I don't. Could some one show me an >> example of parsing stuff read in from a file. For example sake an >> HTML file, and reading any <P>, <BR>, or <B> tags. Thanks. > >Here's a program that will read an HTML file, and return a sequence of token >in the form: <code> Unfortunatly, with both of the code supplied, you are forgeting the fact that the "<" and ">" symbols can be used without starting a tag and that an end-of-line CAN be inside them. You'd have to make a program that checks for the key words as well as the symbols. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= The Reaper (J. Lays) http://www.geocities.com/TimesSquare/Alley/4444/ reaper at auracom.com Check out my Euphoria Games page at: -= http://www.geocities.com/TimesSquare/Alley/4444/eugames.html ........................ . .. -||..........__...... "There is a silence before a storm, . / ||......../-- \\.:::: A calm that is spent in fear; . ..| ||...... / | |.::: But if that time was spent running, .| _-||.......|| / /.:::: There may be nothing to be afraid of." ..| |..||...... -\_- \ |\-.::: .| |.[< \ .../ \.:: .||.|||\|\ | - - . \.:::: ...|.\|| | \ | | |.:::. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
5. Re: Parsing
- Posted by Lucius L Hilley III <luciuslhilleyiii at JUNO.COM> Apr 08, 1997
- 800 views
- Last edited Apr 09, 1997
On Tue, 8 Apr 1997 16:59:46 -0400 The Reaper <reaper at LOKI.ATCON.COM> writes: >At 05:33 PM 4/7/97 PST, you wrote: >>Joe wrote: >>> I should know how to do this, but I don't. Could some one show me >an >>> example of parsing stuff read in from a file. For example sake an >>> HTML file, and reading any <P>, <BR>, or <B> tags. Thanks. >>Here's a program that will read an HTML file, and return a sequence >of token >>in the form: ><code> >Unfortunatly, with both of the code supplied, you are forgeting the >fact >that the "<" and ">" symbols can be used without starting a tag and >that an >end-of-line CAN be inside them. You'd have to make a program that >checks for >the key words as well as the symbols. >=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= >The Reaper (J. Lays) My CODE did take into account <end-of-line> inside. and I don't plan to spend the time to create a HTML reader. < and > will show if the character following < is not a letter or an (!) exclamation point. The proper way to show < is with < and > with > meaning LessThan and GreaterThan. You are suppose to follow < with the semicolon. To show & you are suppose to use & which means Ampersand. <dummy> and <I have created a dummy > <! This is a HTML comment> This is an Euphoria list it should not have turned into a HTML lesson. I and my Parsing accomplice where trying to show how Parsing would be handled. We had no intentions in creating a full blown parser for HTML files. (well at least I didn't :] ) But of course Reaper is right. We should have mentioned that we had not handled all the details of HTML. My apologizes for not making that clear. --Lucius Lamar Hilley III -- E-mail at luciuslhilleyiii at juno.com -- I support transferring of files less than 60K. -- I can Decode both UU and Base64 format.
6. Re: Parsing
- Posted by "Cuny, David" <ATB.DCUNY at HW1.CAHWNET.GOV> Apr 09, 1997
- 795 views
re: parsing code does not handle all the exception. Are you just complaining because I groused about your web page's color scheme..? ;) Lucius was correct. Like him, I was aware that the code did not handle the exeptions that you mentioned, The intent was to provide an example of parsing, not a complete HTML parser. I think the example was sufficiently complicated without adding exception processing. I figured I could either spend my time looking up HTML, or leave the rest as an exercise to the reader. However, to satisfy Mr. Reaper, I'll post a complete list of what my code does *not* do. (I can hear you snicker already: Yeah, Cuny... It doesn't *work*...) -- David Cuny
7. Re: Parsing
- Posted by Ad Rienks <Ad_Rienks at COMPUSERVE.COM> Apr 09, 1997
- 792 views
-- parser.ex -- HTML parser function parse(sequence line) integer l, g sequence output output = {} while 1 do l = find('<', line) g = find('>', line[l+1..length(line)]) + l if l = 0 or g = 0 then -- no tags found output = output & line if compare(output, {10}) = 0 then output = {} end if return output end if output = output & line[1..l-1] line = line[g+1..length(line)] end while end function -- parse procedure if_err(object test, sequence err_message) -- generic error handler -- if test is true, abort with message if test then puts(1, err_message & '\n') abort(0) end if end procedure -- if_err function read_file(sequence filename) -- see help file under 'gets()' -- read file filename, return as sequence integer handle object line sequence buffer -- open file handle = open(filename, "r") if_err(handle = -1, "Can't open file " & filename) -- clear buffer buffer = {} -- read until end of file while 1 do line = gets(handle) if atom(line) then exit -- end of file else buffer = append(buffer, line) end if end while close(handle) return buffer end function -- read_file integer handle sequence buffer, output constant filename = "output.txt" -- read the file buffer = read_file("file.htm") -- open a file to write handle = open(filename, "w") if_err(handle = -1, "Can't open file " & filename) output = repeat("", length(buffer)) for line = 1 to length(buffer) do output[line] = parse(buffer[line]) puts(1, output[line]) puts(handle, output[line]) end for close(handle)
8. Re: Parsing
- Posted by Ad Rienks <Ad_Rienks at COMPUSERVE.COM> Apr 09, 1997
- 776 views
I tried to make a small program to parse a HTML file and strip the tags from it. It is attached to this message. I tried it on the .htm from the Ofiicial Euphoria Page. The only thing that is still giving a problem is a line like: "if c >= 'a' and c <= 'z' then ...". This comes out as "if c >= 'a' and c = 'z'". I can see why, but cannot think of a simple solution. I strip out extra newline characters, and write the result to a file. C what U can do with it! ======================================= Ad Rienks AdRienks at compuserve.com
9. Parsing
- Posted by Mark Brown <mabrown at SENET.COM.AU> Mar 20, 2000
- 763 views
------=_NextPart_000_001F_01BF9213.1ECDC920 charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi All Could anyone point me in the direction of a www resource related to = parsing techniques (nothing too heavy - I'm not clever!) Thanks Mark ------=_NextPart_000_001F_01BF9213.1ECDC920 charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META content=3D"text/html; charset=3Diso-8859-1" = http-equiv=3DContent-Type> <META content=3D"MSHTML 5.00.2314.1000" name=3DGENERATOR> <STYLE></STYLE> </HEAD> <BODY bgColor=3D#ffffff> <DIV><FONT size=3D2>Hi All</FONT></DIV> <DIV> </DIV> <DIV><FONT size=3D2>Could anyone point me in the direction of a www = resource=20 related to parsing techniques (nothing too heavy - I'm not = clever!)</FONT></DIV> <DIV> </DIV> <DIV><FONT size=3D2>Thanks</FONT></DIV> <DIV> </DIV> ------=_NextPart_000_001F_01BF9213.1ECDC920--
10. Re: Parsing
- Posted by Dan B Moyer <DANMOYER at PRODIGY.NET> Mar 23, 2000
- 791 views
- Last edited Mar 24, 2000
------=_NextPart_000_010F_01BF951B.D52CC580 charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Mark, You might look at this, http://www.cs.vu.nl/~dick/PTAPG.html it appears to be a downloadable version of a book, "Parsing Techniques-A = Practical Guide". I'm not sure if it's as simple as you want, and it is about 2meg Acrobat = Reader (pdf) download. I haven't looked at it, & probably wouldn't understand it if I did, but = it might help you. Dan Moyer Mark wrote: Hi All Could anyone point me in the direction of a www resource related to = parsing techniques (nothing too heavy - I'm not clever!) Thanks Mark ------=_NextPart_000_010F_01BF951B.D52CC580 charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN"> <HTML> <HEAD> <META content=3Dtext/html;charset=3Diso-8859-1 = http-equiv=3DContent-Type><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 = Transitional//EN"> <META content=3D'"MSHTML 4.72.3110.7"' name=3DGENERATOR> <STYLE></STYLE> </HEAD> <BODY bgColor=3D#ffffff> <DIV><FONT color=3D#000000 face=3D"Times New Roman">Mark,</FONT></DIV> <DIV><FONT color=3D#000000 face=3D"Times New Roman"></FONT> </DIV> <DIV><FONT face=3D"Times New Roman">You might look at this, <A=20 TAPG.html</A></FONT></DIV> <DIV><FONT face=3D"Times New Roman">it appears to be a downloadable = version of a=20 book, "Parsing Techniques-A Practical Guide".</FONT></DIV> <DIV><FONT face=3D"Times New Roman">I'm not sure if it's as simple as = you want,=20 and it is about 2meg Acrobat Reader (pdf) download.</FONT></DIV> <DIV><FONT face=3D"Times New Roman"></FONT><FONT color=3D#000000=20 face=3D"Times New Roman">I haven't looked at it, & probably wouldn't = understand it if I did, but it might help you.</FONT></DIV> <DIV><FONT color=3D#000000 face=3D"Times New Roman"></FONT> </DIV> <DIV><FONT color=3D#000000 face=3D"Times New Roman">Dan = Moyer</FONT></DIV> <DIV><FONT color=3D#000000 face=3D"Times New Roman"></FONT> </DIV> <DIV><FONT face=3D"Times New Roman">Mark wrote:</FONT></DIV> <DIV><FONT face=3D"Times New Roman"></FONT> </DIV> <DIV> <DIV><FONT size=3D2>Hi All</FONT></DIV> <DIV> </DIV> <DIV><FONT size=3D2>Could anyone point me in the direction of a www = resource=20 related to parsing techniques (nothing too heavy - I'm not = clever!)</FONT></DIV> <DIV> </DIV> <DIV><FONT size=3D2>Thanks</FONT></DIV> <DIV><FONT size=3D2></FONT> </DIV> <DIV> <DIV><FONT size=3D2>Mark</FONT></DIV></DIV></DIV> <BLOCKQUOTE=20 style=3D"BORDER-LEFT: #000000 solid 2px; MARGIN-LEFT: 5px; PADDING-LEFT: = 5px"> ------=_NextPart_000_010F_01BF951B.D52CC580--
11. Re: Parsing
- Posted by Joel Crook <joel at MAIL.K-A.COM> Mar 24, 2000
- 814 views
--=====================_2125001==_.ALT Another on-line free book and software for C++, Pascal (TP 5.5 and above) and Modula-2 is "Compilers and Compiler Generators an introduction with C++" located at: http://scifac.ru.ac.za/compilers/ There is a pdf of the book (about 1 meg zip'd) and source files for C++, Pascal (TP 5.5 and above) and Modula-2 At 11:02 PM 3/23/00 -0800, you wrote: > > Mark, > > You might look at this, > <http://www.cs.vu.nl/~dick/PTAPG.html>http://www.cs.vu.nl/~dick/PTAPG.html > it appears to be a downloadable version of a book, "Parsing Techniques-A > Practical Guide". > I'm not sure if it's as simple as you want, and it is about 2meg Acrobat > Reader (pdf) download. > I haven't looked at it, & probably wouldn't understand it if I did, but it > might help you. > > Dan Moyer > > Mark wrote: > > Hi All > > Could anyone point me in the direction of a www resource related to parsing > techniques (nothing too heavy - I'm not clever!) > > Thanks > > Mark >> >> > Joel "When the code works perfectly, the program is obsolete." -- "The Gosple According to St. Murphy" --=====================_2125001==_.ALT <html> Another on-line free book and software for C++, Pascal (TP 5.5 and above) and Modula-2 is "Compilers and Compiler Generators an introduction with C++" located at: <br> <a href="http://scifac.ru.ac.za/compilers/" eudora="autourl">http://scifac.ru.ac.za/compilers/</a><br> <br> There is a pdf of the book (about 1 meg zip'd) and source files for C++, Pascal (TP 5.5 and above) and Modula-2<br> <br> <br> At 11:02 PM 3/23/00 -0800, you wrote: <br> <font face="Times New Roman, Times"><blockquote type=cite cite>Mark,</font><br> <br> <font face="Times New Roman, Times">You might look at this, <a href="http://www.cs.vu.nl/~dick/PTAPG.html">http://www.cs.vu.nl/~dick/PTAPG.html</a></font><br> it appears to be a downloadable version of a book, "Parsing Techniques-A Practical Guide".<br> I'm not sure if it's as simple as you want, and it is about 2meg Acrobat Reader (pdf) download.<br> I haven't looked at it, & probably wouldn't understand it if I did, but it might help you.<br> <br> <font face="Times New Roman, Times">Dan Moyer</font><br> <br> <font face="Times New Roman, Times">Mark wrote:</font><br> <br> <font size=2>Hi All</font><br> <br> <font size=2>Could anyone point me in the direction of a www resource related to parsing techniques (nothing too heavy - I'm not clever!)</font><br> <br> <font size=2>Thanks</font><br> <br> <font size=2>Mark</font><br> <blockquote type=cite cite> </blockquote></blockquote><br> <br> Joel<br> <br> "<b><i>When the code works perfectly, the program is obsolete</b></i>."<br> <div align="right"> -- "The Gosple According to St. Murphy"</html> --=====================_2125001==_.ALT--
12. Re: Parsing
- Posted by bfurniss <bfurniss at IHUG.CO.NZ> Mar 24, 2000
- 866 views
At 11:02 PM 3/23/00 -0800, you wrote: >Mark, > >You might look at this, http://www.cs.vu.nl/~dick/PTAPG.html >it appears to be a downloadable version of a book, "Parsing Techniques-A Practical Guide". >I'm not sure if it's as simple as you want, and it is about 2meg Acrobat Reader (pdf) download. >I haven't looked at it, & probably wouldn't understand it if I did, but it might help you. > >Dan Moyer > >Mark wrote: > >Hi All > >Could anyone point me in the direction of a www resource related to parsing techniques (nothing too heavy - I'm not clever!) > >Thanks > >Mark > > >Attachment Converted: "C:\EUDORA\ATTACH\ReParsin.htm" Have you seen the file PARR1.txt , posted to this server sometime ago ?
13. Parsing
- Posted by Greg Phillips <i.shoot at REDNECKS.COM> Nov 23, 1999
- 827 views
- Last edited Nov 24, 1999
Hello there, I'm looking for a simple way to read from a text file, replacing certain strings with others. For example: Hello there, my name is [Name]. [Name] would be replaced with "Greg". There is an emphsis an accuracy, and simplicity. There *must* be a simpler way than how I'm doing it. Thanks, Greg Phillips
14. Re: Parsing
- Posted by Robert Craig <rds at ATTCANADA.NET> Nov 23, 1999
- 832 views
- Last edited Nov 24, 1999
------=_NextPart_000_0107_01BF360D.065B8880 charset="iso-8859-1" Greg Phillips writes: > I'm looking for a simple way to read from a text file, > replacing certain strings with others. I've attached a little utility that Junko wrote a long time ago. It will go through a bunch of files, replacing certain strings by other strings. It even makes a backup of the original files to avoid disasters. It doesn't have any user interface - you have to edit the strings and filenames into it. Regards, Rob Craig Rapid Deployment Software http://www.RapidEuphoria.com ------=_NextPart_000_0107_01BF360D.065B8880 name="Replace.ex" Content-Transfer-Encoding: quoted-printable
15. Re: Parsing
- Posted by Raude Riwal <RAUDER at THMULTI.COM> Nov 24, 1999
- 806 views
On linux? sed 's/nametoreplace/newname/g' oldfile > newfile ...sorry too tempting... Riwal Raude rauder at thmulti.com > -----Original Message----- > From: Greg Phillips [SMTP:i.shoot at REDNECKS.COM] > Sent: Wednesday, November 24, 1999 5:15 AM > To: EUPHORIA at LISTSERV.MUOHIO.EDU > Subject: Parsing > > Hello there, > > I'm looking for a simple way to read from a text file, replacing certain > strings with others. > > For example: > Hello there, my name is [Name]. > > [Name] would be replaced with "Greg". > > There is an emphsis an accuracy, and simplicity. There *must* be a > simpler way than how I'm doing it. > > Thanks, > Greg Phillips
16. Re: Parsing
- Posted by Jiri Babor <J.Babor at GNS.CRI.NZ> Nov 25, 1999
- 771 views
Greg Phillips wrote: >I'm looking for a simple way to read from a text file, replacing >certain strings with others. > >For example: Hello there, my name is [Name]. >[Name] would be replaced with "Greg". > >There is an emphsis an accuracy, and simplicity. There *must* be a >simpler way than how I'm doing it. Greg, The attached command line utility is not much different from Junko's tool. Sort of a subset, you might say. It has just one advantage, I can think of, it allows you to search for and replace even strings containing new lines, etc, because it handles input/output files as binaries. It may be faster, because it handles the whole file in a single buffer as against so many lines, but on the other hand, it may be slower, because bigger slices may take longer to manipulate. I just do not know, I have not conducted any speed tests. Enjoy. jiri -- <snip> ------------------------------------------------------------ -- file : replace.ex -- author : jiri babor -- email : jbabor at paradise.net.nz -- project : search & replace -- tool : euphoria 2.1 -- date : 99-11-25 -- version : 1.00 ---------------------------------------------------------------------- -- Usage: ex replace old_text new_text file1 file2 file3 ... -- ---------------------------------------------------------------------- -- Replace all occurances of old_text string with new_text string -- -- in all specified files. -- -- Strings containing spaces must be enclosed in quotation marks! -- ---------------------------------------------------------------------- -- ************** Play safe! Back up your files! ************** -- ---------------------------------------------------------------------- include file.e sequence buffer, cl, files, new_text, old_text procedure help(sequence error_message) puts(1,"Error : " & error_message & "\n") puts(1,"Syntax: ex replace old_text new_text file1 file2 ...\n") puts(1,"Note : enclose text containing spaces in quotation marks.\n") abort(1) end procedure procedure read_file(sequence filename) integer f, len, n f=open(filename,"rb") if f=-1 then help("Couldn't open " & filename & " !\n") end if n=seek(f, -1) -- go to end of input file len=where(f) -- get length of input file in bytes n=seek(f, 0) -- go back to beginning of input file buffer = repeat(0, len) -- init buffer for i=1 to len do buffer[i] = getc(f) -- read file into buffer end for close(f) end procedure -- read_file procedure replace() -- basically same as Junko's integer i, j, lo, ln lo = length(old_text) ln = length(new_text) i = 0 j = match(old_text, buffer) while j do j += i buffer = buffer[1..j-1] & new_text & buffer[j+lo..length(buffer)] i = j+ln-1 j = match(old_text, buffer[i+1..length(buffer)]) end while end procedure procedure write_file(sequence filename) integer f f=open(filename,"wb") -- open output file puts(f, buffer) -- write out close(f) -- close output file end procedure -- write_file -- main ------------------------------------------------------------------------ cl=command_line() if length(cl) < 5 then help("Insufficient number of arguments!") end if old_text = cl[3] new_text = cl[4] files = cl[5..length(cl)] for i=1 to length(files) do read_file(files[i]) replace() write_file(files[i]) end for puts(1, "Done!\n")
17. Re: Parsing
- Posted by Greg Phillips <i.shoot at REDNECKS.COM> Nov 24, 1999
- 766 views
Thanks to both Robert and Jiri! They're exactly what I needed. I had one of those programming stumps, where I knew there's an easier way, but I just could for the life of me figure it out. The way I was doing it, I read in each character. If the character = '[', I then checked where the next ']' was, and then checked the data in between to see if it was the same as any of the words I was looking for. It worked, but it was slow and painful, not to mention ugly. Jiri, your's is slightly faster, when working with files the size I'm using (quite small, 3k maximum), and Junko's blows yours out of the water on larger files (over 500k). Relatively speaking of course. The actual time it takes is almost negligible. I ended up using chunks of Junko's code, but once the program I'm developing reaches a certain point, I think I'll have to haul Jiri's solution out and take a look at it. Thanks again! Greg
18. Re: Parsing
- Posted by jiri babor <jbabor at PARADISE.NET.NZ> Nov 27, 1999
- 774 views
Greg Phillips wrote: >>> Jiri, your's is slightly faster, when working with files the size I'm using (quite small, 3k maximum), and Junko's blows yours out of the water on larger files (over 500k). Relatively speaking of course. The actual time it takes is almost negligible <<< Hi, Greg (and anybody else also interested), I just had a second look at my search-and-replace routine. I eliminated all sequence concatenations from it (which can be veeery slow for larger strings), and now it appears to be significantly faster (about 30%) than Junko's, even for bigger files (over 500 kbytes). The new version can be fetched from my Euphoria page, text section. jiri homepages.paradise.net.nz/~jbabor/euphoria.html
19. Parsing
- Posted by Irv Mullins <irv at ELLIJAY.COM> Oct 24, 1998
- 771 views
When you get data from the command_line, Euphoria parses it nicely, disposing of leading and trailing spaces, etc. Why can we not call parse() ourselves, passing it a string, and getting a sequence of words back? Irv
20. Re: Parsing
- Posted by Robert Craig <rds at EMAIL.MSN.COM> Oct 24, 1998
- 797 views
Irv Mullins writes: > When you get data from the command_line, Euphoria parses > it nicely, disposing of leading and trailing spaces, etc. > Why can we not call parse() ourselves, passing it a string, > and getting a sequence of words back? Here's a routine lifted from euphoria\bin\search.ex function blank_delim(sequence s) -- break up a blank-delimited, \n-terminated string, -- to return a sequence of words sequence list, segment integer i list = {} i = 1 while i < length(s) do while find(s[i], " \t") do i = i + 1 end while if s[i] = '\n' then exit end if segment = "" while not find(s[i], " \t\n") do segment = segment & s[i] i = i + 1 end while list = append(list, segment) end while return list end function Regards, Rob Craig Rapid Deployment Software http://members.aol.com/FilesEu/