• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python yacc.yacc函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中yacc.yacc函数的典型用法代码示例。如果您正苦于以下问题:Python yacc函数的具体用法?Python yacc怎么用?Python yacc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了yacc函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: parse

def parse(string):
    lex.lex()
    yacc.yacc()
    rules = yacc.parse(string)

    result = []
    while rules:
        current = rules.pop(0)
        result.extend(current[1])
    return(result)
开发者ID:jbjorne,项目名称:CVSTransferTest,代码行数:10,代码来源:convertrule.py


示例2: __init__

    def __init__(self, options, stddef_types=True, gnu_types=True):
        self.preprocessor_parser = preprocessor.PreprocessorParser(options,self)
        self.parser = yacc.Parser()
        prototype = yacc.yacc(method        = 'LALR',
                              debug         = False,
                              module        = cgrammar,
                              write_tables  = True,
                              outputdir     = os.path.dirname(__file__),
                              optimize      = True)
        
        # If yacc is reading tables from a file, then it won't find the error
        # function... need to set it manually
        prototype.errorfunc = cgrammar.p_error
        prototype.init_parser(self.parser)
        self.parser.cparser = self

        self.lexer = CLexer(self)
        if stddef_types:
            self.lexer.type_names.add('wchar_t')
            self.lexer.type_names.add('ptrdiff_t')
            self.lexer.type_names.add('size_t')
        if gnu_types:
            self.lexer.type_names.add('__builtin_va_list')
        if sys.platform == 'win32':
            self.lexer.type_names.add('__int64')
开发者ID:AsherBond,项目名称:MondocosmOS,代码行数:25,代码来源:cparser.py


示例3: parse

def parse(s):

    lexer = lex.lex()
    lexer.input(s)
    parser = yacc.yacc()  # debug=1
    print("Parsing...")
    root = parser.parse(lexer=lexer)  # debug=1
    return root
开发者ID:AJARTCGA,项目名称:Project-Giraffe,代码行数:8,代码来源:parsefbx.py


示例4: __init__

    def __init__(self, stddef_types=True, gnu_types=True, cache_headers=True):
        self.preprocessor_parser = CPreprocessorParser(self)
        self.parser = yacc.Parser()
        yacc.yacc(method='LALR').init_parser(self.parser)
        self.parser.cparser = self

        self.lexer = CLexer(self)
        if stddef_types:
            self.lexer.type_names.add('wchar_t')
            self.lexer.type_names.add('ptrdiff_t')
            self.lexer.type_names.add('size_t')
        if gnu_types:
            self.lexer.type_names.add('__builtin_va_list')
        if sys.platform == 'win32':
            self.lexer.type_names.add('__int64')

        self.header_cache = {}
        self.cache_headers = cache_headers
        self.load_header_cache()
开发者ID:DatRollingStone,项目名称:nwidget,代码行数:19,代码来源:cparser.py


示例5: doxyyacc

def doxyyacc(elist=elem_list(), mylexer=doxylex.doxylex()):
    def p_translation_unit(p):
        '''translation_unit : statement
                        | translation_unit statement'''
        pass

    def p_statement_assign(p):
        'statement : KEY expression'
        updatestr(p)
        elist.push([p[1][1:], p[2]])
        if DEBUG_DOXYYACC==1: print(get_cur_info()[0],p[0])
        pass

    def p_statement_line(p):
        'statement : expression'
        if p[1] == '':
            # 如果是空的,可以忽略
            pass
        else:
            # 如果不是空行,应加以保存
            updatestr(p)
            if DEBUG_DOXYYACC==1: print(get_cur_info()[0],p[0])

    def p_expression_com(p):
        'expression : expression WORD NEWLINE'
        #updatestr(p, 1)
        p[0] = ''
        p[0] = p[1] + '\n' + p[2]
        if DEBUG_DOXYYACC==1: print(get_cur_info()[0],p[0])
        pass

    def p_expression_line(p):
        'expression : WORD NEWLINE'
        updatestr(p, 1)
        if DEBUG_DOXYYACC==1: print(get_cur_info()[0],p[0])
        pass

    def p_expression_blankline(p):
        '''expression : BLANKLINE
                       | NEWLINE'''
        p[0] = ''
        if DEBUG_DOXYYACC==1: print(get_cur_info()[0],p[0])

    def p_empty(p):
        'empty : '
        pass

    def p_error(p):
        print("syntax error at '%s %d'" % (p.value, p.lineno))

    lexer = mylexer.lexer
    tokens = mylexer.tokens
    p1=yacc.yacc(method='LALR', tabmodule='doxy_tab', debugfile='doxyparser.out')
    return p1, elist.cm
开发者ID:kaikuo,项目名称:cdocgen,代码行数:54,代码来源:doxyyacc.py


示例6: create_globals

def create_globals(module, support, debug):
    global parser, lexer, m, spt
    if not parser:
        lexer = lex.lex()
        parser = yacc.yacc(method="LALR", debug=debug, write_tables=0)

    if module is not None:
        m = module
    else:
        m = refpolicy.Module()

    if not support:
        spt = refpolicy.SupportMacros()
    else:
        spt = support
开发者ID:carlgao,项目名称:lenga,代码行数:15,代码来源:refparser.py


示例7: __init__

    def __init__(self, language='en'):
        self.language = language
        self.lock = Lock()

        try:
            modname = os.path.split(os.path.splitext(__file__)[0])[1] + "_" + self.__class__.__name__
        except:
            modname = "parser"+"_"+self.__class__.__name__
        self.debugfile = modname + ".dbg"
        self.tabmodule = modname + "_" + "parsetab"

        lex.lex(module=self, debug=False)
        self.p = yacc.yacc(module=self,
                           debug=0,
                           outputdir=outputdir,
                           debugfile=self.debugfile,
                           tabmodule=self.tabmodule,)
开发者ID:alepharchives,项目名称:zopyx.txng3.core,代码行数:17,代码来源:english.py


示例8: beginParse

def beginParse(program):
    yacc = lexyacc.yacc()
    try:
        result = yacc.parse(program.read(),lexer = lexmelon.lex())
        aux = eval({},result)
        if isinstance(aux,bool):
            aux = str(aux).lower()
        if isinstance(aux,NodoBin):
            if aux.tipo == 'LISTA':
                print  recorrer_list(aux)
        else:
            print aux
    except SyntaxError, e:
        token = e.token
        if token:
            print 'Error de sintaxis en linea ' + str(token.lineno) \
                + ' cerca de token ' + '"' + str(token.value) + '"'
        else:
            print 'Error al final del programa'
开发者ID:lfundaro,项目名称:Melon-Interpreter,代码行数:19,代码来源:yaccmelon.py


示例9: constr_testing

def constr_testing(value, constr, var_name):
    global names

    lexer = lex.lex()
    parser = yacc.yacc()
    # print parser.parse('ASSERT(NOT(123 = 123))')

    # print constr

    for index, eachvar in enumerate(var_name):
        str_value = []
        for val in value[index]:
            if val != '':
                # TODO: input concrete value must be integer
                str_val = BitArray(uint = int(val), length = 8)
                str_value.append('0x' + str_val.hex)

        names[eachvar] = str_value
    #print names


    return ([constr[0]], yacc.parse(constr[1]))
开发者ID:junxzm1990,项目名称:simulator,代码行数:22,代码来源:cvc_parsing.py


示例10: p_expression_if_then_else_endif

    p[0] = '0b' + s.bin

def p_expression_if_then_else_endif(p):
    "expression : if expression then expression else expression endif"
    s1 = BitArray(p[2])
    if int(s1.int > 0):
        p[0] = p[4]
    else:
        p[0] = p[6]

def p_error(p):
    print "Syntax error at '%s'" % p.value


import yacc as yacc
yacc.yacc(errorlog=log)



# test concrete value against a path constraint
def constr_testing(value, constr, var_name):
    global names

    lexer = lex.lex()
    parser = yacc.yacc()
    # print parser.parse('ASSERT(NOT(123 = 123))')

    # print constr

    for index, eachvar in enumerate(var_name):
        str_value = []
开发者ID:junxzm1990,项目名称:simulator,代码行数:31,代码来源:cvc_parsing.py


示例11: __init__

 def __init__(self, lexer = None):
     if lexer is None:
         lexer = IndentLexer()
     self.lexer = lexer
     self.parser = yacc.yacc(start="file_input_end")
开发者ID:joehillen,项目名称:WSTFIL,代码行数:5,代码来源:GardenSnake.py


示例12: __init__

 def __init__(self):
     Utils.Debug.__init__(self)
     self.lexer = Lexer.Lexer()
     self.parser = yacc.yacc(module=self)
开发者ID:andrei-alpha,项目名称:malice,代码行数:4,代码来源:Parser.py


示例13: nsExactMatch


