Example #1
0
def parse(fn):
    import objjtokenizer
    l = ObjJLexer()
    l.build()
    l.test(objjtokenizer.cpp_and_open(fn))
    return l.classes
Example #2
0
        '''method_args : method_part
                       | method_args method_part'''
        if(len(p) == 2):
            p[0] = {
                'selector': p[1][0],
                'args': [ (p[1][1], p[1][2]) ],
            }
        else:
            p[1]['selector'] += p[2][0]
            p[1]['args'].append((p[2][1], p[2][2]))
            p[0] = p[1]
    
    def p_method_part(self, p):
        'method_part : SELIDENTIFIER BRACE_OPEN IDENTIFIER BRACE_CLOSE IDENTIFIER'
        p[0] = (p[1], p[3], p[5])
    
    def p_error(self, p):
        print "Syntax error in input:",p
    
if __name__ == '__main__':
    import sys
    if len(sys.argv) == 1:
        tgt = 'Foundation/CPArray.j'
    else:
        tgt = sys.argv[1]
    l = ObjJLexer()
    l.build()
    l.test(objjtokenizer.cpp_and_open(tgt))
    for c in l.classes:
        l.print_class(c)