aboutsummaryrefslogtreecommitdiff
path: root/mammoth/styles/parser/token_iterator.py
diff options
context:
space:
mode:
Diffstat (limited to 'mammoth/styles/parser/token_iterator.py')
-rw-r--r--mammoth/styles/parser/token_iterator.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/mammoth/styles/parser/token_iterator.py b/mammoth/styles/parser/token_iterator.py
new file mode 100644
index 0000000..810e50b
--- /dev/null
+++ b/mammoth/styles/parser/token_iterator.py
@@ -0,0 +1,31 @@
+class TokenIterator(object):
+ def __init__(self, tokens):
+ self._tokens = tokens
+ self._index = 0
+
+ def next_value(self, token_type):
+ return self._next(token_type).value
+
+ def _next(self, token_type):
+ token = self._tokens[self._index]
+ if token.type == token_type:
+ self._index += 1
+ return token
+ else:
+ raise self._unexpected_token_type(token_type, token)
+
+ def skip(self, token_type, token_value):
+ token = self._tokens[self._index]
+ if token.type == token_type and token.value == token_value:
+ self._index += 1
+ return True
+ else:
+ raise self._unexpected_token_type(token_type, token)
+
+ def try_skip(self, token_type, token_value):
+ token = self._tokens[self._index]
+ if token.type == token_type and token.value == token_value:
+ self._index += 1
+ return True
+ else:
+ return False