diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2011-05-27 15:44:23 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2011-05-27 15:44:23 +0000 |
commit | 66765100f4257159622cefe57bed50125a5ad017 (patch) | |
tree | a88ee23bb194eb91f0ebb2d9b23ff423e3ea8e37 /python/qpid/lexer.py | |
parent | 1aeaa7b16e5ce54f10c901d75c4d40f9f88b9db6 (diff) | |
parent | 88b98b2f4152ef59a671fad55a0d08338b6b78ca (diff) | |
download | qpid-python-rajith_jms_client.tar.gz |
Creating a branch for experimenting with some ideas for JMS client.rajith_jms_client
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/rajith_jms_client@1128369 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/qpid/lexer.py')
-rw-r--r-- | python/qpid/lexer.py | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/python/qpid/lexer.py b/python/qpid/lexer.py deleted file mode 100644 index ec28bbb91a..0000000000 --- a/python/qpid/lexer.py +++ /dev/null @@ -1,118 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# -import re - -class Type: - - def __init__(self, name, pattern=None): - self.name = name - self.pattern = pattern - - def __repr__(self): - return self.name - -class Lexicon: - - def __init__(self): - self.types = [] - self._eof = None - - def define(self, name, pattern): - t = Type(name, pattern) - self.types.append(t) - return t - - def eof(self, name): - t = Type(name) - self._eof = t - return t - - def compile(self): - types = self.types[:] - joined = "|".join(["(%s)" % t.pattern for t in types]) - rexp = re.compile(joined) - return Lexer(types, self._eof, rexp) - -class Token: - - def __init__(self, type, value, input, position): - self.type = type - self.value = value - self.input = input - self.position = position - - def line_info(self): - return line_info(self.input, self.position) - - def __repr__(self): - if self.value is None: - return repr(self.type) - else: - return "%s(%s)" % (self.type, self.value) - - -class LexError(Exception): - pass - -def line_info(st, pos): - idx = 0 - lineno = 1 - column = 0 - line_pos = 0 - while idx < pos: - if st[idx] == "\n": - lineno += 1 - column = 0 - line_pos = idx - column += 1 - idx += 1 - - end = st.find("\n", line_pos) - if end < 0: - end = len(st) - line = st[line_pos:end] - - return line, lineno, column - -class Lexer: - - def __init__(self, types, eof, rexp): - self.types = types - self.eof = eof - self.rexp = rexp - self.byname = {} - for t in self.types + [eof]: - self.byname[t.name] = t - - def type(self, name): - return self.byname[name] - - def lex(self, st): - pos = 0 - while pos < len(st): - m = self.rexp.match(st, pos) - if m is None: - line, ln, col = line_info(st, pos) - raise LexError("unrecognized characters line:%s,%s: %s" % (ln, col, line)) - else: - idx = m.lastindex - t = Token(self.types[idx - 1], m.group(idx), st, pos) - yield t - pos = m.end() - yield Token(self.eof, None, st, pos) |