0
0

query syntax now accepts floats for boost

This commit is contained in:
Marty Schoch 2014-08-25 20:09:53 -04:00
parent 78db88897c
commit 680de03e65
4 changed files with 432 additions and 386 deletions

View File

@ -9,11 +9,11 @@
/^/ { logDebugTokens("BOOST"); return BOOST } /^/ { logDebugTokens("BOOST"); return BOOST }
/\(/ { logDebugTokens("LPAREN"); return LPAREN } /\(/ { logDebugTokens("LPAREN"); return LPAREN }
/\)/ { logDebugTokens("RPAREN"); return RPAREN } /\)/ { logDebugTokens("RPAREN"); return RPAREN }
/-?[0-9]|[1-9][0-9]*/ /-?([0-9]|[1-9][0-9]*)(\.[0-9][0-9]*)?/
{ {
lval.n,_ = strconv.Atoi(yylex.Text()); lval.f,_ = strconv.ParseFloat(yylex.Text(), 64);
logDebugTokens("INT - %d", lval.n); logDebugTokens("NUMBER - %f", lval.f);
return INT return NUMBER
} }
/[ \t\n]+/ { logDebugTokens("WHITESPACE (count=%d)", len(yylex.Text())) /* eat up whitespace */ } /[ \t\n]+/ { logDebugTokens("WHITESPACE (count=%d)", len(yylex.Text())) /* eat up whitespace */ }
/[^\t\n\f\r :^\+\-]+/ { /[^\t\n\f\r :^\+\-]+/ {

View File

@ -23,65 +23,44 @@ a = make([]family, 1)
{ {
var acc [18]bool var acc [18]bool
var fun [18]func(rune) int var fun [18]func(rune) int
fun[8] = func(r rune) int { fun[7] = func(r rune) int {
switch(r) { switch(r) {
case 110: return 5 case 110: return 2
case 117: return 6 case 114: return 2
case 47: return 7 case 34: return 3
case 92: return 8 case 92: return 4
case 34: return 9 case 102: return 2
case 114: return 10 case 117: return 2
case 116: return 11 case 116: return 2
case 102: return 12 case 47: return 2
case 98: return 13 case 98: return 2
default: default:
switch { switch {
case 48 <= r && r <= 57: return 4 case 48 <= r && r <= 57: return 2
case 65 <= r && r <= 70: return 4 case 65 <= r && r <= 70: return 2
case 97 <= r && r <= 102: return 4 case 97 <= r && r <= 102: return 2
default: return 4 default: return 2
} }
} }
panic("unreachable") panic("unreachable")
} }
fun[15] = func(r rune) int { fun[1] = func(r rune) int {
switch(r) { switch(r) {
case 110: return 4 case 110: return 2
case 117: return 4 case 114: return 2
case 47: return 4
case 92: return 2
case 34: return 3 case 34: return 3
case 114: return 4 case 92: return 4
case 116: return 4 case 102: return 2
case 102: return 16 case 117: return 2
case 98: return 16 case 116: return 2
case 47: return 2
case 98: return 2
default: default:
switch { switch {
case 48 <= r && r <= 57: return 16 case 48 <= r && r <= 57: return 2
case 65 <= r && r <= 70: return 16 case 65 <= r && r <= 70: return 2
case 97 <= r && r <= 102: return 16 case 97 <= r && r <= 102: return 2
default: return 4 default: return 2
}
}
panic("unreachable")
}
fun[10] = func(r rune) int {
switch(r) {
case 117: return 4
case 47: return 4
case 92: return 2
case 34: return 3
case 114: return 4
case 116: return 4
case 102: return 4
case 98: return 4
case 110: return 4
default:
switch {
case 48 <= r && r <= 57: return 4
case 65 <= r && r <= 70: return 4
case 97 <= r && r <= 102: return 4
default: return 4
} }
} }
panic("unreachable") panic("unreachable")
@ -89,36 +68,15 @@ fun[10] = func(r rune) int {
acc[3] = true acc[3] = true
fun[3] = func(r rune) int { fun[3] = func(r rune) int {
switch(r) { switch(r) {
case 116: return -1
case 102: return -1
case 98: return -1
case 110: return -1
case 117: return -1
case 47: return -1
case 92: return -1
case 34: return -1 case 34: return -1
case 114: return -1 case 92: return -1
default:
switch {
case 48 <= r && r <= 57: return -1
case 65 <= r && r <= 70: return -1
case 97 <= r && r <= 102: return -1
default: return -1
}
}
panic("unreachable")
}
fun[0] = func(r rune) int {
switch(r) {
case 114: return -1
case 116: return -1
case 102: return -1 case 102: return -1
case 117: return -1
case 116: return -1
case 47: return -1
case 98: return -1 case 98: return -1
case 110: return -1 case 110: return -1
case 117: return -1 case 114: return -1
case 47: return -1
case 92: return -1
case 34: return 1
default: default:
switch { switch {
case 48 <= r && r <= 57: return -1 case 48 <= r && r <= 57: return -1
@ -129,276 +87,318 @@ fun[0] = func(r rune) int {
} }
panic("unreachable") panic("unreachable")
} }
fun[16] = func(r rune) int { fun[9] = func(r rune) int {
switch(r) { switch(r) {
case 47: return 4 case 110: return 2
case 92: return 2 case 114: return 2
case 34: return 3 case 34: return 3
case 114: return 4 case 92: return 4
case 116: return 4 case 102: return 2
case 102: return 17 case 117: return 2
case 98: return 17 case 116: return 2
case 110: return 4 case 47: return 2
case 117: return 4 case 98: return 2
default: default:
switch { switch {
case 48 <= r && r <= 57: return 17 case 48 <= r && r <= 57: return 2
case 65 <= r && r <= 70: return 17 case 65 <= r && r <= 70: return 2
case 97 <= r && r <= 102: return 17 case 97 <= r && r <= 102: return 2
default: return 4 default: return 2
} }
} }
panic("unreachable") panic("unreachable")
} }
fun[11] = func(r rune) int { fun[8] = func(r rune) int {
switch(r) { switch(r) {
case 117: return 4 case 92: return 4
case 47: return 4 case 102: return 2
case 92: return 2 case 117: return 2
case 116: return 2
case 47: return 2
case 98: return 2
case 110: return 2
case 114: return 2
case 34: return 3 case 34: return 3
case 114: return 4
case 116: return 4
case 102: return 4
case 98: return 4
case 110: return 4
default: default:
switch { switch {
case 48 <= r && r <= 57: return 4 case 48 <= r && r <= 57: return 2
case 65 <= r && r <= 70: return 4 case 65 <= r && r <= 70: return 2
case 97 <= r && r <= 102: return 4 case 97 <= r && r <= 102: return 2
default: return 4 default: return 2
}
}
panic("unreachable")
}
fun[6] = func(r rune) int {
switch(r) {
case 110: return 4
case 117: return 4
case 47: return 4
case 92: return 2
case 34: return 3
case 114: return 4
case 116: return 4
case 102: return 14
case 98: return 14
default:
switch {
case 48 <= r && r <= 57: return 14
case 65 <= r && r <= 70: return 14
case 97 <= r && r <= 102: return 14
default: return 4
}
}
panic("unreachable")
}
fun[1] = func(r rune) int {
switch(r) {
case 92: return 2
case 34: return 3
case 114: return 4
case 116: return 4
case 102: return 4
case 98: return 4
case 110: return 4
case 117: return 4
case 47: return 4
default:
switch {
case 48 <= r && r <= 57: return 4
case 65 <= r && r <= 70: return 4
case 97 <= r && r <= 102: return 4
default: return 4
}
}
panic("unreachable")
}
fun[7] = func(r rune) int {
switch(r) {
case 92: return 2
case 34: return 3
case 114: return 4
case 116: return 4
case 102: return 4
case 98: return 4
case 110: return 4
case 117: return 4
case 47: return 4
default:
switch {
case 48 <= r && r <= 57: return 4
case 65 <= r && r <= 70: return 4
case 97 <= r && r <= 102: return 4
default: return 4
} }
} }
panic("unreachable") panic("unreachable")
} }
fun[13] = func(r rune) int { fun[13] = func(r rune) int {
switch(r) { switch(r) {
case 110: return 4 case 110: return 2
case 117: return 4 case 114: return 2
case 47: return 4
case 92: return 2
case 34: return 3 case 34: return 3
case 114: return 4 case 92: return 4
case 116: return 4 case 102: return 2
case 102: return 4 case 117: return 2
case 98: return 4 case 116: return 2
case 47: return 2
case 98: return 2
default: default:
switch { switch {
case 48 <= r && r <= 57: return 4 case 48 <= r && r <= 57: return 2
case 65 <= r && r <= 70: return 4 case 65 <= r && r <= 70: return 2
case 97 <= r && r <= 102: return 4 case 97 <= r && r <= 102: return 2
default: return 4 default: return 2
}
}
panic("unreachable")
}
fun[5] = func(r rune) int {
switch(r) {
case 92: return 2
case 34: return 3
case 114: return 4
case 116: return 4
case 102: return 4
case 98: return 4
case 110: return 4
case 117: return 4
case 47: return 4
default:
switch {
case 48 <= r && r <= 57: return 4
case 65 <= r && r <= 70: return 4
case 97 <= r && r <= 102: return 4
default: return 4
}
}
panic("unreachable")
}
fun[17] = func(r rune) int {
switch(r) {
case 114: return 4
case 116: return 4
case 102: return 4
case 98: return 4
case 110: return 4
case 117: return 4
case 47: return 4
case 92: return 2
case 34: return 3
default:
switch {
case 48 <= r && r <= 57: return 4
case 65 <= r && r <= 70: return 4
case 97 <= r && r <= 102: return 4
default: return 4
}
}
panic("unreachable")
}
fun[12] = func(r rune) int {
switch(r) {
case 114: return 4
case 116: return 4
case 102: return 4
case 98: return 4
case 110: return 4
case 117: return 4
case 47: return 4
case 92: return 2
case 34: return 3
default:
switch {
case 48 <= r && r <= 57: return 4
case 65 <= r && r <= 70: return 4
case 97 <= r && r <= 102: return 4
default: return 4
}
}
panic("unreachable")
}
fun[14] = func(r rune) int {
switch(r) {
case 110: return 4
case 117: return 4
case 47: return 4
case 92: return 2
case 34: return 3
case 114: return 4
case 116: return 4
case 102: return 15
case 98: return 15
default:
switch {
case 48 <= r && r <= 57: return 15
case 65 <= r && r <= 70: return 15
case 97 <= r && r <= 102: return 15
default: return 4
}
}
panic("unreachable")
}
acc[9] = true
fun[9] = func(r rune) int {
switch(r) {
case 110: return 4
case 117: return 4
case 47: return 4
case 92: return 2
case 34: return 3
case 114: return 4
case 116: return 4
case 102: return 4
case 98: return 4
default:
switch {
case 48 <= r && r <= 57: return 4
case 65 <= r && r <= 70: return 4
case 97 <= r && r <= 102: return 4
default: return 4
}
}
panic("unreachable")
}
fun[4] = func(r rune) int {
switch(r) {
case 116: return 4
case 102: return 4
case 98: return 4
case 110: return 4
case 117: return 4
case 47: return 4
case 92: return 2
case 34: return 3
case 114: return 4
default:
switch {
case 48 <= r && r <= 57: return 4
case 65 <= r && r <= 70: return 4
case 97 <= r && r <= 102: return 4
default: return 4
} }
} }
panic("unreachable") panic("unreachable")
} }
fun[2] = func(r rune) int { fun[2] = func(r rune) int {
switch(r) { switch(r) {
case 110: return 5 case 92: return 4
case 117: return 6 case 102: return 2
case 47: return 7 case 117: return 2
case 92: return 8 case 116: return 2
case 34: return 9 case 47: return 2
case 114: return 10 case 98: return 2
case 116: return 11 case 110: return 2
case 102: return 12 case 114: return 2
case 98: return 13 case 34: return 3
default: default:
switch { switch {
case 48 <= r && r <= 57: return 4 case 48 <= r && r <= 57: return 2
case 65 <= r && r <= 70: return 4 case 65 <= r && r <= 70: return 2
case 97 <= r && r <= 102: return 4 case 97 <= r && r <= 102: return 2
default: return 4 default: return 2
}
}
panic("unreachable")
}
fun[17] = func(r rune) int {
switch(r) {
case 110: return 2
case 114: return 2
case 34: return 3
case 92: return 4
case 102: return 2
case 117: return 2
case 116: return 2
case 47: return 2
case 98: return 2
default:
switch {
case 48 <= r && r <= 57: return 2
case 65 <= r && r <= 70: return 2
case 97 <= r && r <= 102: return 2
default: return 2
}
}
panic("unreachable")
}
fun[15] = func(r rune) int {
switch(r) {
case 110: return 2
case 114: return 2
case 34: return 3
case 92: return 4
case 102: return 16
case 117: return 2
case 116: return 2
case 47: return 2
case 98: return 16
default:
switch {
case 48 <= r && r <= 57: return 16
case 65 <= r && r <= 70: return 16
case 97 <= r && r <= 102: return 16
default: return 2
}
}
panic("unreachable")
}
fun[14] = func(r rune) int {
switch(r) {
case 34: return 3
case 92: return 4
case 102: return 15
case 117: return 2
case 116: return 2
case 47: return 2
case 98: return 15
case 110: return 2
case 114: return 2
default:
switch {
case 48 <= r && r <= 57: return 15
case 65 <= r && r <= 70: return 15
case 97 <= r && r <= 102: return 15
default: return 2
}
}
panic("unreachable")
}
fun[10] = func(r rune) int {
switch(r) {
case 110: return 2
case 114: return 2
case 34: return 3
case 92: return 4
case 102: return 2
case 117: return 2
case 116: return 2
case 47: return 2
case 98: return 2
default:
switch {
case 48 <= r && r <= 57: return 2
case 65 <= r && r <= 70: return 2
case 97 <= r && r <= 102: return 2
default: return 2
}
}
panic("unreachable")
}
fun[12] = func(r rune) int {
switch(r) {
case 117: return 5
case 116: return 6
case 47: return 7
case 98: return 8
case 110: return 9
case 114: return 10
case 34: return 11
case 92: return 12
case 102: return 13
default:
switch {
case 48 <= r && r <= 57: return 2
case 65 <= r && r <= 70: return 2
case 97 <= r && r <= 102: return 2
default: return 2
}
}
panic("unreachable")
}
fun[5] = func(r rune) int {
switch(r) {
case 92: return 4
case 102: return 14
case 117: return 2
case 116: return 2
case 47: return 2
case 98: return 14
case 110: return 2
case 114: return 2
case 34: return 3
default:
switch {
case 48 <= r && r <= 57: return 14
case 65 <= r && r <= 70: return 14
case 97 <= r && r <= 102: return 14
default: return 2
}
}
panic("unreachable")
}
acc[11] = true
fun[11] = func(r rune) int {
switch(r) {
case 34: return 3
case 92: return 4
case 102: return 2
case 117: return 2
case 116: return 2
case 47: return 2
case 98: return 2
case 110: return 2
case 114: return 2
default:
switch {
case 48 <= r && r <= 57: return 2
case 65 <= r && r <= 70: return 2
case 97 <= r && r <= 102: return 2
default: return 2
}
}
panic("unreachable")
}
fun[16] = func(r rune) int {
switch(r) {
case 110: return 2
case 114: return 2
case 34: return 3
case 92: return 4
case 102: return 17
case 117: return 2
case 116: return 2
case 47: return 2
case 98: return 17
default:
switch {
case 48 <= r && r <= 57: return 17
case 65 <= r && r <= 70: return 17
case 97 <= r && r <= 102: return 17
default: return 2
}
}
panic("unreachable")
}
fun[4] = func(r rune) int {
switch(r) {
case 117: return 5
case 116: return 6
case 47: return 7
case 98: return 8
case 110: return 9
case 114: return 10
case 34: return 11
case 92: return 12
case 102: return 13
default:
switch {
case 48 <= r && r <= 57: return 2
case 65 <= r && r <= 70: return 2
case 97 <= r && r <= 102: return 2
default: return 2
}
}
panic("unreachable")
}
fun[0] = func(r rune) int {
switch(r) {
case 34: return 1
case 92: return -1
case 102: return -1
case 117: return -1
case 116: return -1
case 47: return -1
case 98: return -1
case 110: return -1
case 114: return -1
default:
switch {
case 48 <= r && r <= 57: return -1
case 65 <= r && r <= 70: return -1
case 97 <= r && r <= 102: return -1
default: return -1
}
}
panic("unreachable")
}
fun[6] = func(r rune) int {
switch(r) {
case 47: return 2
case 98: return 2
case 110: return 2
case 114: return 2
case 34: return 3
case 92: return 4
case 102: return 2
case 117: return 2
case 116: return 2
default:
switch {
case 48 <= r && r <= 57: return 2
case 65 <= r && r <= 70: return 2
case 97 <= r && r <= 102: return 2
default: return 2
} }
} }
panic("unreachable") panic("unreachable")
@ -438,10 +438,9 @@ a0[1].id = 1
{ {
var acc [2]bool var acc [2]bool
var fun [2]func(rune) int var fun [2]func(rune) int
acc[1] = true fun[0] = func(r rune) int {
fun[1] = func(r rune) int {
switch(r) { switch(r) {
case 45: return -1 case 45: return 1
default: default:
switch { switch {
default: return -1 default: return -1
@ -449,9 +448,10 @@ fun[1] = func(r rune) int {
} }
panic("unreachable") panic("unreachable")
} }
fun[0] = func(r rune) int { acc[1] = true
fun[1] = func(r rune) int {
switch(r) { switch(r) {
case 45: return 1 case 45: return -1
default: default:
switch { switch {
default: return -1 default: return -1
@ -466,10 +466,9 @@ a0[2].id = 2
{ {
var acc [2]bool var acc [2]bool
var fun [2]func(rune) int var fun [2]func(rune) int
acc[1] = true fun[0] = func(r rune) int {
fun[1] = func(r rune) int {
switch(r) { switch(r) {
case 58: return -1 case 58: return 1
default: default:
switch { switch {
default: return -1 default: return -1
@ -477,9 +476,10 @@ fun[1] = func(r rune) int {
} }
panic("unreachable") panic("unreachable")
} }
fun[0] = func(r rune) int { acc[1] = true
fun[1] = func(r rune) int {
switch(r) { switch(r) {
case 58: return 1 case 58: return -1
default: default:
switch { switch {
default: return -1 default: return -1
@ -550,10 +550,9 @@ a0[5].id = 5
{ {
var acc [2]bool var acc [2]bool
var fun [2]func(rune) int var fun [2]func(rune) int
acc[1] = true fun[0] = func(r rune) int {
fun[1] = func(r rune) int {
switch(r) { switch(r) {
case 41: return -1 case 41: return 1
default: default:
switch { switch {
default: return -1 default: return -1
@ -561,9 +560,10 @@ fun[1] = func(r rune) int {
} }
panic("unreachable") panic("unreachable")
} }
fun[0] = func(r rune) int { acc[1] = true
fun[1] = func(r rune) int {
switch(r) { switch(r) {
case 41: return 1 case 41: return -1
default: default:
switch { switch {
default: return -1 default: return -1
@ -576,24 +576,12 @@ a0[6].f = fun[:]
a0[6].id = 6 a0[6].id = 6
} }
{ {
var acc [5]bool var acc [8]bool
var fun [5]func(rune) int var fun [8]func(rune) int
acc[4] = true fun[1] = func(r rune) int {
fun[4] = func(r rune) int {
switch(r) { switch(r) {
case 45: return -1 case 45: return -1
default: case 46: return -1
switch {
case 48 <= r && r <= 48: return 4
case 49 <= r && r <= 57: return 4
default: return -1
}
}
panic("unreachable")
}
fun[0] = func(r rune) int {
switch(r) {
case 45: return 1
default: default:
switch { switch {
case 48 <= r && r <= 48: return 2 case 48 <= r && r <= 48: return 2
@ -607,22 +595,25 @@ acc[3] = true
fun[3] = func(r rune) int { fun[3] = func(r rune) int {
switch(r) { switch(r) {
case 45: return -1 case 45: return -1
case 46: return 4
default: default:
switch { switch {
case 48 <= r && r <= 48: return 4 case 48 <= r && r <= 48: return 5
case 49 <= r && r <= 57: return 4 case 49 <= r && r <= 57: return 5
default: return -1 default: return -1
} }
} }
panic("unreachable") panic("unreachable")
} }
fun[1] = func(r rune) int { acc[5] = true
fun[5] = func(r rune) int {
switch(r) { switch(r) {
case 45: return -1 case 45: return -1
case 46: return 4
default: default:
switch { switch {
case 48 <= r && r <= 48: return 2 case 48 <= r && r <= 48: return 5
case 49 <= r && r <= 57: return 2 case 49 <= r && r <= 57: return 5
default: return -1 default: return -1
} }
} }
@ -631,6 +622,7 @@ fun[1] = func(r rune) int {
acc[2] = true acc[2] = true
fun[2] = func(r rune) int { fun[2] = func(r rune) int {
switch(r) { switch(r) {
case 46: return 4
case 45: return -1 case 45: return -1
default: default:
switch { switch {
@ -641,6 +633,60 @@ fun[2] = func(r rune) int {
} }
panic("unreachable") panic("unreachable")
} }
fun[0] = func(r rune) int {
switch(r) {
case 45: return 1
case 46: return -1
default:
switch {
case 48 <= r && r <= 48: return 2
case 49 <= r && r <= 57: return 3
default: return -1
}
}
panic("unreachable")
}
acc[6] = true
fun[6] = func(r rune) int {
switch(r) {
case 45: return -1
case 46: return -1
default:
switch {
case 48 <= r && r <= 48: return 7
case 49 <= r && r <= 57: return 7
default: return -1
}
}
panic("unreachable")
}
fun[4] = func(r rune) int {
switch(r) {
case 45: return -1
case 46: return -1
default:
switch {
case 48 <= r && r <= 48: return 6
case 49 <= r && r <= 57: return 6
default: return -1
}
}
panic("unreachable")
}
acc[7] = true
fun[7] = func(r rune) int {
switch(r) {
case 46: return -1
case 45: return -1
default:
switch {
case 48 <= r && r <= 48: return 7
case 49 <= r && r <= 57: return 7
default: return -1
}
}
panic("unreachable")
}
a0[7].acc = acc[:] a0[7].acc = acc[:]
a0[7].f = fun[:] a0[7].f = fun[:]
a0[7].id = 7 a0[7].id = 7
@ -648,11 +694,12 @@ a0[7].id = 7
{ {
var acc [2]bool var acc [2]bool
var fun [2]func(rune) int var fun [2]func(rune) int
fun[0] = func(r rune) int { acc[1] = true
fun[1] = func(r rune) int {
switch(r) { switch(r) {
case 9: return 1
case 10: return 1
case 32: return 1 case 32: return 1
case 10: return 1
case 9: return 1
default: default:
switch { switch {
default: return -1 default: return -1
@ -660,12 +707,11 @@ fun[0] = func(r rune) int {
} }
panic("unreachable") panic("unreachable")
} }
acc[1] = true fun[0] = func(r rune) int {
fun[1] = func(r rune) int {
switch(r) { switch(r) {
case 9: return 1 case 9: return 1
case 10: return 1
case 32: return 1 case 32: return 1
case 10: return 1
default: default:
switch { switch {
default: return -1 default: return -1
@ -683,15 +729,15 @@ var fun [2]func(rune) int
acc[1] = true acc[1] = true
fun[1] = func(r rune) int { fun[1] = func(r rune) int {
switch(r) { switch(r) {
case 58: return -1 case 45: return -1
case 10: return -1
case 94: return -1
case 32: return -1
case 43: return -1 case 43: return -1
case 9: return -1 case 9: return -1
case 45: return -1
case 12: return -1 case 12: return -1
case 13: return -1 case 13: return -1
case 94: return -1
case 32: return -1
case 58: return -1
case 10: return -1
default: default:
switch { switch {
default: return 1 default: return 1
@ -701,15 +747,15 @@ fun[1] = func(r rune) int {
} }
fun[0] = func(r rune) int { fun[0] = func(r rune) int {
switch(r) { switch(r) {
case 9: return -1
case 45: return -1
case 12: return -1 case 12: return -1
case 13: return -1 case 13: return -1
case 58: return -1
case 10: return -1
case 94: return -1 case 94: return -1
case 32: return -1 case 32: return -1
case 58: return -1
case 10: return -1
case 45: return -1
case 43: return -1 case 43: return -1
case 9: return -1
default: default:
switch { switch {
default: return 1 default: return 1
@ -840,11 +886,11 @@ func (yylex Lexer) Lex(lval *yySymType) int {
{ logDebugTokens("LPAREN"); return LPAREN } { logDebugTokens("LPAREN"); return LPAREN }
case 6: //\)/ case 6: //\)/
{ logDebugTokens("RPAREN"); return RPAREN } { logDebugTokens("RPAREN"); return RPAREN }
case 7: //-?[0-9]|[1-9][0-9]*/ case 7: //-?([0-9]|[1-9][0-9]*)(\.[0-9][0-9]*)?/
{ {
lval.n,_ = strconv.Atoi(yylex.Text()); lval.f,_ = strconv.ParseFloat(yylex.Text(), 64);
logDebugTokens("INT - %d", lval.n); logDebugTokens("NUMBER - %f", lval.f);
return INT return NUMBER
} }
case 8: //[ \t\n]+/ case 8: //[ \t\n]+/
{ logDebugTokens("WHITESPACE (count=%d)", len(yylex.Text())) /* eat up whitespace */ } { logDebugTokens("WHITESPACE (count=%d)", len(yylex.Text())) /* eat up whitespace */ }

View File

@ -14,7 +14,7 @@ s string
n int n int
f float64} f float64}
%token STRING PHRASE PLUS MINUS COLON BOOST LPAREN RPAREN INT STRING %token STRING PHRASE PLUS MINUS COLON BOOST LPAREN RPAREN NUMBER STRING
%% %%
@ -127,17 +127,17 @@ STRING COLON PHRASE {
searchBoost: searchBoost:
BOOST INT { BOOST NUMBER {
boost := $2.n boost := $2.f
if parsingLastQuery != nil { if parsingLastQuery != nil {
switch parsingLastQuery := parsingLastQuery.(type) { switch parsingLastQuery := parsingLastQuery.(type) {
case *MatchQuery: case *MatchQuery:
parsingLastQuery.SetBoost(float64(boost)) parsingLastQuery.SetBoost(boost)
case *MatchPhraseQuery: case *MatchPhraseQuery:
parsingLastQuery.SetBoost(float64(boost)) parsingLastQuery.SetBoost(boost)
} }
} }
logDebugGrammar("BOOST %d", boost) logDebugGrammar("BOOST %f", boost)
}; };
searchSuffix: searchSuffix:

12
y.go
View File

@ -28,7 +28,7 @@ const COLON = 57350
const BOOST = 57351 const BOOST = 57351
const LPAREN = 57352 const LPAREN = 57352
const RPAREN = 57353 const RPAREN = 57353
const INT = 57354 const NUMBER = 57354
var yyToknames = []string{ var yyToknames = []string{
"STRING", "STRING",
@ -39,7 +39,7 @@ var yyToknames = []string{
"BOOST", "BOOST",
"LPAREN", "LPAREN",
"RPAREN", "RPAREN",
"INT", "NUMBER",
} }
var yyStatenames = []string{} var yyStatenames = []string{}
@ -451,16 +451,16 @@ yydefault:
case 13: case 13:
//line query_syntax.y:130 //line query_syntax.y:130
{ {
boost := yyS[yypt-0].n boost := yyS[yypt-0].f
if parsingLastQuery != nil { if parsingLastQuery != nil {
switch parsingLastQuery := parsingLastQuery.(type) { switch parsingLastQuery := parsingLastQuery.(type) {
case *MatchQuery: case *MatchQuery:
parsingLastQuery.SetBoost(float64(boost)) parsingLastQuery.SetBoost(boost)
case *MatchPhraseQuery: case *MatchPhraseQuery:
parsingLastQuery.SetBoost(float64(boost)) parsingLastQuery.SetBoost(boost)
} }
} }
logDebugGrammar("BOOST %d", boost) logDebugGrammar("BOOST %f", boost)
} }
case 14: case 14:
//line query_syntax.y:144 //line query_syntax.y:144