本文整理汇总了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;未经允许,请勿转载。 |
请发表评论