Пример #1
0
def p_singletontuple(p):
    '''singletontuple : nonempty_expressionlist COMMA'''
    p[0] = ast(p, "TUPLE_SINGLE", 1)
Пример #2
0
def p_defaultlist_single(p):
    '''nonempty_defaultlist : IDENTIFIER COLON QMARK type'''
    p[0] = ast(p, "DEFAULTLIST_SINGLE", 1, 4)
Пример #3
0
def p_procedure_type(p):
    # proc (string)
    '''procedure_type : PROC LPAREN typelist RPAREN'''
    p[0] = ast(p, "PROCEDURE_TYPE", 3)
Пример #4
0
def p_argumentlist_single(p):
    '''nonempty_argumentlist : IDENTIFIER COLON type'''
    p[0] = ast(p, "ARGUMENTLIST_SINGLE", 1, 3)
Пример #5
0
def p_argumentlist_multi(p):
    '''nonempty_argumentlist : nonempty_argumentlist COMMA nonempty_argumentlist'''
    p[0] = ast(p, "ARGUMENTLIST_MULTI", 1, 3)
Пример #6
0
def p_function_definition(p):
    # def add(x : int, y : int) -> int
    '''function_definition : DEF IDENTIFIER LPAREN argumentlist RPAREN ARROW type NL'''
    p[0] = ast(p, "FUNCTION_DEFINITION", 2, 4, 7)
Пример #7
0
def p_argumentlist(p):
    '''argumentlist : nonempty_argumentlist COMMA nonempty_defaultlist
                    | nonempty_argumentlist empty empty
                    | empty empty empty'''
    p[0] = ast(p, "ARGUMENTLIST", 1, 3)
Пример #8
0
def p_importlist_single(p):
    '''importlist : IDENTIFIER'''
    p[0] = ast(p, "IMPORTLIST_SIMPLE", 1)
Пример #9
0
def p_importlist_alias(p):
    '''importlist : IDENTIFIER AS IDENTIFIER'''
    p[0] = ast(p, "IMPORTLIST_ALIAS", 1, 3)
Пример #10
0
def p_dictionary_literal(p):
    # { 1 : "a", 2 : "b" }
    '''dictionary_literal : LCURLY dictionarylist RCURLY'''
    p[0] = ast(p, "LITERAL_DICTIONARY", 2)
Пример #11
0
def p_pyimport_statement_discrete(p):
    # from module pyimport fn1, fn2...
    '''pyimport_statement : FROM IDENTIFIER PYIMPORT importlist NL'''
    p[0] = ast(p, "PYIMPORT_DISCRETE", 2, 4)
Пример #12
0
def p_list_literal(p):
    # [], [1], [1,2]
    '''list_literal : LBRACKET expressionlist RBRACKET'''
    p[0] = ast(p, "LITERAL_LIST", 2)
Пример #13
0
def p_crosstuple(p):
    '''crosstuple : nonempty_expressionlist'''
    p[0] = ast(p, "MULTI_TUPLE", 1)
Пример #14
0
def p_singleimport(p):
    '''singleimport : import_statement
                    | pyimport_statement'''
    p[0] = ast(p, "IMPORTBLOCK_SINGLE", 1)
Пример #15
0
def p_class_suite(p):
    '''class_suite : optdoc declaration_suite'''
    p[0] = ast(p, "CLASS_SUITE", 1, 2)
Пример #16
0
def p_importlist_multi(p):
    '''importlist : importlist COMMA importlist'''
    p[0] = ast(p, "IMPORTLIST_MULTI", 1, 3)
Пример #17
0
def p_methodblock(p):
    '''methodblock : subroutine_definition methodblock'''
    p[0] = ast(p, "METHODBLOCK", 1, 2)
Пример #18
0
def p_declaration_suite(p):
    '''declaration_suite : variableblock classblock methodblock'''
    p[0] = ast(p, "DECLARATION_SUITE", 1, 2, 3)
Пример #19
0
def p_procedure_definition(p):
    # def write(s:string)
    '''procedure_definition : DEF IDENTIFIER LPAREN argumentlist RPAREN NL'''
    p[0] = ast(p, "PROCEDURE_DEFINITION", 2, 4)
Пример #20
0
def p_nonempty_variableblock_single(p):
    # :: x : int ::
    '''nonempty_variableblock : declaration'''
    p[0] = ast(p, "VARIABLEBLOCK_SINGLE", 1)
Пример #21
0
def p_argumentlist_default(p):
    '''argumentlist : nonempty_defaultlist empty empty'''
    p[0] = ast(p, "ARGUMENTLIST", 3, 1)
Пример #22
0
def p_nonempty_variableblock_multi(p):
    # :: x : int, y : string ::
    '''nonempty_variableblock : nonempty_variableblock COMMA nonempty_variableblock'''
    p[0] = ast(p, "VARIABLEBLOCK_MULTI", 1, 3)
Пример #23
0
def p_file(p):
    '''file : optdoc importblock declaration_suite'''
    p[0] = ast(p, "FILE", 1, 2, 3)
Пример #24
0
def p_declaration_simple(p):
    # x : int
    '''declaration : IDENTIFIER COLON type'''
    p[0] = ast(p, "DECLARATION_SIMPLE", 1, 3)
Пример #25
0
def p_defaultlist_multi(p):
    '''nonempty_defaultlist : nonempty_defaultlist COMMA nonempty_defaultlist'''
    p[0] = ast(p, "DEFAULTLIST_MULTI", 1, 3)
Пример #26
0
def p_classblock(p):
    '''classblock : class_definition classblock'''
    p[0] = ast(p, "CLASSBLOCK", 1, 2)
Пример #27
0
def p_function_type(p):
    '''function_type : FN LPAREN typelist RPAREN ARROW type'''
    p[0] = ast(p, "FUNCTION_TYPE", 3, 6)
Пример #28
0
def p_class_definition(p):
    # class Pet:
    # class Dog extends Pet:
    '''class_definition : CLASS IDENTIFIER opt_extends COLON NL INDENT class_suite DEDENT'''
    p[0] = ast(p, "CLASS_DEFINITION", 2, 3, 7)
Пример #29
0
def p_nonempty_typelist_single(p):
    '''nonempty_typelist : type'''
    p[0] = ast(p, "TYPELIST_SINGLE", 1)
Пример #30
0
def p_tuple_literal(p):
    # (1,)
    # (1,2)
    '''tuple_literal : LPAREN tuplelist RPAREN'''
    p[0] = ast(p, "LITERAL_TUPLE", 2)