Improve the lexer
Use a FFI for bind external functions instead of primitives