#.........这里部分代码省略.........
    @lex.TOKEN(flow)   
    def t_FLOW(t):
        return t
    
    @lex.TOKEN(ipv4)
    def t_IP(t):
        return t
    
    def t_FLOAT(t):
        r'(\d+)\.(\d*)'
        t.value = float(t.value)
        t.value = round(t.value,2) 
        return t
    
    def t_INT(t):
        r'\d+'
        t.value = int(t.value)
        return t     
    
    # A string containing ignored characters (spaces and tabs)
    t_ignore  = ' \t'
    
    # Error handling rule
    def t_error(t):
        print "Illegal character '%s'" % t.value[0]
        t.lexer.skip(1)
    
    # Build the lexer from my environment and return it    
    
    lex.lex()
    
    def p_query_unary_paren(p):
        ' query : LPAREN query RPAREN '
        p[0]=p[2]
        #print 'rule>> query : LPAREN query RPAREN>> ' + str(p[0])
    
    def p_query_binary(p):
        ''' query : query OR query
                | query AND query
                '''
        if p[2]=='+':
            p[0]={'$and':[p[1],p[3]]} 
        else:
            p[0]={'$or':[p[1],p[3]]} 
     
        #print 'rule>> query : query OR query >> ' + str(p[0])
      
    def p_query_token(p):
        'query : token'
        p[0]=p[1]
        #print ' rule>> query : token >> ' + str(p[0])
        
    def p_token_id(p):
        'token : id'
        p[0]={'content':p[1]}
    
    
    def p_token_attr_val(p):
        'token : attr_val'
        p[0]=p[1]
            
    def p_attr_val(p):
        '''
        attr_val : id EQ id 
                | id GT id   
                | id LT id
        '''
        if p[2]=='>':
            p[0]={p[1]:{'$gt':p[3]}}
        elif p[2]=='<':
            p[0]={p[1]:{'$lt':p[3]}}
        else:
            p[0]={p[1]:p[3]}   
                
    def p_id(p):
        ''' 
        id : INT
              | IP 
              | FLOW
              | FLOAT 
        '''
        #print p[1]
        p[0] = p[1]
        #print p[0]
        
    def p_id_keyword(p):
        ''' 
        id : KEYWORD
        '''
        #print p[1]
        p[0] = p[1].lower()
        #print p[0]       
    # Error rule for syntax errors
    def p_error(p):
        print "Syntax error in input!"
        #print p
    
    parser = yacc.yacc()

    return parser.parse(data)
开发者ID:misbahuddinbd,项目名称:CloudSearch,代码行数:101,代码来源:nsInterpreter.py


示例14: IfStatement

    t[0] = IfStatement(t[3], t[5], NullNode())

def p_selection_statement_02(t):
    '''selection_statement : IF LPAREN expression RPAREN statement ELSE statement'''
    t[0] = IfStatement(t[3], t[5], t[7])

def p_statement_list_02(t):
    '''statement_list : statement'''
    t[0] = StatementList(t[1])

def p_statement_list_03(t):
    '''statement_list : statement_list statement'''
    t[1].add(t[2])
    t[0] = t[1]

def p_empty(t):
    'empty :'
    pass

def p_error(t):
    print "You've got a syntax error somewhere in your code."
    print "It could be around line %d." % t.lineno
    print "Good luck finding it."
    raise ParseError()

yacc.yacc(debug=1)

#  ---------------------------------------------------------------
#  End of cparse.py
#  ---------------------------------------------------------------
开发者ID:ArturFis,项目名称:MiniC,代码行数:30,代码来源:cparse.py


示例15: p_pair


def p_pair(p):
    '''PAIR : string colon VALUE'''
    p[0] = ("pair", p[1], p[3])


    
def p_array(p):
    '''ARRAY : lbracket ELEMENTS rbracket
             | lbracket rbracket
    '''
    p[0] = ("elements", p[2]) if len(p) == 4 else ("elements",)
    


def p_elements(p):
    '''ELEMENTS : VALUE comma ELEMENTS | VALUE'''
    p[0] = p[1] if len(p) == 2 else [p[1]] + [p[3]]




if __name__ == "__main__":
    parser = yacc.yacc(parser='RD')
    tree = parser.parse(sys.stdin.read(), lexer)
    if tree is not None:
        print tree
    else:
        print "Parsing failed!"
开发者ID:dfridman1,项目名称:lex-yacc,代码行数:28,代码来源:json_yacc.py


示例16: buildparser

 def buildparser(self, **kwargs):
     self.parser = yacc.yacc(module=self, **kwargs)
开发者ID:bjodah,项目名称:pysces,代码行数:2,代码来源:InfixParser.py


示例17: tdiCompile


