Lines Matching refs:precedence
1140 # prec - Production precedence level
1154 def __init__(self,number,name,prod,precedence=('right',0),func=None,file='',line=0):
1162 self.prec = precedence
1341 self.Precedence = { } # Precedence rules for each terminal. Contains tuples of the
1344 self.UsedPrecedence = { } # Precedence rules that were actually used by the grammer.
1346 # a warning about unused precedence rules.
1360 # Sets the precedence for a given terminal. assoc is the associativity such as
1367 if term in self.Precedence:
1368 raise GrammarError("Precedence already specified for terminal '%s'" % term)
1371 self.Precedence[term] = (assoc,level)
1377 # computes its precedence level.
1383 # Precedence is determined by the precedence of the right-most non-terminal
1384 # or the precedence of a terminal specified by %prec.
1415 # Determine the precedence level
1422 prodprec = self.Precedence.get(precname,None)
1424 raise GrammarError("%s:%d: Nothing known about the precedence of '%s'" % (file,line,precname))
1429 # If no %prec, precedence is determined by the rightmost terminal symbol
1431 prodprec = self.Precedence.get(precname,('right',0))
1625 # Returns a list of tuples (term,precedence) corresponding to precedence
1627 # on which precedence was applied and precedence is a string such as 'left' or
1628 # 'right' corresponding to the type of precedence.
1633 for termname in self.Precedence:
1635 unused.append((termname,self.Precedence[termname][0]))
2364 Precedence = self.grammar.Precedence
2416 # some precedence rules here.
2418 rprec,rlevel = Precedence.get(a,('right',0))
2471 # Do a precedence check.
2472 # - if precedence of reduce rule is higher, we reduce.
2473 # - if precedence of reduce is same and left assoc, we reduce.
2476 sprec,slevel = Precedence.get(a,('right',0))
2478 # We decide to shift here... highest precedence to shift
2759 # start symbol, error function, tokens, precedence list, action functions,
2922 # Get the precedence map (if any)
2924 self.prec = self.pdict.get("precedence",None)
2926 # Validate and parse the precedence map
2931 self.log.error("precedence must be a list or tuple")
2936 self.log.error("Bad precedence table")
2941 self.log.error("Malformed precedence entry %s. Must be (assoc, term, ..., term)",p)
2946 self.log.error("precedence associativity must be a string")
2951 self.log.error("precedence items must be strings")
3110 # Set precedence level for terminals
3210 errorlog.error("Precedence rule '%s' defined for unknown symbol '%s'", assoc, term)