当前位置: 首页>>代码示例>>Golang>>正文


Golang token.New函数代码示例

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


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

示例1: nextPeriod

// nextPeriod parse a '.'.
func (s *Scanner) nextPeriod() token.Token {

	// skip '.'
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}

	if digit(s.char) {
		return s.nextNumber(true)
	}

	pos := s.pos

	if s.char == '.' {
		if err := s.next(); err != nil {
			return token.New(token.ERROR, err.Error(), s.pos)
		}
		if s.char == '.' {
			s.next()
			return token.New(token.ELLIPSIS, "...", pos)
		}
		return token.New(token.ERROR, "unexpected "+string(s.char), s.pos)
	}
	return token.New(token.PERIOD, token.PERIOD.String(), s.pos)
}
开发者ID:jackspirou,项目名称:chip,代码行数:26,代码来源:scanner.go

示例2: nextNumber

// nextNumber parse a number.
func (s *Scanner) nextNumber(decimal bool) token.Token {
	pos := s.pos
	if decimal {

		buffer := bytes.NewBufferString(".")

		for digit(s.char) {
			buffer.WriteRune(s.char)
			if err := s.next(); err != nil {
				return token.New(token.ERROR, err.Error(), s.pos)
			}
		}
		return token.New(token.FLOAT, buffer.String(), pos)
	}

	tok := token.INT
	buffer := bytes.NewBufferString("")

	for digit(s.char) || s.char == '.' {
		buffer.WriteRune(s.char)
		if s.char == '.' {
			tok = token.FLOAT
		}
		if err := s.next(); err != nil {
			return token.New(token.ERROR, err.Error(), s.pos)
		}
	}
	return token.New(tok, buffer.String(), pos)
}
开发者ID:jackspirou,项目名称:chip,代码行数:30,代码来源:scanner.go

示例3: switch2

// scanner method helpers
//
func (s *Scanner) switch2(tok0, tok1 token.Type) token.Token {
	if s.char == '=' {
		if err := s.next(); err != nil {
			return token.New(token.ERROR, err.Error(), s.pos)
		}
		return token.New(tok1, tok1.String(), s.pos)
	}
	return token.New(tok0, tok0.String(), s.pos)
}
开发者ID:jackspirou,项目名称:chip,代码行数:11,代码来源:scanner.go

示例4: nextAmpersand

// nextAmpersand parse a '&'.
func (s *Scanner) nextAmpersand() token.Token {
	// skip '&'
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}
	if s.char == '^' {
		if err := s.next(); err != nil {
			return token.New(token.ERROR, err.Error(), s.pos)
		}
		return s.switch2(token.AndNot, token.AndNotAssign)
	}
	return s.switch3(token.AND, token.AndAssign, '&', token.LAND)
}
开发者ID:jackspirou,项目名称:chip,代码行数:14,代码来源:scanner.go

示例5: nextPipe

// nextPipe parse a '|'.
func (s *Scanner) nextPipe() token.Token {
	// skip '|'
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}
	return s.switch3(token.OR, token.ORAssign, '|', token.LOR)
}
开发者ID:jackspirou,项目名称:chip,代码行数:8,代码来源:scanner.go

示例6: nextStar

// nextStar parse a '*'.
func (s *Scanner) nextStar() token.Token {
	// skip '*'
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}
	return s.switch2(token.MUL, token.MulAssign)
}
开发者ID:jackspirou,项目名称:chip,代码行数:8,代码来源:scanner.go

示例7: nextLess

// nextLess parse a '<'.
func (s *Scanner) nextLess() token.Token {

	// skip '<'
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}
	if s.char == '-' {

		// skip '-'
		if err := s.next(); err != nil {
			return token.New(token.ERROR, err.Error(), s.pos)
		}
		return token.New(token.ARROW, token.ARROW.String(), s.pos)
	}
	return s.switch4(token.LSS, token.LEQ, '<', token.SHL, token.ShlAssign)
}
开发者ID:jackspirou,项目名称:chip,代码行数:17,代码来源:scanner.go

示例8: nextDash

// nextDash parse a '-'.
func (s *Scanner) nextDash() token.Token {
	// skip '-'
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}
	return s.switch3(token.SUB, token.SubAssign, '-', token.DEC)
}
开发者ID:jackspirou,项目名称:chip,代码行数:8,代码来源:scanner.go

示例9: nextCaret

// nextCaret parse a '^'.
func (s *Scanner) nextCaret() token.Token {
	// skip '^'
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}
	return s.switch2(token.XOR, token.XORAssign)
}
开发者ID:jackspirou,项目名称:chip,代码行数:8,代码来源:scanner.go

示例10: nextGreater

// nextGreater parse a '>'.
func (s *Scanner) nextGreater() token.Token {
	// skip '>'
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}
	return s.switch4(token.GTR, token.GEQ, '>', token.SHR, token.ShrAssign)
}
开发者ID:jackspirou,项目名称:chip,代码行数:8,代码来源:scanner.go

示例11: nextEqual

// nextEqual parse a '='.
func (s *Scanner) nextEqual() token.Token {
	// skip '='
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}
	return s.switch2(token.ASSIGN, token.EQL)
}
开发者ID:jackspirou,项目名称:chip,代码行数:8,代码来源:scanner.go

示例12: nextBang

// nextBang parse a '!'.
func (s *Scanner) nextBang() token.Token {
	// skip '!'
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}
	return s.switch2(token.NOT, token.NEQ)
}
开发者ID:jackspirou,项目名称:chip,代码行数:8,代码来源:scanner.go

示例13: nextPercent

// nextPercent parse a '%'.
func (s *Scanner) nextPercent() token.Token {
	// skip '%'
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}
	return s.switch2(token.REM, token.RemAssign)
}
开发者ID:jackspirou,项目名称:chip,代码行数:8,代码来源:scanner.go

示例14: nextPlus

// nextPlus parse a '+'.
func (s *Scanner) nextPlus() token.Token {
	// skip '+'
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}
	return s.switch3(token.ADD, token.AddAssign, '+', token.INC)
}
开发者ID:jackspirou,项目名称:chip,代码行数:8,代码来源:scanner.go

示例15: nextIdentifier

// nextIdentifier sets a global token to next name.
func (s *Scanner) nextIdentifier() token.Token {
	pos := s.pos
	buffer := bytes.NewBufferString("")

	for letterOrDigit(s.char) {
		buffer.WriteRune(s.char)
		if err := s.next(); err != nil {
			return token.New(token.ERROR, err.Error(), s.pos)
		}
	}

	lit := buffer.String()
	if len(lit) > 1 {
		return token.New(token.Lookup(lit), lit, pos)
	}
	return token.New(token.IDENT, lit, s.pos)
}
开发者ID:jackspirou,项目名称:chip,代码行数:18,代码来源:scanner.go


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