#.........这里部分代码省略.........
            args=list(t[1].args)
            if len(args) > 250:
                args=[Builtin('vector',tuple(args)),t[3]]
            else:
                args.append(t[3])
            t[1].args=tuple(args)
            t[0]=t[1]
            t[0].isarray = t[1].isarray and (isinstance(t[3],Scalar) or isinstance(t[3],Array))
        else:
            if t[1].isarray:
                t[0]=Data.evaluate(t[1])
            else:
                t[0]=Builtin('vector',t[1].args)

### Switch statement (i.e. switch(_a) {case(42) {statements} case(43) {statements}} )
    def p_case(t):
        """case : CASE LPAREN operand RPAREN braced_statements\n| CASE LPAREN operand RPAREN statement
        | CASE LPAREN operand RPAREN\n| CASE DEFAULT braced_statements
        | CASE DEFAULT statement\n| statement"""
        if len(t)==4:
            t[0]=Builtin('default',(t[3],))
        elif len(t)==5:
            t[0]=Builtin('case',(None,None))
            t[0].args=(t[3],)
            t[0].doAppendCase=True
        elif len(t)==6:
            t[0]=Builtin('case',(t[3],t[5]))
        else:
            t[0]=t[1]

    def p_cases(t):
        """cases : case\n| cases case"""

        def findCaseWithNoStatements(case,parent=None,argidx=0):
            ans=None
            if isinstance(case,Builtin):
                if case.name=='CASE' and len(case.args)==1:
                    ans = {'case':case,'parent':parent,'argidx':argidx}
                else:
                    for idx in range(len(case.args)):
                        ans = findCaseWithNoStatements(case.args[idx],case,idx)
                        if ans is not None:
                            break
            return ans

        def appendCase(cases,case):
            c=findCaseWithNoStatements(cases)
            if c is not None:
                appendTo=c
            else:
                appendTo={'case':cases,'parent':None,'argidx':0}
            if len(appendTo['case'].args) < 250:
                appendTo['case'].args=tuple(list(appendTo['case'].args)+[case,])
                return cases
            else:
                statement = Builtin('statement',(appendTo['case'],case))
                if appendTo['parent']==None:
                    return statement
                else:
                    args=list(appendTo['parent'].args)
                    args[appendTo['idx']]=statement
                    appendTo['parent'].args=tuple(args)
                    return cases

        if len(t)==3:
            t[1]=appendCase(t[1],t[2])
        t[0]=t[1]

    def p_switch(t):
        """operation : SWITCH LPAREN operand RPAREN LBRACE cases RBRACE"""
        t[0]=Builtin('switch',(t[3],t[6]))

### "Equals First" statement (i.e. _gub+=42)
    def p_operand_equal_first(t):
        """operation : ident EQUALSFIRST operand"""
        ops = {'+':'add','-':'subtract','*':'multiply','/':'divide','<':'lt',
                  '>':'gt','^':'power','**':'power','<=':'le','>=':'ge','==':'eq',
                  '>>':'shift_right','<<':'shift_left','&':'iand','&&':'and','!=':'NE',
                  '|':'ior','||':'or','//':'concat'}
        items=ops.items()
        ef_dict=dict()
        for itm in items:
            ef_dict.setdefault(itm[0]+'=',itm[1])
        t[0]=Builtin('equals_first',(Builtin(ef_dict[t[2]],(t[1],t[3])),))

### BACKQUOTED expression (i.e. `getnci(gub,"RECORD")
    def p_operand_backquote(t):
        """operand : BACKQUOTE operand"""
        t[0]=Data.evaluate(t[2])

### Handle syntax errors
    def p_error(t):
        if t is not None:
            print("Syntax error at '%s' in line %d: %s" % (t.value,t.lexer.lineno,t.lexer.lexdata[t.lexer.lexpos-10:t.lexer.lexpos+10]))
        else:
            print("Syntax error")

    import yacc
    yacc.yacc(write_tables=optimized,debug=0,optimize=optimized,tabmodule='tdiparsetab')
    return yacc.parse(text)
开发者ID:LucyScott,项目名称:mdsplus,代码行数:101,代码来源:tdicompile.py


示例18: ValueError

                            s&=all_tokens
                    if not s: return False
            else:
                raise ValueError("I can't handle this!")
        else:
            raise ValueError("I can't handle this!")
    if s:
        return True
    else: return False




if __name__==u"__main__":

    e_parser=yacc.yacc()
    expression=u"_ !>/nsubj/ _ >/dobj/ _ >/cop/ _ "

    node=e_parser.parse(expression)
    print "search tree:",node.to_unicode()

    conn=sqlite3.connect("/mnt/ssd/sdata/sdata2.db")
    out=codecs.getwriter("utf-8")(sys.stdout)

    for t in query(conn,node):
        t.to_conll(out)
        



