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

Reply via email to