X-Git-Url: https://code.kerkeslager.com/?a=blobdiff_plain;f=tokenization.py;fp=tokenization.py;h=e6cad0a0bc7c3ac035294f6d0720c5e46a0a56e4;hb=a859f78651b4da2d31890b9c7b01a431fa7a93f6;hp=e9f536b133536b05e286e44ab8847fbab604a8ef;hpb=fc17cc4f755333f182183d09b281471aec5d0cdd;p=fur diff --git a/tokenization.py b/tokenization.py index e9f536b..e6cad0a 100644 --- a/tokenization.py +++ b/tokenization.py @@ -36,12 +36,13 @@ _TOKEN_MATCHERS = [ ('open_parenthese', r'\('), ('close_parenthese', r'\)'), ('comma', r','), - ('assignment_operator', r'='), ('integer_literal', r'\d+'), ('symbol', r'[a-z]+'), ('single_quoted_string_literal', r"'.*?'"), + ('equality_level_operator', r'(<=|>=|==|!=|<|>)'), ('addition_level_operator', r'(\+|-)'), - ('multiplication_level_operator', r'(\*|//|%)'), + ('multiplication_level_operator', r'(\*|//|%)'), + ('assignment_operator', r'='), ] _TOKEN_MATCHERS = list(map(_make_token_matcher, _TOKEN_MATCHERS)) @@ -197,6 +198,72 @@ if __name__ == '__main__': ),), ) + def test_tokenizes_equality_operator(self): + self.assertEqual( + tokenize('=='), + (Token( + type='equality_level_operator', + match='==', + index=0, + line=1, + ),), + ) + + def test_tokenizes_greater_than_or_equal_operator(self): + self.assertEqual( + tokenize('>='), + (Token( + type='equality_level_operator', + match='>=', + index=0, + line=1, + ),), + ) + + def test_tokenizes_less_than_or_equal_operator(self): + self.assertEqual( + tokenize('<='), + (Token( + type='equality_level_operator', + match='<=', + index=0, + line=1, + ),), + ) + + def test_tokenizes_greater_than_equal_operator(self): + self.assertEqual( + tokenize('>'), + (Token( + type='equality_level_operator', + match='>', + index=0, + line=1, + ),), + ) + + def test_tokenizes_less_than_equal_operator(self): + self.assertEqual( + tokenize('<'), + (Token( + type='equality_level_operator', + match='<', + index=0, + line=1, + ),), + ) + + def test_tokenizes_not_equal_operator(self): + self.assertEqual( + tokenize('!='), + (Token( + type='equality_level_operator', + match='!=', + index=0, + line=1, + ),), + ) + def test_handles_trailing_newline(self): self.assertEqual( tokenize('print\n'),