开发者ID:fginter,项目名称:dep_search,代码行数:26,代码来源:search_with_expr.py


示例19: parse

    def parse(self, sentence):
        ''' 
        Perform the actual parsing (lex/yacc), define and use the grammar for
        propositional and first-order logic.
        
        Builds a parse tree and returns the root (an operator with the lowest precedent).
        '''
        
        # build the lexer
        
        # eclipse may warn you that this is an unused variable, but lex will use it
        tokens = (
                  'LBRACE', 'RBRACE', 'AND', 'OR', 'IMPLIES', 'NOT', 'ALL', 'EXISTS',
                  'PREDICATE', 'BINDING'
                  )
        
        #### DEFINE EVERY TOKEN MATCH AS A FUNCTION ###
        # this has the important side-effect of being able
        # to strictly control order of lexical matching
        
        def t_LBRACE (t): 
            r'\{'
            return t
        def t_RBRACE (t): 
            r'\}'
            return t
        def t_PREDICATE(t): 
            '\[[^\]]+\]'
            return t
        
        def t_AND(t):
            r'and'
            return t
        def t_OR(t):
            r'or'
            return t
        def t_IMPLIES(t):
            r'implies|therefore'
            return t
        
        def t_NOT(t):
            r'not'
            return t
        
        def t_ALL(t):
            r'all'
            return t
        
        def t_EXISTS(t):
            r'exists'
            return t
        
        def t_BINDING(t):
            r'[a-zA-Z_][a-zA-Z_0-9]*'
            return t
            
        # eclipse will warn you that this is an unused variable, but yacc/lex will use it
        precedence = (
                      ('left', 'IMPLIES'),
                      ('left', 'OR', 'AND'),
                      ('left', 'EXISTS', 'ALL'),
                      ('left', 'NOT'),
                      ('left', 'PREDICATE')
                      )
        
        # Build the lexer
        # again, eclipse will warn about this being an unused variable, but yacc will use it
        lexer = lex.lex()
        
        
        def p_expression_not(p):
            'expression : NOT expression'
            p[0] = Negation(p[2])
                
        def p_expression_forall_pred(p):
            'expression : ALL BINDING expression'
            p[0] = All(self, str(p[2]), self.domain, p[3])
            preds = p[0].getBoundVariablePreds()
            for x in preds:
                if(x.getFullStatement() in self.predicates.keys()):
                    del self.predicates[x.getFullStatement()]
            
        def p_expression_exists_pred(p):
            'expression : EXISTS BINDING expression'
            p[0] = Exists(self, str(p[2]), self.domain, p[3])
            preds = p[0].getBoundVariablePreds()
            for x in preds:
                if(x.getFullStatement() in self.predicates.keys()):
                    del self.predicates[x.getFullStatement()]
        
        def p_expression_implies(p):
            'expression : expression IMPLIES expression'
            p[0] = Implication(p[1], p[3])
            
            
        def p_expression_and(p):
            'expression : expression AND expression'
            p[0] = Conjunction(p[1], p[3])
            
        def p_expression_or(p):
#.........这里部分代码省略.........
开发者ID:kakwa,项目名称:pylogic,代码行数:101,代码来源:logic.py


示例20: p_error

        # tell which is which.  So understanding of colon expressions
        # is put off until after "resolve".
        p[0] = p[1]
        p[0].args.insert(1,p[3])
    else:
        p[0] = node.expr(op=p[2],args=node.expr_list([p[1],p[3]]))

def p_error(p):
    #import pdb; pdb.set_trace()
    #print "p_error",p
    if ("." in options.syntax_errors or
        os.path.basename(options.filename) in options.syntax_errors):
        return p
    raise syntax_error(p)

parser = yacc.yacc(start="top")

def parse(buf,filename=""):
    options.filename = filename
    try:
        new_lexer = lexer.new()
        p = parser.parse(buf,tracking=1,debug=0,lexer=new_lexer)
        return p
    except lexer.IllegalCharacterError as (lineno,column,c):
        #import pdb; pdb.set_trace()
        print 'Error:%s:%s.%s:illegal character:%s' % (filename,lineno,column,c)
        return []
    except NotImplementedError as e:
        print 'Error:%s:not implemented:%s' % (filename,e)
        return []
    except syntax_error as e:
开发者ID:RobBW,项目名称:smop,代码行数:31,代码来源:parse.py



注:本文中的yacc.yacc函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python plot.addData函数代码示例发布时间:2022-05-26
下一篇:
Python yacc.parse函数代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap