From 5d28c51cf13189ee24b5ed924be06ae2e553144c Mon Sep 17 00:00:00 2001 From: omicron Date: Tue, 1 Apr 2025 20:03:53 +0200 Subject: [PATCH] Add "primitive" parsers for all the semantic tokens in the lexer grammar --- src/parser_primitives.c | 61 +++++++++++++++++++++++++++++++++++++++++ src/parser_primitives.h | 22 +++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 src/parser_primitives.c create mode 100644 src/parser_primitives.h diff --git a/src/parser_primitives.c b/src/parser_primitives.c new file mode 100644 index 0000000..4d25356 --- /dev/null +++ b/src/parser_primitives.c @@ -0,0 +1,61 @@ +#include "parser_primitives.h" + +parse_result_t parse_identifier(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_IDENTIFIER, NODE_IDENTIFIER); +} + +parse_result_t parse_decimal(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_DECIMAL, NODE_DECIMAL); +} + +parse_result_t parse_hexadecimal(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_HEXADECIMAL, NODE_HEXADECIMAL); +} + +parse_result_t parse_binary(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_BINARY, NODE_BINARY); +} + +parse_result_t parse_octal(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_OCTAL, NODE_OCTAL); +} + +parse_result_t parse_string(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_STRING, NODE_STRING); +} + +parse_result_t parse_char(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_CHAR, NODE_CHAR); +} + +parse_result_t parse_colon(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_COLON, NODE_COLON); +} + +parse_result_t parse_comma(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_COMMA, NODE_COMMA); +} + +parse_result_t parse_lbracket(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_LBRACKET, NODE_LBRACKET); +} + +parse_result_t parse_rbracket(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_RBRACKET, NODE_RBRACKET); +} + +parse_result_t parse_plus(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_PLUS, NODE_PLUS); +} + +parse_result_t parse_minus(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_MINUS, NODE_MINUS); +} + +parse_result_t parse_asterisk(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_ASTERISK, NODE_ASTERISK); +} + +parse_result_t parse_dot(tokenlist_entry_t *current) { + return parse_token(current, TOKEN_DOT, NODE_DOT); +} diff --git a/src/parser_primitives.h b/src/parser_primitives.h new file mode 100644 index 0000000..46d25f4 --- /dev/null +++ b/src/parser_primitives.h @@ -0,0 +1,22 @@ +#ifndef INCLUDE_SRC_PARSER_PRIMITIVES_H_ +#define INCLUDE_SRC_PARSER_PRIMITIVES_H_ + +#include "parser_util.h" + +parse_result_t parse_identifier(tokenlist_entry_t *current); +parse_result_t parse_decimal(tokenlist_entry_t *current); +parse_result_t parse_hexadecimal(tokenlist_entry_t *current); +parse_result_t parse_binary(tokenlist_entry_t *current); +parse_result_t parse_octal(tokenlist_entry_t *current); +parse_result_t parse_string(tokenlist_entry_t *current); +parse_result_t parse_char(tokenlist_entry_t *current); +parse_result_t parse_colon(tokenlist_entry_t *current); +parse_result_t parse_comma(tokenlist_entry_t *current); +parse_result_t parse_lbracket(tokenlist_entry_t *current); +parse_result_t parse_rbracket(tokenlist_entry_t *current); +parse_result_t parse_plus(tokenlist_entry_t *current); +parse_result_t parse_minus(tokenlist_entry_t *current); +parse_result_t parse_asterisk(tokenlist_entry_t *current); +parse_result_t parse_dot(tokenlist_entry_t *current); + +#endif // INCLUDE_SRC_PARSER_PRIMITIVES_H_