Esempio n. 1
0
def test_accent():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = r'\hat{a}'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'block'
    assert cv[0].get_children()[0].content == 'a'
    assert cv[0].accent == 'hat'

    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = r'\acute a'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'a'
    assert cv[0].accent == 'acute'

    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = r'\hat{ab}'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'block'
    assert cv[0].accent == 'hat'
    assert cv[0].get_children()[0].content == 'a'
    assert cv[0].get_children()[1].content == 'b'
Esempio n. 2
0
def test_style():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = r'\mathit{a}'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'block'
    assert cv[0].style == 'mathit'
    assert cv[0].get_children()[0].content == 'a'

    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = r'\mathbf a'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'a'
    assert cv[0].style == 'mathbf'
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = r'\mathrm{ab}'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'block'
    assert cv[0].style == 'mathrm'
    assert cv[0].get_children()[0].content == 'a'
    assert cv[0].get_children()[1].content == 'b'
Esempio n. 3
0
def test_binom():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()

    latex_string1 = r'\binom \Leftrightarrow \Gamma'
    cv1 = custom_parser.parse(latex_string1, custom_lexer)
    assert type(cv1) is list
    assert cv1[0].content == 'binom'
    assert len(cv1[0].get_children()) == 2
    assert cv1[0].get_children()[0].content == 'Leftrightarrow'
    assert cv1[0].get_children()[1].content == 'Gamma'

    latex_string2 = r'\binom \Leftrightarrow {\Gamma}'
    cv2 = custom_parser.parse(latex_string1, custom_lexer)
    assert type(cv2) is list
    assert cv2[0].content == 'binom'
    assert len(cv2[0].get_children()) == 2
    assert cv2[0].get_children()[0].content == 'Leftrightarrow'
    assert cv2[0].get_children()[1].content == 'Gamma'

    latex_string3 = r'\binom {\Leftrightarrow} \Gamma'
    cv3 = custom_parser.parse(latex_string1, custom_lexer)
    assert type(cv3) is list
    assert cv3[0].content == 'binom'
    assert len(cv3[0].get_children()) == 2
    assert cv3[0].get_children()[0].content == 'Leftrightarrow'
    assert cv3[0].get_children()[1].content == 'Gamma'

    latex_string4 = r'\binom {\Leftrightarrow} {\Gamma}'
    cv4 = custom_parser.parse(latex_string1, custom_lexer)
    assert type(cv4) is list
    assert cv4[0].content == 'binom'
    assert len(cv4[0].get_children()) == 2
    assert cv4[0].get_children()[0].content == 'Leftrightarrow'
    assert cv4[0].get_children()[1].content == 'Gamma'
Esempio n. 4
0
def test_token_sqrt():
    simple_sqrt = '\sqrt a'
    simple_sqrt_tokens = ['ROOT', 'CHAR']
    lexer_test = lexer.get_lexer()
    lexer_test.input(simple_sqrt)
    list_of_tokens = get_list_token(lexer_test)
    assert list_of_tokens == simple_sqrt_tokens
Esempio n. 5
0
def test_frac():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()

    latex_string1 = r'\frac 1 a'
    cv1 = custom_parser.parse(latex_string1, custom_lexer)
    assert type(cv1) is list
    assert cv1[0].content == 'fraction'
    assert cv1[0].get_children()[0].content == '1'
    assert cv1[0].get_children()[1].content == 'a'

    latex_string2 = r'\frac \alpha {\bigcap}'
    cv2 = custom_parser.parse(latex_string2, custom_lexer)
    assert type(cv2) is list
    assert cv2[0].content == 'fraction'
    assert cv2[0].get_children()[0].content == 'alpha'
    assert cv2[0].get_children()[1].content == 'block'
    assert cv2[0].get_children()[1].get_children()[0].content == 'bigcap'

    latex_string3 = r'\frac {\sqcap} \ni '
    cv3 = custom_parser.parse(latex_string3, custom_lexer)
    assert type(cv3) is list
    assert cv3[0].content == 'fraction'
    assert cv3[0].get_children()[0].content == 'block'
    assert cv3[0].get_children()[0].get_children()[0].content == 'sqcap'
    assert cv3[0].get_children()[1].content == 'ni'

    latex_string4 = r'\frac {\leftarrow}{\rangle}'
    cv4 = custom_parser.parse(latex_string4, custom_lexer)
    assert type(cv4) is list
    assert cv4[0].content == 'fraction'
    assert cv4[0].get_children()[0].content == 'block'
    assert cv4[0].get_children()[0].get_children()[0].content == 'leftarrow'
    assert cv4[0].get_children()[1].content == 'block'
    assert cv4[0].get_children()[1].get_children()[0].content == 'rangle'
