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

Golang common.Token类代码示例

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

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



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

示例1: Token2eof

func Token2eof(tok common.Token) *EofTok {
	et, ok := tok.(*EofTok)
	if !ok {
		tok.Error("Not an EOF token")
	}
	return et
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:7,代码来源:token.go


示例2: Token2int

func Token2int(tok common.Token) *IntTok {
	it, ok := tok.(*IntTok)
	if !ok {
		tok.Error("Not an integer token")
	}
	return it
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:7,代码来源:token.go


示例3: Token2operator

func Token2operator(tok common.Token) *OperatorTok {
	ot, ok := tok.(*OperatorTok)
	if !ok {
		tok.Error("Not an operator token")
	}
	return ot
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:7,代码来源:token.go


示例4: Token2simple

func Token2simple(tok common.Token) *SimpleToken {
	st, ok := tok.(*SimpleToken)
	if !ok {
		tok.Error("Not a simple token")
	}
	return st
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:7,代码来源:token.go


示例5: Token2id

func Token2id(tok common.Token) *IdTok {
	it, ok := tok.(*IdTok)
	if !ok {
		tok.Error("Not an ID token")
	}
	return it
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:7,代码来源:token.go


示例6: Token2string

func Token2string(tok common.Token) *StringTok {
	st, ok := tok.(*StringTok)
	if !ok {
		tok.Error("Not a string token")
	}
	return st
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:7,代码来源:token.go


示例7: Token2space

func Token2space(tok common.Token) *SpaceTok {
	st, ok := tok.(*SpaceTok)
	if !ok {
		tok.Error("Not a space token")
	}
	return st
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:7,代码来源:token.go


示例8: Token2char

func Token2char(tok common.Token) *CharTok {
	ct, ok := tok.(*CharTok)
	if !ok {
		tok.Error("Not a character token")
	}
	return ct
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:7,代码来源:token.go


示例9: testStringVsTokens

func testStringVsTokens(t *testing.T, str string, toks []*tstTok) {
	lx := NewLexer(srcbuf.NewSourceFromBuffer(strings.Bytes(str)))
	var tok common.Token
	var i int
	for tok, i = lx.GetToken(), 0; tok.Type() != common.TOK_EOF && i < len(toks); tok, i = lx.GetToken(), i+1 {
		switch typ := tok.(type) {
		case *IntTok:
			if toks[i].typ != typ.Type() {
				t.Errorf("Expected token type %v, but got: %v.\n", toks[i].typ, typ.Type())
			}
			if toks[i].numVal != typ.Value() {
				t.Errorf("Expected value %v, but got: %v.\n", toks[i].numVal, typ.Value())
			}
		case *CharTok:
			if toks[i].typ != typ.Type() {
				t.Errorf("Expected token type %v, but got: %v.\n", toks[i].typ, typ.Type())
			}
			if toks[i].numVal != int64(typ.Value()) {
				t.Errorf("Expected value %v, but got: %v.\n", toks[i].numVal, typ.Value())
			}
		case *StringTok:
			if toks[i].typ != typ.Type() {
				t.Errorf("Expected token type %v, but got: %v.\n", toks[i].typ, typ.Type())
			}
			if toks[i].strVal != typ.Value() {
				t.Errorf("Expected value %v, but got: %v.\n", toks[i].strVal, typ.Value())
			}
		case *SpaceTok:
			if toks[i].typ != typ.Type() {
				t.Errorf("Expected token type %v, but got: %v.\n", toks[i].typ, typ.Type())
			}
			space := int64(typ.Space())
			if typ.AtStartOfLine() {
				space += 1000
			}
			if toks[i].numVal != space {
				t.Errorf("Expected space %v, but got: %v.\n", toks[i].numVal, space)
			}
		default:
			if toks[i].typ != typ.Type() {
				t.Errorf("Expected token type %v, but got: %v.\n", toks[i].typ, typ.Type())
			}
			if toks[i].checkContent && toks[i].content != typ.Content() {
				t.Errorf("Expected content %v, but got: %v.\n", toks[i].content, typ.Content())
			}
		}
	}
	if i != len(toks) {
		t.Error("Got too few tokens!")
	}
	if tok.Type() != common.TOK_EOF {
		t.Error("Got too many tokens!")
	}
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:54,代码来源:lexer_test.go


示例10: handleEof

// special handling of EOF (so we have valid code if possible)
func handleEof(tok common.Token, tb *tokBuf) bool {
  if tok.Type() == common.TOK_EOF {
    if tb.indentLevel > 0 {
      handleIndent(tb.lx.NewSpaceTok(tok, 0, true), tok, tb);
    } else {
      tb.curTok = tb.tokBuf.PushBack(tok);
    }
    return true;
  }
  return false;
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:12,代码来源:tokbuf.go


示例11: handleSpace

func handleSpace(tok common.Token, tb *tokBuf) bool {
  if tok.Type() == common.TOK_SPACE {
    spaceTok := lexer.Token2space(tok);
    if spaceTok.AtStartOfLine() {
      handlePossibleIndent(tok, tb);
    } else {
      tb.curTok = tb.tokBuf.PushBack(tok);
    }
    return true;
  }
  return false;
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:12,代码来源:tokbuf.go


示例12: recordIndent

func recordIndent(indent int, tok common.Token, tb *tokBuf) {
  // we can have half indentations (2 spaces) and
  //             full indentations (4 spaces)
  switch indent {
  case  2:
    tb.indentLevel++;
    tb.curTok = tb.tokBuf.PushBack(tb.lx.NewCopyTok(common.TOK_HALF_INDENT, tok));
  case  4:
    tb.indentLevel += 2;
    tb.curTok = tb.tokBuf.PushBack(tb.lx.NewCopyTok(common.TOK_INDENT, tok));
  default:
    tok.Error("Indentation error");
  }
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:14,代码来源:tokbuf.go


示例13: handleColon

func handleColon(tok common.Token, tb *tokBuf) bool {
  if tok.Type() == common.TOK_COLON {
    curTok := tb.tokBuf.PushBack(tok);
    tok2 := tb.getFilteredToken();  // whats behind the colon?
    if tok2.Type() != common.TOK_NL {
      // No TOK_NL: just 2 normal tokens then
      tb.tokBuf.PushBack(tok2);
    } else {
      curTok.Value = tb.lx.NewAnyTok(common.TOK_BLOCK_START,
          tok.SourcePiece().Start(), tok2.SourcePiece().End());
    }
    tb.curTok = curTok;
    return true;
  }
  return false;
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:16,代码来源:tokbuf.go


示例14: NewCopyTok

func (lx *Lexer) NewCopyTok(typ common.TokEnum, tok common.Token) common.Token {
	return &SimpleToken{typ, tok.SourcePiece()}
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:3,代码来源:token.go


示例15: ClearUpTo

// remove old lines from the underlying source buffer
func (tb *tokBuf) ClearUpTo(tok common.Token) {
  tb.lx.ClearUpTo(tok.SourcePiece().Start());
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:4,代码来源:tokbuf.go


示例16: recordDedent

func recordDedent(dedent int, tok common.Token, tb *tokBuf) {
  if dedent & 1 != 0 { tok.Error("Uneven dedentation error"); }
  recordOtherDedents(recordFirstDedent(dedent/2, tok, tb), tok, tb);
}
开发者ID:ole108,项目名称:diamond-lang,代码行数:4,代码来源:tokbuf.go



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Golang dlog.Printf函数代码示例发布时间:2022-05-24
下一篇:
Golang thrift.TProtocol类代码示例发布时间:2022-05-24
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

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

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

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