예제 #1
0
def test_long():
    for s, numtoken in [
            ("if x:\n    print x", 10),
            ("if x:#foo\n    x abc = 17", 12),
            ("1 a \\\n 2", 5)]:
        tokens = lex(s)
        assert len(tokens) == numtoken
        print tokens
예제 #2
0
def test_name():
    for s in ["abc",
              "_",
              "a_0",
              "_0",
              ]:
        tokens = lex(s)
        token, newline, eof = tokens
        assert token.name == 'Name'
        assert newline.name == 'Newline'
        assert eof.name == 'EOF'
        s = '$' + s
        tokens = lex(s)
        token, newline, eof = tokens
        assert token.name == 'PrimitiveName'
        assert newline.name == 'Newline'
        assert eof.name == 'EOF'
예제 #3
0
def test_single_quoted_string():
    for s in ["""'abc'""",
              """'ab"c'""",
              """'ab\\'c'""",
              ]:
        tokens = lex(s)
        token, newline, eof = tokens
        assert token.name == 'String'
        assert newline.name == 'Newline'
        assert eof.name == 'EOF'
예제 #4
0
def test_number():
    for s in ["0",
              "+1",
              "-1",
              "-1123123",
              ]:
        tokens = lex(s)
        token, newline, eof = tokens
        assert token.name == 'Number'
        assert newline.name == 'Newline'
        assert eof.name == 'EOF'
예제 #5
0
def test_indentation():
    s = """a
b
    c
        d
      
  #some comment
    e
        f
    """
    tokens = lex(s)
    assert [t.name for t in tokens] == ["Name", "Newline", "Name", "Newline",
                                        "Indent", "Name", "Newline", "Indent",
                                        "Name", "Newline", "Dedent", "Name",
                                        "Newline", "Indent", "Name", "Newline",
                                        "Dedent", "Dedent", "EOF"]
예제 #6
0
파일: simpleparser.py 프로젝트: stepahn/slf
 def __init__(self, source):
     self.source = source
     self.tokens = lex(source)
     self.i = 0
     self.last_i = 0
예제 #7
0
def test_comment():
    s = "(a = # foo this is a comment \n     b)"
    tokens = lex(s)
    assert [t.name for t in tokens] == ["OpenBracket", "Name", "Special", "Name",
                                        "CloseBracket", "Newline", "EOF"]
예제 #8
0
def test_parenthesis():
    s = "(a = \n     b)"
    tokens = lex(s)
    assert [t.name for t in tokens] == ["OpenBracket", "Name", "Special", "Name",
                                        "CloseBracket", "Newline", "EOF"]
예제 #9
0
def test_linecont():
    s = "a a \\\n     b"
    tokens = lex(s)
    assert [t.name for t in tokens] == ["Name", "Name", "Name", "Newline",
                                        "EOF"]