I just realized that there is an ambiguity here since I can't seem to
accomplish a pair looking like this:

("key" . (1 2 3)), no matter how I try I get: ("key" (1 2 3)), if the
first one is really impossible then any JSON converter will stumble on
it since it's impossible to know if ["key", [1, 2, 3]] or {"key": [1,
2, 3]} is the desired result.

/Henrik


On Thu, Sep 3, 2009 at 11:20 PM, Henrik Sarvell<hsarv...@gmail.com> wrote:
> First of all, to offload the server from having to build json all the tim=
e.
>
> For me the real issue is not speed in the client, given that premise I
> simply took a wild guess that building the json and then evaluating it
> is a simpler road to take than actually building the composite objects
> right away. For me it doesn't matter if the result is even ten times
> slower as long as I can do as simple a solution as possible, people
> sit on such powerful machines anyway.
>
> Anyway, I've fixed things, incorporating Mateusz changes. However it
> wouldn't work with recognizing single pairs/objects so quotes inside
> keys are still a no no. This is hair splitting though, I don't even
> know if they are legal in the keys. In any case I can't think of a
> situation where I would have a string with quotes in it.
>
> I've updated the article, looks like it's working, the string
> evaluates OK and we can access values in the resulting object/array.
>
> /Henrik
>
>
>
> On Thu, Sep 3, 2009 at 7:55 PM, Tomas Hlavaty<t...@logand.com> wrote:
>> Hi Henrik,
>>
>>> That's exactly what I'm doing, ie stepping recursively, the regex is
>>> just to determine which state to put the parser in. But yes, it looks
>>> like I'm going to have to step through in order to determine type too
>>> if no regex guru shows up :)
>>
>> as Alex suggests, regular expressions in this context are overkill.
>>
>>>> Instead, I would use a simple recursive parser (analog to the Lisp
>>>> reader), which can analyze the expression step by step in a more
>>>> flexible way.
>>
>> Yes. You can simulate peek, char, skip etc. functions in javascript
>> closures and write a recursive parser. =A0I have done this in three
>> cases:
>>
>> 1) Parsing sexp: function parse(S) in http://ondoc.logand.com/ondoc.js
>> =A0 is not complete (dot notation is missing) and needs some
>> =A0 improvements based on the lesson learned from the postscript parser
>> =A0 bellow.
>>
>> =A0 OnDoc http://logand.com/sw/ondoc/index.html uses sexp completely
>> =A0 for communication between client and server. =A0Ideally, I would lik=
e
>> =A0 to replace javascript by client-side picolisp (implemented in
>> =A0 javascript) completely. =A0I think it is feasible and could be
>> =A0 efficient enough. =A0Imagine having persistent symbols/objects
>> =A0 directly accesible in your client-side picolisp application;-)
>>
>> 2) Parsing PDFs in OnDoc: works surprisingly well & fast in picolisp.
>>
>> 3) Parsing postscript: function PsParser() in
>> =A0 http://logand.com/sw/wps/wps.js
>>
>> =A0 WPS http://logand.com/sw/wps/index.html proved to me that
>> =A0 implementing interpreters in javascript is reasonably efficient
>> =A0 although not great for coding things in a tight loop (which is
>> =A0 usually quite little code and could be implemented directly in
>> =A0 javascript, similarly to picolisp falling back to C).
>>
>> I am not sure, why would you need to build json on the client side
>> this way unless you send it to some 3rd party. =A0Json as such is a data
>> transfer format and I guess I need the real objects on the client side
>> and not yet another representation of them.
>>
>> Regards,
>>
>> Tomas
>> --
>> UNSUBSCRIBE: mailto:picol...@software-lab.de?subject=3dunsubscribe
>>
>
-- 
UNSUBSCRIBE: mailto:picol...@software-lab.de?subject=unsubscribe

Reply via email to