Also, )( is unmatched.

Thanks,

-- 
Raul

On Thu, Dec 29, 2016 at 7:57 AM, 'Pascal Jasmin' via Programming
<[email protected]> wrote:
> The core idea,
>
>   +/\ ')(' (2 (] * >) 2 <:@* i.) '(((asdf))'
> 1 2 3 3 3 3 3 2 1
>
> if total doesn't end in 0 its unmatched.  above 0 too many (, below 0 too 
> many ).
>
>  +/\ ')(' (2 (] * >) 2 <:@* i.) '(fff )(asdf)))'
> 1 1 1 1 1 0 1 1 1 1 1 0 _1 _2
>
> behead to last 0, if last token below 0, first unmatched is last _1 position.
>
> if last token > 0, first unmatched is, in beheaded list, first position equal 
> to last token.
>
> um =: ')('&$: : (#`(i:&0 + {: i.~ ] }.~ i:&0)`(_1 i:~ ])@.(*@{:)@:(+/\)@:(2 
> (] * >) 2 <:@* i.))
>
>     um  '(fff )(asdf'
> 6
>   um  '(fff )(asdf)'  NB. return length
> 12
>     um  '(fff )(asdf)))'
> 12
>
> ----- Original Message -----
> From: bill lam <[email protected]>
> To: Programming forum <[email protected]>
> Sent: Wednesday, December 28, 2016 8:11 PM
> Subject: Re: [Jprogramming] unmatched parenthesis
>
> 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
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to