From 49871aff138a2774e7e2f84087b48c6b8c60acae Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Sat, 19 Sep 2015 14:27:13 -0400 Subject: [PATCH] add token.IsLiteral() method --- parser/parser.go | 6 +++--- token/token.go | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/parser/parser.go b/parser/parser.go index 9933815..599aff7 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -48,7 +48,7 @@ func (parser *Parser) expect(tokID token.TokenID) bool { func (parser *Parser) expectLiteral(literal string) bool { next := parser.nextToken() - if next.ID != token.NAME || next.Literal != literal { + if !next.IsLiteral(literal) { msg := "Unexpected literal \"" + next.Literal + "\" expected \"" + literal + "\"" parser.addError(msg) return false @@ -78,7 +78,7 @@ func (parser *Parser) parseOrTest() *ast.OrTest { orTest.Append(andTest) for { next := parser.nextToken() - if next.ID != token.NAME || next.Literal != "and" { + if !next.IsLiteral("and") { parser.unreadToken(next) break } @@ -100,7 +100,7 @@ func (parser *Parser) parseTest() *ast.Test { test.Append(orTest) next := parser.nextToken() // Do not use `parser.expectLiteral`, this next part is optional - if next.ID == token.NAME && next.Literal == "if" { + if next.IsLiteral("if") { orTest = parser.parseOrTest() if orTest != nil { test.Append(orTest) diff --git a/token/token.go b/token/token.go index 0f4e083..3a1f1be 100644 --- a/token/token.go +++ b/token/token.go @@ -23,6 +23,10 @@ func (token *Token) End() []int { return []int{token.LineEnd, token.ColumnEnd} } +func (token *Token) IsLiteral(literal string) bool { + return token.ID == NAME && token.Literal == literal +} + func (token *Token) Repr() string { return fmt.Sprintf( "Token{ID: %#v, Literal: %#v, LineStart: %#v, ColumnStart: %#v, LineEnd: %#v, ColumnEnd: %#v}",