hedit.py revision 2632
12632Sstever@eecs.umich.edu# ----------------------------------------------------------------------------- 22632Sstever@eecs.umich.edu# hedit.py 32632Sstever@eecs.umich.edu# 42632Sstever@eecs.umich.edu# Paring of Fortran H Edit descriptions (Contributed by Pearu Peterson) 52632Sstever@eecs.umich.edu# 62632Sstever@eecs.umich.edu# These tokens can't be easily tokenized because they are of the following 72632Sstever@eecs.umich.edu# form: 82632Sstever@eecs.umich.edu# 92632Sstever@eecs.umich.edu# nHc1...cn 102632Sstever@eecs.umich.edu# 112632Sstever@eecs.umich.edu# where n is a positive integer and c1 ... cn are characters. 122632Sstever@eecs.umich.edu# 132632Sstever@eecs.umich.edu# This example shows how to modify the state of the lexer to parse 142632Sstever@eecs.umich.edu# such tokens 152632Sstever@eecs.umich.edu# ----------------------------------------------------------------------------- 162632Sstever@eecs.umich.edu 172632Sstever@eecs.umich.edutokens = ( 182632Sstever@eecs.umich.edu 'H_EDIT_DESCRIPTOR', 192632Sstever@eecs.umich.edu ) 202632Sstever@eecs.umich.edu 212632Sstever@eecs.umich.edu# Tokens 222632Sstever@eecs.umich.edut_ignore = " \t\n" 232632Sstever@eecs.umich.edu 242632Sstever@eecs.umich.edudef t_H_EDIT_DESCRIPTOR(t): 252632Sstever@eecs.umich.edu r"\d+H.*" # This grabs all of the remaining text 262632Sstever@eecs.umich.edu i = t.value.index('H') 272632Sstever@eecs.umich.edu n = eval(t.value[:i]) 282632Sstever@eecs.umich.edu 292632Sstever@eecs.umich.edu # Adjust the tokenizing position 302632Sstever@eecs.umich.edu t.lexer.lexpos -= len(t.value) - (i+1+n) 312632Sstever@eecs.umich.edu 322632Sstever@eecs.umich.edu t.value = t.value[i+1:i+1+n] 332632Sstever@eecs.umich.edu return t 342632Sstever@eecs.umich.edu 352632Sstever@eecs.umich.edudef t_error(t): 362632Sstever@eecs.umich.edu print "Illegal character '%s'" % t.value[0] 372632Sstever@eecs.umich.edu t.skip(1) 382632Sstever@eecs.umich.edu 392632Sstever@eecs.umich.edu# Build the lexer 402632Sstever@eecs.umich.eduimport lex 412632Sstever@eecs.umich.edulex.lex() 422632Sstever@eecs.umich.edulex.runmain() 432632Sstever@eecs.umich.edu 442632Sstever@eecs.umich.edu 45