Adding gem5 source to svn.
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1819 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
48
simulators/gem5/ext/ply/example/hedit/hedit.py
Normal file
48
simulators/gem5/ext/ply/example/hedit/hedit.py
Normal file
@ -0,0 +1,48 @@
|
||||
# -----------------------------------------------------------------------------
|
||||
# hedit.py
|
||||
#
|
||||
# Paring of Fortran H Edit descriptions (Contributed by Pearu Peterson)
|
||||
#
|
||||
# These tokens can't be easily tokenized because they are of the following
|
||||
# form:
|
||||
#
|
||||
# nHc1...cn
|
||||
#
|
||||
# where n is a positive integer and c1 ... cn are characters.
|
||||
#
|
||||
# This example shows how to modify the state of the lexer to parse
|
||||
# such tokens
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
import sys
|
||||
sys.path.insert(0,"../..")
|
||||
|
||||
|
||||
tokens = (
|
||||
'H_EDIT_DESCRIPTOR',
|
||||
)
|
||||
|
||||
# Tokens
|
||||
t_ignore = " \t\n"
|
||||
|
||||
def t_H_EDIT_DESCRIPTOR(t):
|
||||
r"\d+H.*" # This grabs all of the remaining text
|
||||
i = t.value.index('H')
|
||||
n = eval(t.value[:i])
|
||||
|
||||
# Adjust the tokenizing position
|
||||
t.lexer.lexpos -= len(t.value) - (i+1+n)
|
||||
|
||||
t.value = t.value[i+1:i+1+n]
|
||||
return t
|
||||
|
||||
def t_error(t):
|
||||
print("Illegal character '%s'" % t.value[0])
|
||||
t.lexer.skip(1)
|
||||
|
||||
# Build the lexer
|
||||
import ply.lex as lex
|
||||
lex.lex()
|
||||
lex.runmain()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user