summaryrefslogtreecommitdiff
path: root/example/yply/ylex.py
diff options
context:
space:
mode:
Diffstat (limited to 'example/yply/ylex.py')
-rw-r--r--example/yply/ylex.py91
1 files changed, 49 insertions, 42 deletions
diff --git a/example/yply/ylex.py b/example/yply/ylex.py
index 84f2f7a..a3efe8e 100644
--- a/example/yply/ylex.py
+++ b/example/yply/ylex.py
@@ -9,91 +9,105 @@ sys.path.append("../..")
from ply import *
tokens = (
- 'LITERAL','SECTION','TOKEN','LEFT','RIGHT','PREC','START','TYPE','NONASSOC','UNION','CODE',
- 'ID','QLITERAL','NUMBER',
+ 'LITERAL', 'SECTION', 'TOKEN', 'LEFT', 'RIGHT', 'PREC', 'START', 'TYPE', 'NONASSOC', 'UNION', 'CODE',
+ 'ID', 'QLITERAL', 'NUMBER',
)
-states = (('code','exclusive'),)
+states = (('code', 'exclusive'),)
-literals = [ ';', ',', '<', '>', '|',':' ]
+literals = [';', ',', '<', '>', '|', ':']
t_ignore = ' \t'
-t_TOKEN = r'%token'
-t_LEFT = r'%left'
-t_RIGHT = r'%right'
-t_NONASSOC = r'%nonassoc'
-t_PREC = r'%prec'
-t_START = r'%start'
-t_TYPE = r'%type'
-t_UNION = r'%union'
-t_ID = r'[a-zA-Z_][a-zA-Z_0-9]*'
+t_TOKEN = r'%token'
+t_LEFT = r'%left'
+t_RIGHT = r'%right'
+t_NONASSOC = r'%nonassoc'
+t_PREC = r'%prec'
+t_START = r'%start'
+t_TYPE = r'%type'
+t_UNION = r'%union'
+t_ID = r'[a-zA-Z_][a-zA-Z_0-9]*'
t_QLITERAL = r'''(?P<quote>['"]).*?(?P=quote)'''
-t_NUMBER = r'\d+'
+t_NUMBER = r'\d+'
+
def t_SECTION(t):
r'%%'
- if getattr(t.lexer,"lastsection",0):
- t.value = t.lexer.lexdata[t.lexpos+2:]
- t.lexer.lexpos = len(t.lexer.lexdata)
+ if getattr(t.lexer, "lastsection", 0):
+ t.value = t.lexer.lexdata[t.lexpos + 2:]
+ t.lexer.lexpos = len(t.lexer.lexdata)
else:
- t.lexer.lastsection = 0
+ t.lexer.lastsection = 0
return t
# Comments
+
+
def t_ccomment(t):
r'/\*(.|\n)*?\*/'
t.lexer.lineno += t.value.count('\n')
t_ignore_cppcomment = r'//.*'
+
def t_LITERAL(t):
- r'%\{(.|\n)*?%\}'
- t.lexer.lineno += t.value.count("\n")
- return t
+ r'%\{(.|\n)*?%\}'
+ t.lexer.lineno += t.value.count("\n")
+ return t
+
def t_NEWLINE(t):
- r'\n'
- t.lexer.lineno += 1
+ r'\n'
+ t.lexer.lineno += 1
+
def t_code(t):
- r'\{'
- t.lexer.codestart = t.lexpos
- t.lexer.level = 1
- t.lexer.begin('code')
+ r'\{'
+ t.lexer.codestart = t.lexpos
+ t.lexer.level = 1
+ t.lexer.begin('code')
+
def t_code_ignore_string(t):
r'\"([^\\\n]|(\\.))*?\"'
+
def t_code_ignore_char(t):
r'\'([^\\\n]|(\\.))*?\''
+
def t_code_ignore_comment(t):
- r'/\*(.|\n)*?\*/'
+ r'/\*(.|\n)*?\*/'
+
def t_code_ignore_cppcom(t):
- r'//.*'
+ r'//.*'
+
def t_code_lbrace(t):
r'\{'
t.lexer.level += 1
+
def t_code_rbrace(t):
r'\}'
t.lexer.level -= 1
if t.lexer.level == 0:
- t.type = 'CODE'
- t.value = t.lexer.lexdata[t.lexer.codestart:t.lexpos+1]
- t.lexer.begin('INITIAL')
- t.lexer.lineno += t.value.count('\n')
- return t
+ t.type = 'CODE'
+ t.value = t.lexer.lexdata[t.lexer.codestart:t.lexpos + 1]
+ t.lexer.begin('INITIAL')
+ t.lexer.lineno += t.value.count('\n')
+ return t
-t_code_ignore_nonspace = r'[^\s\}\'\"\{]+'
+t_code_ignore_nonspace = r'[^\s\}\'\"\{]+'
t_code_ignore_whitespace = r'\s+'
t_code_ignore = ""
+
def t_code_error(t):
raise RuntimeError
+
def t_error(t):
print "%d: Illegal character '%s'" % (t.lexer.lineno, t.value[0])
print t.value
@@ -103,10 +117,3 @@ lex.lex()
if __name__ == '__main__':
lex.runmain()
-
-
-
-
-
-
-