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/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/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 -~----------~----~----~----~------~----~------~--~---
