I've rewritten all my parse rules to be way more explicit and it's working way better now, thanks! Which features to implement next... :P
On Oct 13, 1:06 pm, Alex_Gaynor <[EMAIL PROTECTED]> wrote: > That type of thing is definately not meant to be allowed, I probably > need to review/rewrite the parse rules, as you're correct, the > currrent division of statements and expressions is ambigious at best, > and it's probably causing lots of problems that won't be obvious. > > On Oct 13, 2:56 am, "D.Hendriks (Dennis)" <[EMAIL PROTECTED]> wrote: > > > Hello Alex, > > > > 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. > > > This kind of output can still be useful. It gives you insight in what > > the parser is doing step by step. That, together with the generated > > parser.out file should give enough information to understand why it > > doesn't work the way you want it to work... > > > One other thing, it looks to me like your syntax allows 'a < b += 5'. Is > > this what you want? Maybe statements and expressions should be > > separated completely? > > > Dennis > > > Alex_Gaynor wrote: > > >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/andgetting 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/pa... > > >(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 -~----------~----~----~----~------~----~------~--~---