Esempio n. 6
0
def test_kbinop():
    custom_parser = parser.get_parser()
    latex_string = 'x+3'
    custom_lexer = lexer.get_lexer()
    cv = custom_parser.parse(latex_string,custom_lexer)
    assert cv.left.content == 'x'
    assert cv.content == '+'
    assert cv.right.content == '3'
Esempio n. 7
0
def test_block():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = '{a}'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'block'
    assert cv[0].get_children()[0].content == 'a'
Esempio n. 8
0
def test_compound_indexes():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = 'a^b_c'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'a'
    assert cv[0].superscript[0].content == 'b'
    assert cv[0].subscript[0].content == 'c'

    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = r'a_c^b'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'a'
    assert cv[0].superscript[0].content == 'b'
    assert cv[0].subscript[0].content == 'c'
Esempio n. 9
0
def test_sqrt():
    custom_parser = parser.get_parser()
    latex_string = '\sqrt[8]{x}'
    custom_lexer = lexer.get_lexer()
    cv = custom_parser.parse(latex_string,custom_lexer)
    assert cv.left is None
    assert cv.content == 'sqrt'
    assert cv.superscript.content == '8'
    assert cv.right.content == 'x'
Esempio n. 10
0
def test_simple_indexes():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = 'a^b'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'a'
    assert cv[0].superscript[0].content == 'b'

    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = r'a^{b}'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'a'
    assert cv[0].superscript[0].content == 'block'
    assert cv[0].superscript[0].get_children()[0].content == 'b'

    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = 'a_b'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'a'
    assert cv[0].subscript[0].content == 'b'

    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = r'a_{b}'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'a'
    assert cv[0].subscript[0].content == 'block'
    assert cv[0].subscript[0].get_children()[0].content == 'b'

    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string = r'a_{b^c}'
    cv = custom_parser.parse(latex_string, custom_lexer)
    assert type(cv) is list
    assert cv[0].content == 'a'
    assert cv[0].subscript[0].content == 'block'
    assert cv[0].subscript[0].get_children()[0].content == 'b'
    assert cv[0].subscript[0].get_children()[0].superscript[0].content == 'c'
Esempio n. 11
0
def test_label():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()

    latex_string1 = r'\label{my label}'
    cv1 = custom_parser.parse(latex_string1, custom_lexer)
    assert type(cv1) is list
    assert cv1[0].content == 'label'
    assert cv1[0].get_children(
    ) == 'label{my label}'  #A label it is not a math object.
Esempio n. 12
0
def test_symbol():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()
    latex_string1 = 'a'
    cv1 = custom_parser.parse(latex_string1, custom_lexer)
    assert type(cv1) is list
    assert cv1[0].content == 'a'
    latex_string2 = '1'
    cv2 = custom_parser.parse(latex_string2, custom_lexer)
    assert type(cv2) is list
    assert cv2[0].content == '1'
    latex_string3 = r'\alpha'
    cv3 = custom_parser.parse(latex_string3, custom_lexer)
    assert type(cv2) is list
    assert cv3[0].content == 'alpha'
Esempio n. 13
0
def test_concatenation():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()

    latex_string1 = r'ab'
    cv1 = custom_parser.parse(latex_string1, custom_lexer)
    assert type(cv1) is list
    assert cv1[0].content == 'a'
    assert cv1[1].content == 'b'

    latex_string2 = r'a^2b_i^3'
    cv2 = custom_parser.parse(latex_string2, custom_lexer)
    assert cv2[0].content == 'a'
    assert cv2[0].superscript[0].content == '2'
    assert cv2[1].content == 'b'
    assert cv2[1].subscript[0].content == 'i'
    assert cv2[1].superscript[0].content == '3'
