From 1a4ca5bef333edd4ebd12a7a67495af54beeb5f3 Mon Sep 17 00:00:00 2001 From: Martin Michalec Date: Sun, 22 Feb 2026 06:17:42 +0300 Subject: add lexer implementation --- include/cmmm/rs274ngc/lexer.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 include/cmmm/rs274ngc/lexer.h (limited to 'include/cmmm') diff --git a/include/cmmm/rs274ngc/lexer.h b/include/cmmm/rs274ngc/lexer.h new file mode 100644 index 0000000..eca972e --- /dev/null +++ b/include/cmmm/rs274ngc/lexer.h @@ -0,0 +1,35 @@ +// include/cmmm/lexer.h + +#ifndef INCLUDED__RS274NGC__LEXER__H +#define INCLUDED__RS274NGC__LEXER__H + +// #define CMMM__RS274NGC__LEXER__STRIP_VENDOR + +#include +#include "cmmm/string-view.h" +#include "cmmm/rs274ngc/lexeme.h" + +#define RS274NGC__LEXER__FIRST_MATCH +#define RS274NGC__LEXER__TRIM +// #define RS274NGC__LEXER__FILTER_COMMENTS + +struct cmmm__rs274ngc__lexer { + struct cmmm__string_view sv; + const char *cursor; + const char *filename; + struct cmmm__rs274ngc__lexeme lexeme; +}; + +struct cmmm__rs274ngc__lexer cmmm__rs274ngc__lexer__from_string_view (struct cmmm__string_view, const char *filename); +void cmmm__rs274ngc__lexer__next_lexeme (struct cmmm__rs274ngc__lexer *); + +#ifdef CMMM__RS274NGC__LEXER__STRIP_VENDOR +#define RS274NGC__LEXER__STRIP_VENDOR CMMM__RS274NGC__LEXER__STRIP_VENDOR +#define rs274ngc__lexer cmmm__rs274ngc__lexer +#define rs274ngc__lexer__from_string_view cmmm__rs274ngc__lexer__from_string_view +#define rs274ngc__lexer__next_lexeme cmmm__rs274ngc__lexer__next_lexeme +#endif // CMMM__RS274NGC__LEXER__STRIP_VENDOR + +#endif // INCLUDED__RS274NGC__LEXER__H + +// include/cmmm/lexer.h ends here -- cgit v1.3