in src/ct/parser/parser.go [234:282]
func (p *Parser) parseComparison() *Item {
n := UnknownItem()
t := p.next()
negate := false
if t.typ == tokenNegation && p.peek(1).typ != tokenEOF {
negate = true
t = p.next()
}
switch {
case containsStrings(t.val, "<", "=") || containsStrings(t.val, "≤"):
n.Set(itemComparison, "≤")
case containsStrings(t.val, "<"):
n.Set(itemComparison, "<")
case containsStrings(t.val, ">", "=") || containsStrings(t.val, "≥"):
n.Set(itemComparison, "≥")
case containsStrings(t.val, ">"):
n.Set(itemComparison, ">")
case t.typ == tokenLessComparison:
switch {
case p.hasEqual():
n.Set(itemComparison, "≤")
default:
n.Set(itemComparison, "<")
}
case t.typ == tokenGreaterComparison:
switch {
case p.hasEqual():
n.Set(itemComparison, "≥")
default:
n.Set(itemComparison, ">")
}
case t.typ == tokenComparison:
switch t.val {
case "between":
n.Set(itemRange, t.val)
case "at":
if p.peek(1).val == "least" {
p.next()
n.Set(itemComparison, "≥")
}
}
}
if negate {
n = n.Negate()
}
return n
}