Path: csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!news.misty.com!news.iecc.com!.POSTED!nerds-end From: James Harris Newsgroups: comp.compilers Subject: Re: Compiling expressions Date: Sun, 6 Jan 2013 00:57:52 -0800 (PST) Organization: Compilers Central Lines: 21 Sender: johnl@iecc.com Approved: comp.compilers@iecc.com Message-ID: <13-01-019@comp.compilers> References: <12-12-035@comp.compilers> <13-01-013@comp.compilers> NNTP-Posting-Host: news.iecc.com Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Trace: leila.iecc.com 1357496391 20599 64.57.183.58 (6 Jan 2013 18:19:51 GMT) X-Complaints-To: abuse@iecc.com NNTP-Posting-Date: Sun, 6 Jan 2013 18:19:51 +0000 (UTC) Keywords: parse Posted-Date: 06 Jan 2013 13:19:51 EST X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:842 On Jan 3, 9:33 pm, James Harris wrote: A small correction was needed, as follows, as I had omitted the loop- out condition. > function value_parse(op1) > v1 = value() //identifier or literal > while true > op2 = current token or dummy end of expression > if lparen //parens of a function call or similar > v1 = args_parse(op2) > consume rparen > else if prec(op2) > prec(op1) > if incompatible(op1, op2) > raise "incompatible - grouping parens needed" > v1 = node(POSTFIX_OP, v1) else break > return v1 James