Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion Source positions, ie line and column numbers
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Mihai Călin Bazon  
View profile  
 More options Aug 13 2011, 5:03 am
From: Mihai Călin Bazon <mihai.ba...@gmail.com>
Date: Sat, 13 Aug 2011 12:03:44 +0300
Local: Sat, Aug 13 2011 5:03 am
Subject: Re: Source positions, ie line and column numbers

On Sat, Aug 13, 2011 at 12:50 AM, johnjbarton
<johnjbar...@johnjbarton.com>wrote:

> Hi. I need to track the positions of (at least) functions in the
> source.

> Currently uglify has the embed_tokens option which replaces the syntax
> tree node name with a NodeWithToken object. The object has .name
> giving the node name, plus .start and .end objects giving the boundary
> of the corresponding source token.

... and a toString() method, which means ast[0] == "defun" will work both if
ast[0] is a NodeWithToken or a string.  But this is an ugly hack, of
course.  UglifyJS AST processors used to work with embed_tokens, but I'm not
sure this is the case anymore (using „switch” in some places, and that
involves strict equality).

> On my fork I made a small change to move the NodeWithToken from ast[0]
> to ast.loc. That way my parse tree analysis code written with
> embed_tokens off works with embed_tokens true.

Does this mean that you turned all nodes into objects instead of arrays?
Seems like a comprehensive change...

> Of course my test is very minimal. Does any one know whether this
> should work or if not what problems it may cause?  Or is there a way
> to achieve this goal without changing the parser source? (I guess I
> would parse with embed_tokens true and walk the tree to convert from
> inline to .loc versions.)

I can't be sure about how safe your change is.  But indeed, it would be
rather trivial to write an AST processor that walks the tree and returns
object nodes instead of arrays.  I'd do this rather than modifying the
parser.

Cheers,
--
Mihai Bazon,
http://mihai.bazon.net/blog


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.