Hello Alex,

I'm not sure what you mean with 'render'? Anywhere we can see the code
you currently have for function declarations and instantiations?

Dennis



Alex_Gaynor wrote:

>I've made a lot of progress, specifically I've implemented if, elif,
>and else statements(these were surprisingly easy), and now I've
>implemented function definitions, which seem to work, the way I
>implemented it was to render the asts with just the context they are
>called with, however this prevents even basic things like recursion,
>so my question, what would be the best way to implement scoping, my
>goal is to just have global, and local scope.
>
>On Oct 13, 3:10 pm, Alex_Gaynor <[EMAIL PROTECTED]> wrote:
>  
>
>>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/andgettingthat 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