[jawsscripts] Re: One of my wilder debugging discoveries

  • From: Soronel Haetir <soronel.haetir@xxxxxxxxx>
  • To: jawsscripts@xxxxxxxxxxxxx
  • Date: Thu, 21 Nov 2013 12:55:54 -0900

There's not really a point to having a line continuation character in
jaws script because in jaws script newline is not any sort of
statement terminator.  Newline is a symbol terminator but you don't
need a continuation character to take advantage of that.

On 11/21/13, John Martyn <johnrobertmartyn@xxxxxxxxx> wrote:
> What I meant is the < symbol will continue the line even if there is a
> carriage return but it happens on the next line instead of at the end of
> the
> previous line.
> John
>
> -----Original Message-----
> From: jawsscripts-bounce@xxxxxxxxxxxxx
> [mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of Doug Lee
> Sent: Thursday, November 21, 2013 1:25 PM
> To: jawsscripts@xxxxxxxxxxxxx
> Subject: [jawsscripts] Re: One of my wilder debugging discoveries
>
> This and the previous message from you confuse me a bit. The "<" was from a
> diff program. It was not meant to be part of my code at all.
>
> On Thu, Nov 21, 2013 at 12:25:22PM -0700, John Martyn wrote:
> I just figured it out. The < sign is much like the period in PHP when you
> want a carriage return but don't want to break functionality. What is the >
> sign for then?
> John
>
> -----Original Message-----
> From: jawsscripts-bounce@xxxxxxxxxxxxx
> [mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of Doug Lee
> Sent: Thursday, November 21, 2013 9:28 AM
> To: jawsscripts@xxxxxxxxxxxxx
> Subject: [jawsscripts] One of my wilder debugging discoveries
>
> This just seems worth writing down for its oddity...
>
> I was debugging a 23,000-line script this morning. Recently I started
> getting really strange behavior when trying to assign collections to
> variables in part of the code: I started getting the integer 1 in place of
> a
> collection, with no obvious reason. I tried myriad solutions and debugging
> tricks, sayString/sayInteger lines, etc.
>
> Then I added a sayInteger at a particular point in the code, and presto,
> the
> thing started working! "How strange," I thought, "that shouldn't affect
> anything, it's not making an assignment..."
>
> So I took the new line out, and the odd wrong behavior resumed.
>
> On reading more carefully, I found that the next line after the sayInteger
> I
> had put in began with a spurious less-than sign (<).
> Apparently I had mistakenly copied that line out of a diff output file, in
> which less-than signs indicate removed lines and greater-than signs
> indicate
> added ones.
>
> I should mention here two things: I read with punctuation off, and in my
> actual code files, which are sometimes something like templates, I use a
> double less-than to indicate a translatable symbol; so I am accustomed to
> ignoreing less-than signs as I read anyway.
>
> The previous line in the file was an assignment like
>
> cLocation = locations[index]
>
> in other words, an assignment from an array to a collection variable. The
> line after that was a plain old function call, we'll say MyFunc(). So the
> code before my sayInteger was added looked like
>
> cLocation = locations[index]
> < myFunc()
>
> The JAWS script compiler treats end-of-line no different than a space most
> of the time, so it read the above two lines like
>
> cLocation = locations[index] < myFunc()
>
> which actually means, assign to cLocations the integer (boolean) value of
> the question, is locations[index] less than the return value of myFunc()?
>
> It so happens that myFunc() returns True, which as an integer is 1.  I
> guess
> the integer value of the collection at locations[index] was 0, so the above
> question's result was True, which is also a 1 when taken as an integer.
> This is how cLocation was getting set to 1 instead of a collection.
>
> Now, when I put the sayInteger call in, why did I get a different result?
> The code would then look like
>
> cLocation = locations[index]
> sayInteger(...)
> < myFunc()
>
> Now the spurious less-than sign doesn't affect the assignment. JAWS will
> actually make the comparison
>
> sayInteger(...) < myFunc()
>
> but then discard it because it's not being assigned to anything.
> This had the net effect of making my cLocation assignment work again.
>
> And they wonder why it is said we'll spend 90% of our time debugging.  :-)
>
>
>
> --
> Doug Lee, Senior Accessibility Programmer SSB BART Group -
> Accessibility-on-Demand mailto:doug.lee@xxxxxxxxxxxxxxxx
> http://www.ssbbartgroup.com "While they were saying among themselves it
> cannot be done, it was done." --Helen Keller __________o?=
>
> View the list's information and change your settings at
> http://www.freelists.org/list/jawsscripts
>
> __________???
>
> View the list's information and change your settings at
> http://www.freelists.org/list/jawsscripts
>
> --
> Doug Lee, Senior Accessibility Programmer SSB BART Group -
> Accessibility-on-Demand mailto:doug.lee@xxxxxxxxxxxxxxxx
> http://www.ssbbartgroup.com "While they were saying among themselves it
> cannot be done, it was done." --Helen Keller __________o?=
>
> View the list's information and change your settings at
> http://www.freelists.org/list/jawsscripts
>
> __________�
>
> View the list's information and change your settings at
> http://www.freelists.org/list/jawsscripts
>
>


-- 
Soronel Haetir
soronel.haetir@xxxxxxxxx
__________�

View the list's information and change your settings at 
http://www.freelists.org/list/jawsscripts

Other related posts: