#ifndef __SCC_LEX_PARSER_H__ #define __SCC_LEX_PARSER_H__ #include static inline cbool scc_lex_parse_is_endline(int ch) { return ch == '\n' || ch == '\r'; } static inline cbool scc_lex_parse_is_whitespace(int ch) { return ch == ' ' || ch == '\t'; } // TODO identifier check is right? static inline cbool scc_lex_parse_is_identifier_prefix(int ch) { return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch == '_'; } int scc_lex_parse_char(scc_probe_stream_t *input, scc_pos_t *pos); cbool scc_lex_parse_string(scc_probe_stream_t *input, scc_pos_t *pos, scc_cstring_t *output); cbool scc_lex_parse_number(scc_probe_stream_t *input, scc_pos_t *pos, usize *output); cbool scc_lex_parse_identifier(scc_probe_stream_t *input, scc_pos_t *pos, scc_cstring_t *output); void scc_lex_parse_skip_endline(scc_probe_stream_t *input, scc_pos_t *pos); void scc_lex_parse_skip_block_comment(scc_probe_stream_t *input, scc_pos_t *pos); void scc_lex_parse_skip_line(scc_probe_stream_t *input, scc_pos_t *pos); void scc_lex_parse_skip_whitespace(scc_probe_stream_t *input, scc_pos_t *pos); #endif /* __SCC_LEX_PARSER_H__ */