Skip to content

Instantly share code, notes, and snippets.

@tiancaiamao
Created August 4, 2016 04:46
Show Gist options
  • Save tiancaiamao/481053765790f6155ecf45637044177c to your computer and use it in GitHub Desktop.
Save tiancaiamao/481053765790f6155ecf45637044177c to your computer and use it in GitHub Desktop.
// search a trie to scan a token
ch := ch0
node := &ruleTable
for {
if node.childs[ch] == nil || s.r.eof() {
break
}
node = node.childs[ch]
s.r.inc()
ch = s.r.peek()
}
initTokenByte('>', int('>'))
initTokenByte('<', int('<'))
initTokenByte('(', int('('))
initTokenByte(')', int(')'))
initTokenByte(';', int(';'))
initTokenByte(',', int(','))
initTokenByte('&', int('&'))
initTokenByte('%', int('%'))
initTokenByte(':', int(':'))
initTokenByte('|', int('|'))
initTokenByte('!', int('!'))
initTokenByte('^', int('^'))
initTokenByte('~', int('~'))
initTokenByte('\\', int('\\'))
initTokenByte('?', placeholder)
initTokenByte('=', eq)
initTokenString("||", oror)
initTokenString("&&", andand)
initTokenString("&^", andnot)
initTokenString(":=", assignmentEq)
initTokenString("<=>", nulleq)
initTokenString(">=", ge)
initTokenString("<=", le)
initTokenString("!=", neq)
initTokenString("<>", neqSynonym)
initTokenString("<<", lsh)
initTokenString(">>", rsh)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment