本文整理汇总了Python中Dictionary.Dictionary.addSymbol方法的典型用法代码示例。如果您正苦于以下问题:Python Dictionary.addSymbol方法的具体用法?Python Dictionary.addSymbol怎么用?Python Dictionary.addSymbol使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Dictionary.Dictionary
的用法示例。
在下文中一共展示了Dictionary.addSymbol方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: class
# 需要导入模块: from Dictionary import Dictionary [as 别名]
# 或者: from Dictionary.Dictionary import addSymbol [as 别名]
#.........这里部分代码省略.........
i = 0
First = []
while i < len(Rule):
if (Rule[i] == "[["):
First.append(Rule[i+1])
i = self.findElement(Rule, "]]", i+1)
elif (Rule[i] == "{"):
First.append(Rule[i+1])
i = self.findElement(Rule, "}", i+1)
else:
First.append(Rule[i])
return First
i += 1
return First
def nextLevel(self, List):
"""
Returns list with next level - non-terminals
"""
out = []
for symbol in List:
if (self.isTerminal(symbol)):
out.append(symbol)
else:
for _R in Rules[symbol]:
for symbol2 in self.PossiblePrefixes(_R):
out.append(symbol2)
return out
def findFirstSymbols(self, Rule):
"""
Effects: Return list of first symbol
"""
List = self.PossiblePrefixes(Rule)
while (self.hasnonTerminals(List)):
List = self.nextLevel(List)
return List
def hasnonTerminals(self, List):
"""
Effects: Return True if list contains at least one non-terminal
"""
for symbol in List:
if not self.isTerminal(symbol):
return True
return False
def isDerivedFrom(self, ruleSymbol):
if (self.isTerminal(ruleSymbol)):
return ruleSymbol == self.inputSymbol
else:
if ruleSymbol == self.inputSymbol:
return True
else:
return (not self.chooseAppropriateRule(ruleSymbol) == None)
def isSemanticAction(self, ruleSymbol):
"""
Effects: Returns True if semantic action occurs and needs to be done
"""
return ruleSymbol[0] == '#'
def extractSemanticAction(self, ruleSymbol):
"""
Effects: Return number of semantic action
Requires: ruleSymbol must be in format "#\d+"
"""
return ruleSymbol[1:]
def addToDictionary(self):
if (not self.lexema.isFound(self.word)):
# @todo extract in comfortable place
self.lexema.addSymbol( {"name" : self.word, 'class' : self.inputSymbol} )
if self.inputSymbol == 'intConst':
self.lexema.setObject( self.word, AtrClasses.AttrIntConst(self.word) )
if self.inputSymbol == 'floatConst':
self.lexema.setObject( self.word, AtrClasses.AttrFloatConst(self.word) )
if self.inputSymbol == 'StringConst':
self.lexema.setObject( self.word, AtrClasses.AttrStringConst(self.word) )
def doSemanticAction(self, RuleItem, i):
currentRuleSymbol = None
if i+1 < len(RuleItem): currentRuleSymbol = RuleItem[i+1]
if currentRuleSymbol is None: return False
if self.isSemanticAction(currentRuleSymbol):
semanticActionNumber = self.extractSemanticAction(currentRuleSymbol)
if (semanticActionNumber.find(',') == -1):
SemanticActions().switchAction(self.inputstream.lineNumber, semanticActionNumber, self.word)
else:
(semanticActionNumber1, semanticActionNumber2) = semanticActionNumber.split(',')
SemanticActions().switchAction(self.inputstream.lineNumber, semanticActionNumber1, self.word)
SemanticActions().switchAction(self.inputstream.lineNumber, semanticActionNumber2, self.word)
def getRuleSymbol(self, RuleItem, i):
if (i < len(RuleItem)):
return RuleItem[i]
else:
return None
示例2: addToDictionary
# 需要导入模块: from Dictionary import Dictionary [as 别名]
# 或者: from Dictionary.Dictionary import addSymbol [as 别名]
def addToDictionary(self, dict):
dictionary = Dictionary()
dictionary.addSymbol( dict )