Esempio n. 14
0
def test_pmod():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()

    latex_string1 = r'\pmod \epsilon'
    cv1 = custom_parser.parse(latex_string1, custom_lexer)
    assert type(cv1) is list
    assert cv1[0].content == 'pmod'
    assert cv1[0].get_children()[0].content == 'epsilon'
    assert len(cv1[0].get_children()) == 1

    latex_string2 = r'\pmod {\oplus}'
    cv2 = custom_parser.parse(latex_string2, custom_lexer)
    assert type(cv2) is list
    assert cv2[0].content == 'pmod'
    assert cv2[0].get_children()[0].content == 'block'
    assert cv2[0].get_children()[0].get_children()[0].content == 'oplus'
    assert len(cv2[0].get_children()) == 1
Esempio n. 15
0
def test_root():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()

    latex_string1 = r'\sqrt \wp'
    cv1 = custom_parser.parse(latex_string1, custom_lexer)
    assert type(cv1) is list
    assert cv1[0].content == 'root'
    assert len(cv1[0].children) == 1
    assert cv1[0].get_children()[0].content == 'wp'

    latex_string2 = r'\sqrt{\clubsuit}'
    cv2 = custom_parser.parse(latex_string2, custom_lexer)
    assert type(cv2) is list
    assert cv2[0].content == 'root'
    assert len(cv2[0].get_children()) == 1
    assert cv2[0].get_children()[0].content == 'block'
    assert cv2[0].get_children()[0].get_children()[0].content == 'clubsuit'

    latex_string3 = r'\sqrt [\sum] \uplus'
    cv3 = custom_parser.parse(latex_string3, custom_lexer)
    assert type(cv3) is list
    assert cv3[0].content == 'root'
    assert len(cv3[0].get_children()) == 2
    assert cv3[0].get_children()[0].content == 'sum'
    assert cv3[0].get_children()[1].content == 'uplus'

    latex_string4 = r'\sqrt [\sum] {\uplus}'
    cv4 = custom_parser.parse(latex_string4, custom_lexer)
    assert type(cv4) is list
    assert cv4[0].content == 'root'
    assert len(cv4[0].get_children()) == 2
    assert cv4[0].get_children()[0].content == 'sum'
    assert cv4[0].get_children()[1].content == 'block'
    assert cv4[0].get_children()[1].get_children()[0].content == 'uplus'

    latex_string5 = r'\sqrt [[] ]'
    cv5 = custom_parser.parse(latex_string5, custom_lexer)
    assert type(cv5) is list
    assert cv5[0].content == 'root'
    assert len(cv5[0].get_children()) == 2
    assert cv5[0].get_children()[0].content == '['
    assert cv5[0].get_children()[1].content == ']'
Esempio n. 16
0
def test_text():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()

    latex_string1 = r'\text a'
    cv1 = custom_parser.parse(latex_string1, custom_lexer)
    assert type(cv1) is list
    assert cv1[0].content == 'text'
    assert cv1[0].get_children(
    ) == 'a'  #A text character it is not a math object.
    #assert len(cv1[0].get_children()) == 1

    latex_string2 = r'\textrm {zb c 1 2 34 (d5)}'
    cv2 = custom_parser.parse(latex_string2, custom_lexer)
    assert type(cv2) is list
    assert cv2[0].content == 'text'
    #assert len(cv2[0].get_children()) == 1
    assert cv2[0].get_children(
    ) == 'zb c 1 2 34 (d5)'  #A text character it is not a math object.
Esempio n. 17
0
def test_choose():
    custom_parser = parser.get_parser()
    custom_lexer = lexer.get_lexer()

    latex_string1 = r'a \choose b'
    cv1 = custom_parser.parse(latex_string1, custom_lexer)
    assert type(cv1) is list
    assert cv1[0].content == 'choose'
    assert len(cv1[0].get_children()) == 2
    assert cv1[0].get_children()[0].content == 'a'
    assert cv1[0].get_children()[1].content == 'b'

    latex_string2 = r'{\oint \choose \leftrightarrow}'
    cv2 = custom_parser.parse(latex_string2, custom_lexer)
    assert type(cv2) is list
    assert cv2[0].content == 'block'
    assert cv2[0].get_children()[0].content == 'choose'
    assert len(cv2[0].get_children()) == 1
    assert len(cv2[0].get_children()[0].get_children()) == 2
    assert cv2[0].get_children()[0].get_children()[0].content == 'oint'
    assert cv2[0].get_children()[0].get_children(
    )[1].content == 'leftrightarrow'
Esempio n. 18
0
def test_t_SUP():
    SUP = '^'
    lexer_test = lexer.get_lexer()
    lexer_test.input(SUP)
    list_of_tokens = get_list_token(lexer_test)
    assert all(['SUP' == token for token in list_of_tokens ])
Esempio n. 19
0
def test_t_KBINOP():
    KBINOP = '+-*/'
    lexer_test = lexer.get_lexer()
    lexer_test.input(KBINOP)
    list_of_tokens = get_list_token(lexer_test)
    assert all(['KBINOP' == token for token in list_of_tokens ])
Esempio n. 20
0
def test_t_NUM():
    NUM = '1234567890'
    lexer_test = lexer.get_lexer()
    lexer_test.input(NUM)
    list_of_tokens = get_list_token(lexer_test)
    assert all(['NUM' == token for token in list_of_tokens ])
Esempio n. 21
0
def test_t_CHAR():
    CHAR = 'blindtex'
    lexer_test = lexer.get_lexer()
    lexer_test.input(CHAR)
    list_of_tokens = get_list_token(lexer_test)
    assert all(['CHAR' == token for token in list_of_tokens ])
Esempio n. 22
0
def test_t_KDELIMITER():
    KDELIMITER = '()[]'
    lexer_test = lexer.get_lexer()
    lexer_test.input(KDELIMITER)
    list_of_tokens = get_list_token(lexer_test)
    assert all(['KDELIMITER' == token for token in list_of_tokens ])
Esempio n. 23
0
def latex2list(latex_srt):
    par = parser.get_parser()
    lex = lexer.get_lexer()

    return par.parse(latex_srt, lex)
Esempio n. 24
0
def test_t_command_LABEL():
    command_LABEL = r'\label{my label}'
    lexer_test = lexer.get_lexer()
    lexer_test.input(command_LABEL)
    list_of_tokens = get_list_token(lexer_test)
    assert all(['LABEL' == token for token in list_of_tokens])
Esempio n. 25
0
def test_t_KDELIMITER():
    KDELIMITER = '()'  #For reasons [ and ] must be taken.
    lexer_test = lexer.get_lexer()
    lexer_test.input(KDELIMITER)
    list_of_tokens = get_list_token(lexer_test)
    assert all(['KDELIMITER' == token for token in list_of_tokens])
Esempio n. 26
0
def test_t_COMMAND():
    COMMAND = '\\'
    lexer_test = lexer.get_lexer()
    lexer_test.input(COMMAND)
    list_of_tokens = get_list_token(lexer_test)
    assert all(['COMMAND' == token for token in list_of_tokens ])
Esempio n. 27
0
def test_t_command_ROOT():
    command_ROOT = '\\sqrt'
    lexer_test = lexer.get_lexer()
    lexer_test.input(command_ROOT)
    list_of_tokens = get_list_token(lexer_test)
    assert all(['ROOT' == token for token in list_of_tokens ])
Esempio n. 28
0
def test_t_BEGINBLOCK():
    BEGINBLOCK = '{'
    lexer_test = lexer.get_lexer()
    lexer_test.input(BEGINBLOCK)
    list_of_tokens = get_list_token(lexer_test)
    assert all(['BEGINBLOCK' == token for token in list_of_tokens ])
Esempio n. 29
0
            | TEXT ANYTHING'''
    p[0] = MathObject(content='text')
    p[0].append_child(p[2])


def p_label(p):
    '''label : LABEL '''
    p[0] = MathObject(content='label')
    p[0].append_child(p[1])


def get_parser():
    return ply.yacc.yacc()


if __name__ == "__main__":
    parser = get_parser()
    lexer = lexer.get_lexer()
    #cv = parser.parse(latex_string,custom_lexer)#,debug=1)
    while True:
        try:
            try:
                s = raw_input()
            except NameError:  # Python3
                s = input('spi> ')

            cv_s = parser.parse(s, lexer)
            print(cv_s)
        except EOFError:
            break
Esempio n. 30
0
def test_t_ENDBLOCK():
    ENDBLOCK = '}'
    lexer_test = lexer.get_lexer()
    lexer_test.input(ENDBLOCK)
    list_of_tokens = get_list_token(lexer_test)
    assert all(['ENDBLOCK' == token for token in list_of_tokens ])