Changeset 24515
- Timestamp:
- 11/20/08 23:57:43 (7 weeks ago)
- Location:
- lang/python/dfareg/branches/PLY200811/dfareg
- Files:
-
- 3 modified
Legend:
- Unmodified
- Added
- Removed
-
lang/python/dfareg/branches/PLY200811/dfareg/__init__.py
r24197 r24515 6 6 """ 7 7 import nfa2dfa 8 import parser 8 from parser import Parser 9 from lexer import Lexer 9 10 10 11 class Regexp(object): … … 15 16 16 17 def _compile(self, debug=False): 17 nfa = parser.parse(self.regexp) 18 # コンパイル 19 lexer_ = Lexer(self.regexp) 20 parser_ = Parser(lexer_) 21 nfa = parser_.expression() 18 22 # 部分集合構成法 19 23 self.dfa = nfa2dfa.nfa2dfa(nfa) -
lang/python/dfareg/branches/PLY200811/dfareg/lexer.py
r24513 r24515 40 40 raise t 41 41 42 lex.lex() 42 class Lexer(object): 43 def __init__(self, regexp): 44 self.lexer = lex.lex() 45 self.lexer.input(regexp) -
lang/python/dfareg/branches/PLY200811/dfareg/parser.py
r24513 r24515 14 14 15 15 def p_subexpr1(p): 16 'subexpr : s eq OPE_UNION subexpr'16 'subexpr : subexpr OPE_UNION seq' 17 17 p[0] = Union(p[1], p[3]) 18 18 … … 30 30 31 31 def p_subseq1(p): 32 'subseq : s tar subseq'32 'subseq : subseq star' 33 33 p[0] = Concat(p[1], p[2]) 34 34 … … 56 56 raise Exception("syntax error") 57 57 58 yacc.yacc() 59 60 61 from nfabuilder import Context 62 def parse(regexp):63 # コンパイル64 node = yacc.parse(regexp)65 # 構文木から変更66 context = Context()67 fragment = node.assemble(context)68 return fragment.build()58 class Parser(object): 59 def __init__(self, lexer): 60 self.yacc = yacc.yacc() 61 self.lexer = lexer 62 def expression(self): 63 # コンパイル 64 node = self.yacc.parse(lexer=self.lexer.lexer) 65 # 構文木から変更 66 context = Context() 67 fragment = node.assemble(context) 68 return fragment.build()
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)