def p_halfblock(p): '''halfblock : label | halfblock newline | halfblock dot | halfblock pvar | halfblock dvar | halfblock spaces | halfblock identifier | halfblock cblock | halfblock assign | halfblock pblock | halfblock colon | halfblock string | halfblock num | halfblock eq | halfblock lt | halfblock gt | halfblock not | halfblock tab | halfblock misc | halfblock comma | halfblock fcall ''' if len(p)>2: p[0]=p[1] n=p[2] if isinstance(p[2],str) or isinstance(p[2],int): x= p[2] if x=='\n': x='newline' n=Node("token") n.str = x p[0].args.append(n) else: p[0] = Node('halfb') p[0].label = p[1]