I've started to implement ASTs as an intermediate representation, however I'm having a problem, I'm trying to do run this code: http://dpaste.com/83715/ and getting that output(the paste has the code I'm trying to run, the final result of the parse, and the tokens). My parse rules are here: http://github.com/alex/alex-s-language/tree/local%2Fast/alexs_lang/parser.py (you can also see teh asts and token code as well). The actual code to create that output is here: http://dpaste.com/83717/ . I'm a) unsure of why I'm getting the synax error, it should parse fine, since assignment is an epxression), and b) I want the result of parser.parse() to be the complete ASTs, how would I set it up to return the full tree.
On Oct 9, 9:05 am, Alex_Gaynor <[EMAIL PROTECTED]> wrote: > Thanks, that makes sense, not sure how i missed that in the docs. Now > I just need to figure out the multiline/if statements. > > On Oct 9, 2:12 am, "D.Hendriks (Dennis)" <[EMAIL PROTECTED]> wrote: > > > Hello Alex, > > > both the t_AND and the t_NAME rule match the string 'and' (without the > > quotes). Since t_AND was previously a string, and t_NAME a function, > > t_NAME took precedence (seehttp://www.dabeaz.com/ply/ply.html, section > > 3.3). You now changed them to both be functions. Then the t_AND takes > > precedence (it is first in the file). Anyway, the same section 3.3 > > explains you should not use rules for and/or etc, but include them in > > the identifier rule (t_NAME in your case). > > > You could probably have seen this, if you would have called the > > parse(...) function with debug=2 parameter. This outputs debugging > > information during parsing. It shows the tokens scanned, parser state, > > etc. You would have seen that it scans a NAME tokens instead of an AND > > token... > > > Good luck, > > Dennis > > > Alex_Gaynor wrote: > > >I was able to fix the 'and' 'or' 'not' issue by turning their > > >definitions into functions, instead of just strings, not sure why that > > >fixed it :/ > > > >On Oct 7, 7:54 pm, Alex_Gaynor <[EMAIL PROTECTED]> wrote: > > > >>I was able to succesfully implement True and False by making them > > >>tokens(I do want them to be reserved ala py3k), so thanks for the help > > >>with that! I am also looking over the things on indentation, although > > >>I suspect that will be something that goes in later. Right now I am > > >>having some issue implementing 'and' 'or' and 'not'. Right now I have > > >>them implemented the same way I do other unary and binary operators > > >>which I suspect isn't working. Right now whenever I try True or > > >>False, or not True, or True and False I get a syntax error, and I'm > > >>not sure what causes this. All my code is > > >>here:http://github.com/alex/alex-s-language/tree/master > > > >>On Oct 7, 6:59 pm, Bruce Frederiksen <[EMAIL PROTECTED]> wrote: > > > >>>If you make True/False tokens, that generally means that they are > > >>>reserved words in your language. That means that nobody can use them > > >>>for other purposes. > > > >>>If you want to let people use the words "True" and "False" for other > > >>>purposes, then you probably don't want them to be tokens. In this case, > > >>>you will probably end up doing a lookup at runtime, which might find > > >>>some other value. > > > >>>In python 2.5, for example, you can use True and False for other > > >>>purposes: > > > >>>def False(): print "hi mom!" > > > >>>is OK. But this becomes illegal in python 3.0. > > > >>>I've attached a scanner the does indenting ala python (i.e., the > > >>>programmer can indent any amount so long as they line up). > > > >>>-bruce > > > >>>Alex_Gaynor wrote: > > > >>>>I'm looking to implement a boolean type in my language, where exactly > > >>>>should I do this? Should I make True and False both be tokens, and > > >>>>just set t.value = True/False. Or should the parser handle them? > > > >>>>Also, how would I go about implementing a language that uses indent/ > > >>>>dedent for blocks(ala python)? > > > >>>>Alex > > > >>> scanner.py > > >>>19KViewDownload --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "ply-hack" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/ply-hack?hl=en -~----------~----~----~----~------~----~------~--~---
