1#include "prism/internal/parser.h"
3#include "prism/internal/allocator.h"
4#include "prism/internal/comments.h"
5#include "prism/internal/diagnostic.h"
6#include "prism/internal/encoding.h"
7#include "prism/internal/magic_comments.h"
17 parser->encoding_changed_callback = callback;
25 parser->lex_callback.callback = callback;
26 parser->lex_callback.data = data;
34 return parser->lex_callback.data;
61 return parser->start_line;
69 return parser->encoding->name;
77pm_parser_encoding_char_width(
const pm_parser_t *parser,
const uint8_t *start, ptrdiff_t remaining) {
78 return parser->encoding->char_width(start, remaining);
86 return parser->encoding == PM_ENCODING_US_ASCII_ENTRY;
94 return &parser->filepath;
102pm_parser_constant_find(
const pm_parser_t *parser,
const uint8_t *start,
size_t length) {
103 return pm_constant_pool_find(&parser->constant_pool, start, length);
111 return parser->frozen_string_literal;
122 return &parser->line_offsets;
131 return &parser->data_loc;
140 return parser->continuable;
151 return (
int) parser->lex_state;
159 return comment->location;
167 return comment->type;
175 return parser->comment_list.size;
185 while (current != NULL) {
187 callback(comment, data);
188 current = current->next;
213 return parser->magic_comment_list.size;
223 while (current != NULL) {
226 current = current->next;
235 return parser->error_list.size;
243 return parser->warning_list.size;
249 while (current != NULL) {
251 callback(diagnostic, data);
252 current = current->next;
262 pm_parser_diagnostics_each(&parser->error_list, callback, data);
271 pm_parser_diagnostics_each(&parser->warning_list, callback, data);
280 return parser->constant_pool.size;
289 for (uint32_t index = 0; index < parser->constant_pool.size; index++) {
290 const pm_constant_t *constant = &parser->constant_pool.constants[index];
291 callback(constant, data);
301 return pm_constant_pool_id_to_constant(&parser->constant_pool, constant_id);
uint32_t pm_constant_id_t
A constant id is a unique identifier for a constant in the constant pool.
void(* pm_magic_comment_callback_t)(const pm_magic_comment_t *magic_comment, void *data)
A callback function that can be used to process magic comments found while parsing.
void(* pm_lex_callback_t)(pm_parser_t *parser, pm_token_t *token, void *data)
This is the callback that is called when a token is lexed.
void(* pm_diagnostic_callback_t)(const pm_diagnostic_t *diagnostic, void *data)
A callback function that can be used to process diagnostics found while parsing.
void(* pm_comment_callback_t)(const pm_comment_t *comment, void *data)
A callback function that can be used to process comments found while parsing.
void(* pm_encoding_changed_callback_t)(pm_parser_t *parser)
When the encoding that is being used to parse the source is changed by prism, we provide the ability ...
void(* pm_constant_callback_t)(const pm_constant_t *constant, void *data)
A callback function that can be used to process constants found while parsing.
A list of offsets of the start of lines in a string.
This struct represents a slice in the source code, defined by an offset and a length.
A generic string type that can have various ownership semantics.