just an idea (untested) using iterations 1. starting from left (or right as Linda) 2. find the first (innermost) matched pair 3. eliminate the pair 4. repeat from 1 until no more match.
rremaining parentheses are umatched ones. On 28 Dec, 2016 12:54 pm, "Raul Miller" <[email protected]> wrote: > I'm not sure if it's even easy to to in J, I'll have to think about it. > > Or maybe someone else can come up with an implementation? > > Thanks, > > -- > Raul > > > On Tue, Dec 27, 2016 at 8:59 PM, bill lam <[email protected]> wrote: > >> ... instead implement "all > >> unmatched parenthesis", at least hypothetically. > > > > this is a good idea, time taken at runtime should be the same > > as first unmatched, is it easy to do in C? > > > > Вт, 27 дек 2016, Raul Miller написал(а): > >> I think we would call that the "last unmatched parenthesis". > >> > >> Certainly implementable, but it's not the only J-like approach. We do > >> have left-to-right concepts in J (for example, NB. appears on the left > >> of its comment, and conjunction arguments get bound left-to-right -- > >> with nouns a, b and c, a@b@c is a@(b@c) and not (a@b)@c even though > >> a-b-c is a-(b-c)). For that matter, we could instead implement "all > >> unmatched parenthesis", at least hypothetically. > >> > >> Anyways, I do see what you are saying, but I don't know what > >> importance to attach to it. > >> > >> Thanks, > >> > >> -- > >> Raul > >> > >> > >> On Tue, Dec 27, 2016 at 12:06 PM, Linda A Alvord > >> <[email protected]> wrote: > >> > It seems to me that this is in the spirit o J. Many uses of @ and > other symbols indicate to me that the writer is "thinking" from left to > right. If the coding of J is essentially from right to left your order > feels right to me. > >> > > >> > Linda > >> > > >> > -----Original Message----- > >> > From: Programming [mailto:[email protected]] > On Behalf Of bill lam > >> > Sent: Monday, December 26, 2016 7:39 PM > >> > To: Programming forum > >> > Subject: Re: [Jprogramming] unmatched parenthesis > >> > > >> > '((()' > >> > shouldn't the first unmatched at index 1 instead of 0? ie use i: > instead of i. for unmatched (. > >> > > >> > > >> > > >> > > >> > On 27 Dec, 2016 8:31 am, "Raul Miller" <[email protected]> wrote: > >> > > >> > Ah, good point - I was not properly handling the case where the first > unmatched parenthesis was the first character on the line. > >> > > >> > Also, the close script line is something of a special case, but it's > easy enough to check for: > >> > > >> > With that fix and this change, I'd do something like this: > >> > > >> > firstunmatched=:3 :0 > >> > if. ')' -:&(-.&' ') y do. #y return. end. > >> > q=. unquoted=. -.~:/\y='''' > >> > c=. uncommented=. -. +./\ q * 'NB.' E. y > >> > n=. parendepth=. +/\q*c*-/'()'=/y > >> > if. 0 < {: n do. > >> > (n i. _1) <. 1 i:~0 1 E. 0,n > >> > else. > >> > n i. _1 > >> > end. > >> > ) > >> > > >> > Thanks, > >> > > >> > -- > >> > Raul > >> > > >> > > >> > On Mon, Dec 26, 2016 at 7:05 PM, bill lam <[email protected]> > wrote: > >> >> your verb seemed to find unmatched ) only, e.g. failed for '(()' or > >> >> '(()(' > >> >> also a line of ) and whitespace belongs to class 'close definition' > >> >> and should not be flagged as mismatch. > >> >> > >> >> > >> >> On 27 Dec, 2016 2:42 am, "Raul Miller" <[email protected]> > wrote: > >> >> > >> >>> I'm not sure what you mean by "containing control words" but code > >> >>> readability issues are usually a call for better code. > >> >>> > >> >>> For this, perhaps (warning: lightly tested code): > >> >>> > >> >>> firstunmatched=:3 :0 > >> >>> q=. unquoted=. -.~:/\y='''' > >> >>> c=. uncommented=. -. +./\ q * 'NB.' E. y > >> >>> n=. parendepth=. +/\q*c*-/'()'=/y > >> >>> if. 0 < {: n do. > >> >>> (n i. _1) <. 1+1 i:~0 1 E. n > >> >>> else. > >> >>> n i. _1 > >> >>> end. > >> >>> ) > >> >>> > >> >>> In other words: ignoring quoted and commented parenthesis, look for > >> >>> the first occurrence of either an unbalanced right parenthesis or an > >> >>> unbalanced left parenthesis. > >> >>> > >> >>> Let me know, though, if you see any flaws in this implementation. > >> >>> > >> >>> Thanks, > >> >>> > >> >>> -- > >> >>> Raul > >> >>> > >> >>> > >> >>> On Mon, Dec 26, 2016 at 12:57 PM, Henry Rich <[email protected]> > >> > wrote: > >> >>> > I don't think it is reasonable to treat ')' and 'NB.' as > containing > >> >>> control > >> >>> > words. It makes the code very hard to read. > >> >>> > > >> >>> > Showing the mismatched parenthesis is important enough that it > >> >>> > might be better to have it even with this deficiency, but it IS a > >> >>> > deficiency and should be treated as a bug to be fixed someday. > >> >>> > > >> >>> > Henry Rich > >> >>> > > >> >>> > On 12/26/2016 11:48 AM, bill lam wrote: > >> >>> >> > >> >>> >> I double checked with j602, it has no problem in high lighting > the > >> >>> >> unmatched )( in > >> >>> >> > >> >>> >> a '+' ((mno - rst) % b NB. )unmatched paren > >> >>> >> ^ > >> >>> >> a '+' ((mno - rst) % b ')' NB. )unmatched paren > >> >>> >> ^ > >> >>> >> and > >> >>> >> > >> >>> >> '(' (=:)) > >> >>> >> ^ > >> >>> >> But this is matched and is correct a '+' ((mno - rst) % b ')') > NB. > >> >>> >> )unmatched paren > >> >>> >> > >> >>> >> I think it is reasonable to omit this pattern for syntax > >> >>> >> high-lighting. > >> >>> >> > >> >>> > > >> >>> > ------------------------------------------------------------ > ------- > >> >>> > --- For information about J forums see > >> >>> > http://www.jsoftware.com/forums.htm > >> >>> ------------------------------------------------------------ > --------- > >> >>> - For information about J forums see > >> >>> http://www.jsoftware.com/forums.htm > >> >> ------------------------------------------------------------ > ---------- > >> >> For information about J forums see http://www.jsoftware.com/ > forums.htm > >> > ------------------------------------------------------------ > ---------- > >> > For information about J forums see http://www.jsoftware.com/ > forums.htm > >> > ------------------------------------------------------------ > ---------- > >> > For information about J forums see http://www.jsoftware.com/ > forums.htm > >> > > >> > ------------------------------------------------------------ > ---------- > >> > For information about J forums see http://www.jsoftware.com/ > forums.htm > >> ---------------------------------------------------------------------- > >> For information about J forums see http://www.jsoftware.com/forums.htm > > > > -- > > regards, > > ==================================================== > > GPG key 1024D/4434BAB3 2008-08-24 > > gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 > > gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3 > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
