Lines Matching refs:tok
178 func (l *lexer) err(tok *Token, msg string, args ...interface{}) {
180 if tok != nil {
181 rng = tok.Range
225 tok := &Token{Type: PIdent, Range: Range{Start: l.pos, End: l.pos}}
238 tok.Range.End = l.pos
239 l.toks = append(l.toks, tok)
246 tok := &Token{Type: Unknown, Range: Range{Start: l.pos, End: l.pos}}
255 switch tok.Type {
257 tok.Type = Ident
259 l.err(tok, "invalid number")
263 switch tok.Type {
265 tok.Type = Float
271 if tok.Type == Unknown {
272 tok.Type = Integer
278 tok.Range.End = l.pos
279 l.toks = append(l.toks, tok)
285 tok := &Token{Type: String, Range: Range{Start: l.pos, End: l.pos}}
295 tok.Range.End = l.pos
296 l.toks = append(l.toks, tok)
310 tok := &Token{Type: Operator, Range: Range{Start: l.pos, End: l.pos}}
314 tok.Range.End = l.pos
315 l.toks = append(l.toks, tok)
324 tok := &Token{Type: Comment, Range: Range{Start: l.pos, End: l.pos}}
334 tok.Range.End = l.pos
335 l.toks = append(l.toks, tok)
344 tok := &Token{Type: Newline, Range: Range{Start: l.pos, End: l.pos}}
349 tok.Range.End = l.pos
350 l.toks = append(l.toks, tok)
431 inst.Tokens = []*Token{p.tok(i)}
432 p.mappings[p.tok(i)] = inst
440 inst.Tokens = []*Token{p.tok(i), p.tok(i + 1), p.tok(i + 2)}
441 p.mappings[p.tok(i+2)] = inst
453 p.err(p.tok(i), "'%s' expects a result", inst.Opcode.Opname)
460 p.addIdentDef(inst.Result.Text(p.lines), inst, p.tok(i))
498 extImportTok, extNameTok := p.tok(i+n), p.tok(i+n+1)
542 tok := p.tok(i)
543 if tok == nil {
550 Tokens: []*Token{tok},
552 p.mappings[tok] = op
556 s := tok.Text(p.lines)
570 if p.tok(i+count).Text(p.lines) == "|" {
584 p.err(p.tok(i), "invalid operand value '%s'", s)
592 p.addIdentRef(p.tok(i))
596 p.err(p.tok(i), "operand requires id, got '%s'", tok.Text(p.lines))
601 switch tok.Type {
606 p.err(p.tok(i), "operand requires literal, got '%s'", tok.Text(p.lines))
622 p.err(p.tok(i), "OperandKind '%s' has unexpected category '%s'", k.Kind, k.Category)
627 // tok returns the i'th token, or nil if i is out of bounds.
628 func (p *parser) tok(i int) *Token {
638 if tok := p.ident(i); tok != nil {
639 name := tok.Text(p.lines)
650 if tok := p.tok(i); tok != nil && tok.Type == Operator {
651 return tok.Text(p.lines)
658 if tok := p.tok(i); tok != nil && tok.Type == Ident {
659 return tok
666 if tok := p.tok(i); tok != nil && tok.Type == PIdent {
667 return tok
674 if tok := p.tok(i); tok != nil && tok.Type == Comment {
682 if tok := p.tok(i); tok != nil && tok.Type == Newline {
720 func (p *parser) err(tok *Token, msg string, args ...interface{}) {
722 if tok != nil {
723 rng = tok.Range