> ... 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
