thank for your congratulations, because at times I fear I ask too obvious
questions. I have to say I find this parsing very complex but very
fascinating too :) Time to experiment with the visitor.

On Fri, Jan 30, 2015 at 11:49 PM, Thierry Goubier <thierry.goub...@gmail.com
> wrote:

>
>
> 2015-01-30 14:04 GMT+01:00 kilon alios <kilon.al...@gmail.com>:
>
>> Ok thanks for the info, I am still however curious about these "tests"
>> are just tests (which may or may not happen) that determine the AST, for
>> example which node to use ?
>>
>
> 'tests' is just there because, in the grammar, there is this at a certain
> point:
>
> testlist:
>     test 'test' "," testlist
>     | test 'test' comma_opt
>     ;
>
> I have named this use of test 'test', so SmaCC has deduced that testlist
> will be a list of test(s) nodes (or maybe other stuff such as atoms,
> depending on the productions for test).. so, SmaCC, in each rule where
> testlist is found, it will add a 'tests' instance variable.
>
> So, basically, the grammar rules explain how each node can be decomposed
> in sub-nodes, and the additional annotations (the 'test' naming and the
> {{}} or {{}}) drive how the classes for the nodes you want to keep are
> generated. In that testlist case, no node will be generated, but everywhere
> testlist appear on the right of the rule, then it will add a 'tests'
> instance variable.
>
>
>>
>> Or are they tests related to unit testing class PythonParserTests ?
>>
>
> Not at all :)
>
>
>>
>> Also you said I need to use the visitor created by PythonParser I assume
>> you mean PyRootNodeVisitor ? Just as it is explained in the AST chapter of
>> the documentation.
>>
>> In my case this simple python list will need me to subclass it and
>> override method visitListmaker , the aListmaker passed as argument to the
>> method should I assume it is PyListmakerNode ?
>>
>
> In my experience, what you need to do is you have a look at the ast
> generated and see if you can recognize the elements. From what I see in
> your simple example, the key to your list is that PyAtomNode instance with
> something in list. Once you have that, you know that you need to visit
> PyAtomNode (and check that it has the [ ] tokens).
>
> Looking into what is listmaker in atom in the grammar (congratulations by
> the way, you have seen it :) ), you'll see that it creates a listmaker node
> only in the first case: test followed by a list_for, otherwise it falls
> back to testlist...
>
> Thierry
>
>
>
>>
>> On Fri, Jan 30, 2015 at 10:50 AM, Thierry Goubier <
>> thierry.goub...@gmail.com> wrote:
>>
>>> Hi kilon,
>>>
>>> The tests instance variable is linked to the python grammar: top level
>>> items in an expression are probably tests, and, through the grammar, tests
>>> can be just atoms.
>>>
>>> So the tests instance variable doesn't means it is testing anything :)
>>>
>>> Thierry
>>> Le 30 janv. 2015 09:23, "kilon alios" <kilon.al...@gmail.com> a écrit :
>>>
>>> Ok so I tried to parse a very simple list like
>>>>
>>>> [ 67,12342,5 ]
>>>>
>>>> using Parse and explore , I can find these number by following this AST
>>>> (for example 67)
>>>>
>>>> PyFileInputNode>>statements: -> 1: PySimpleStmNode>>stmts: -> 1:
>>>> PyExprStmtNode>>tests: ->1: PyPowerNode>>atom: -> PyAtomNode>>list: -> 1:
>>>> PyPowerNode>>atom: -> PyPowerNode>>numberToken -> numberToken>>value -> 67
>>>>
>>>> quite a structure, but the one thing I dont get is "tests" , why
>>>> "tests" ?
>>>>
>>>> Does it tests something and if yes what ?
>>>>
>>>
>>
>

Reply via email to