MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / ParseAtomicCodeNode

Function ParseAtomicCodeNode

tests/external/gmock-1.7.0/gtest/scripts/pump.py:503–561  ·  view source on GitHub ↗
(tokens)

Source from the content-addressed store, hash-verified

501
502
503def ParseAtomicCodeNode(tokens):
504 def Pop(token_type=None):
505 return PopToken(tokens, token_type)
506
507 head = PopFront(tokens)
508 t = head.token_type
509 if t == 'code':
510 return RawCodeNode(head)
511 elif t == '$var':
512 id_token = Pop('id')
513 Pop('=')
514 next = PeekToken(tokens)
515 if next.token_type == 'exp':
516 exp_token = Pop()
517 return VarNode(id_token, ParseExpNode(exp_token))
518 Pop('[[')
519 code_node = ParseCodeNode(tokens)
520 Pop(']]')
521 return VarNode(id_token, code_node)
522 elif t == '$for':
523 id_token = Pop('id')
524 next_token = PeekToken(tokens)
525 if next_token.token_type == 'code':
526 sep_token = next_token
527 Pop('code')
528 else:
529 sep_token = None
530 Pop('[[')
531 code_node = ParseCodeNode(tokens)
532 Pop(']]')
533 return ForNode(id_token, sep_token, code_node)
534 elif t == '$if':
535 exp_token = Pop('code')
536 Pop('[[')
537 code_node = ParseCodeNode(tokens)
538 Pop(']]')
539 else_node = ParseElseNode(tokens)
540 return IfNode(ParseExpNode(exp_token), code_node, else_node)
541 elif t == '$range':
542 id_token = Pop('id')
543 exp1_token = Pop('exp')
544 Pop('..')
545 exp2_token = Pop('exp')
546 return RangeNode(id_token, ParseExpNode(exp1_token),
547 ParseExpNode(exp2_token))
548 elif t == '$id':
549 return ParseExpNode(Token(head.start + 1, head.end, head.value[1:], 'id'))
550 elif t == '$($)':
551 return LiteralDollarNode(head)
552 elif t == '$':
553 exp_token = Pop('exp')
554 return ParseExpNode(exp_token)
555 elif t == '[[':
556 code_node = ParseCodeNode(tokens)
557 Pop(']]')
558 return code_node
559 else:
560 PushFront(tokens, head)

Callers 1

ParseCodeNodeFunction · 0.85

Calls 14

PopFrontFunction · 0.85
RawCodeNodeClass · 0.85
PopFunction · 0.85
PeekTokenFunction · 0.85
VarNodeClass · 0.85
ParseExpNodeFunction · 0.85
ParseCodeNodeFunction · 0.85
ForNodeClass · 0.85
ParseElseNodeFunction · 0.85
IfNodeClass · 0.85
RangeNodeClass · 0.85
LiteralDollarNodeClass · 0.85

Tested by

no test coverage detected