• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Golang token.New函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



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


示例16: nextColon

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

	// skip ':'
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}
	return s.switch2(token.COLON, token.DEFINE)
}
开发者ID:jackspirou,项目名称:chip,代码行数:9,代码来源:scanner.go


示例17: nextSlash

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


示例18: nextString

// nextString parse a string constant.
func (s *Scanner) nextString() token.Token {
	pos := s.pos
	buffer := bytes.NewBufferString("")

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

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

	if s.char != '"' {
		return token.New(token.ERROR, "string has no closing quote", pos)
	}
	if err := s.next(); err != nil {
		return token.New(token.ERROR, err.Error(), s.pos)
	}
	return token.New(token.STRING, buffer.String(), pos)
}
开发者ID:jackspirou,项目名称:chip,代码行数:25,代码来源:scanner.go


示例19: nextEOF

// nextEOF parse a EOF.
func (s *Scanner) nextEOF() token.Token {
	return token.New(token.EOF, token.EOF.String(), s.pos)
}
开发者ID:jackspirou,项目名称:chip,代码行数:4,代码来源:scanner.go


示例20: nextComma

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



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang sdl.Renderer类代码示例发布时间:2022-05-23
下一篇:
Golang torrent.MetaInfo类代码示例发布时间:2022-05-23
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap