psychoParser.py :  » Game-2D-3D » PsychoPy » PsychoPy-0.96.02 » PsychoPyIDE » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Game 2D 3D » PsychoPy 
PsychoPy » PsychoPy 0.96.02 » PsychoPyIDE » psychoParser.py
#python text parser
# this is really just for the purpose of constructing code analysis in python scripts

import pyclbr, tokenize

#~ xx = pyclbr.readmodule_ex('psychopy.visual')
#~ #xx = pyclbr.tokenize('psychopy')
#~ print xx['makeRadialMatrix'].__doc__

class tokenBuffer:
    #simple buffer to provide mechanism to step backwards through previous tokens
    def __init__(self, token, prev):
        self.tok = token
        self.prev = prev
    
def getTokensAndImports(buffer):
    #~ f = open(filename, 'r')
    #~ gen=tokenize.generate_tokens(f.readline)
    gen=tokenize.generate_tokens(buffer.readline)
    importLines=[]
    equalLines = {}
    definedTokens = {}
    prev=None
    for token in gen:        
        if token[1]=='import': 
            importLines.append(token[4].replace('\r','')) #runs any line that contains the word import
        elif token[1]=='=': 
            equalLines[token[2][0]]=token[4]
            defineStr = ''
            prevTok = prev
            
            #fetch the name of the object (
            while prevTok is not None:
                if prevTok.tok[0]!=1 and prevTok.tok[1]!='.':
                    prevTok=None#we have the full name
                else:
                    defineStr = prevTok.tok[1]+defineStr
                    prevTok = prevTok.prev
            
            #do we have that token already?
            if defineStr in definedTokens.keys():
                continue
            else:
                #try to identify what new token =
                definingStr=''         
                while True:#fetch the name of the object being defined
                    nextTok = gen.next()
                    if nextTok[0]!=1 and nextTok[1]!='.':
                        break #we have the full name
                    else:
                        definingStr += nextTok[1]
                definedTokens[defineStr] = {'is':definingStr}
                
        thisToken = tokenBuffer(token, prev)
        prev=thisToken
    
    return importLines, definedTokens
    
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.