aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Kiryukhin <a.kiryukhin@mail.ru>2022-02-02 21:19:32 +0300
committerAlexander Kiryukhin <a.kiryukhin@mail.ru>2022-02-02 21:19:32 +0300
commitd8d462d3f91e85323ebe478b01fc4bdaae17afe9 (patch)
treed686759807430a31f78f2b4d614eba32218066c6
parentff198abd8fc9e2019c2f3ef9b7e74206ecdb99b7 (diff)
Return true on AcceptWhile and AcceptWhileNot functionsv0.0.3
-rw-r--r--example/math_expression/stack.go5
-rw-r--r--lexer.go10
2 files changed, 11 insertions, 4 deletions
diff --git a/example/math_expression/stack.go b/example/math_expression/stack.go
index b6c37b9..eebd476 100644
--- a/example/math_expression/stack.go
+++ b/example/math_expression/stack.go
@@ -1,3 +1,4 @@
+//go:build example
// +build example
package main
@@ -10,7 +11,7 @@ type lexemStack []unilex.Lexem
func (ls *lexemStack) Head() (l unilex.Lexem) {
if len(*ls) == 0 {
- return unilex.Lexem{Type: unilex.LEOF}
+ return unilex.Lexem{Type: unilex.LexEOF}
}
return (*ls)[len(*ls)-1]
}
@@ -21,7 +22,7 @@ func (ls *lexemStack) Push(l unilex.Lexem) {
func (ls *lexemStack) Pop() (l unilex.Lexem) {
if len(*ls) == 0 {
- return unilex.Lexem{Type: unilex.LEOF}
+ return unilex.Lexem{Type: unilex.LexEOF}
}
*ls, l = (*ls)[:len(*ls)-1], (*ls)[len(*ls)-1]
return l
diff --git a/lexer.go b/lexer.go
index b556045..3b4da4d 100644
--- a/lexer.go
+++ b/lexer.go
@@ -134,16 +134,22 @@ func (l *Lexer) AcceptAnyOf(s []string, caseInsentive bool) bool {
}
// AcceptWhile passing symbols from input while they at `valid` string.
-func (l *Lexer) AcceptWhile(valid string) {
+func (l *Lexer) AcceptWhile(valid string) bool {
+ isValid := false
for l.Accept(valid) {
+ isValid = true
}
+ return isValid
}
// AcceptWhileNot passing symbols from input while they NOT in `invalid` string.
-func (l *Lexer) AcceptWhileNot(invalid string) {
+func (l *Lexer) AcceptWhileNot(invalid string) bool {
+ isValid := false
for !strings.ContainsRune(invalid, l.Next()) {
+ isValid = true
}
l.Back()
+ return isValid
}
// AtStart returns true if current lexem not empty