Adaptive Framework  0.9.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Data Structures | Macros | Enumerations | Functions
afw_compile_internal.h File Reference

Adaptive Framework Compiler Internal. More...

#include "afw.h"

Go to the source code of this file.

Data Structures

struct  afw_compile_internal_shared_s
 Resources that can be shared by multiple compiles. More...
 
struct  afw_compile_internal_token_s
 
struct  afw_compile_internal_value_contextual_s
 Contextual information provided in some values. More...
 
struct  afw_compile_internal_parser_s
 
struct  afw_compile_internal_assignment_target_s
 
struct  afw_compile_internal_list_destructure_s
 
struct  afw_compile_assignment_element_s
 
struct  afw_compile_internal_assignment_property_s
 
struct  afw_compile_internal_object_destructure_s
 

Macros

#define AFW_COMPILE_MAX_TOKENS   5
 
#define AFW_COMPILE_INTERNAL_ASSIGNMENT_TYPE_MAP(XX)
 Assignment type Map. More...
 
#define XX(id, description)    afw_compile_assignment_type_ ## id,
 
#define AFW_COMPILE_INTERNAL_ASSIGNMENT_TARGET_TYPE_MAP(XX)
 Assignment target type Map. More...
 
#define XX(id, description)    afw_compile_assignment_target_type_ ## id,
 
#define afw_value_contextual_resolve_value_source(value_source, contextual)
 
#define afw_compile_token_is(token_type)    (parser->token->type == afw_compile_token_type_##token_type)
 
#define afw_compile_token_is_unqualified_identifier()
 
#define afw_compile_token_is_name(string)
 
#define afw_compile_token_is_name_z(string_z)
 
#define afw_compile_is_at_eof()    (parser->last_octet_eof)
 
#define afw_compile_next_is_at_eof()
 
#define afw_compile_peek_next_token()    afw_compile_peek_next_token_impl(parser)
 
#define afw_compile_peek_next_token_is(token_type)
 
#define afw_compile_set_contextual()
 
#define AFW_COMPILE_THROW_ERROR_Z(message_z)
 
#define AFW_COMPILE_THROW_ERROR_FZ(format_z, ...)
 
#define AFW_COMPILE_EOF_IS_ERROR()
 
#define afw_compile_get_code_point()    afw_compile_get_code_point_impl(parser)
 
#define afw_compile_get_unescaped_code_point()    afw_compile_get_unescaped_code_point_impl(parser)
 
#define afw_compile_next_raw_starts_with(s)    afw_compile_next_raw_starts_with_impl(parser, s)
 
#define afw_compile_next_raw_starts_with_z(s_z)    afw_compile_next_raw_starts_with_z_impl(parser, s_z)
 
#define afw_compile_get_raw_line(line)    afw_compile_get_raw_line_impl(parser, line)
 
#define afw_compile_get_token()    afw_compile_get_token_impl(parser)
 
#define afw_compile_get_token_before_eol()
 
#define afw_compile_save_offset(save)    save = parser->token->token_source_offset
 
#define afw_compile_get_token_and_save_offset(save)
 
#define afw_compile_next_can_be_operator()    parser->next_can_be_nonunary_operator = true
 
#define afw_compile_next_can_be_template_string()    parser->next_can_be_template_string = true
 
#define afw_compile_next_identifier_is_not_special_literal()    parser->next_identifier_is_not_special_literal = true
 
#define afw_compile_reuse_token()    afw_compile_reuse_token_impl(parser)
 
#define afw_compile_save_cursor(save)    save = parser->cursor
 
#define afw_compile_restore_cursor(save)
 
#define afw_compile_cursor_equal(save)    (parser->cursor == save)
 
#define afw_compile_source_buffer_at(save)    (parser->full_source->s + save)
 
#define afw_compile_source_buffer_length_from(save)    (parser->cursor - save)
 
#define afw_compile_create_contextual_to_cursor(start_offset)
 
#define afw_compile_create_source_location(start_offset)
 
#define afw_compile_parse_pop_value_block(parser)
 
#define afw_compile_args_create(parser)
 
#define afw_compile_args_add_value(args, value)   afw_stack_push(args, (parser)->xctx) = value
 
#define afw_compile_args_finalize(args, argc, argv)
 
#define AFW_COMPILE_THROW_EXPECTING_SEMICOLON    AFW_COMPILE_THROW_ERROR_Z("Expecting statement terminator ';'")
 
#define AFW_COMPILE_ASSERT_TOKEN_IS_SEMICOLON
 
#define AFW_COMPILE_ASSERT_NEXT_TOKEN_IS_SEMICOLON
 

Enumerations

enum  afw_compile_internal_token_type_t {
  afw_compile_token_type_invalid , afw_compile_token_type_end , afw_compile_token_type_raw_line , afw_compile_token_type_eol ,
  afw_compile_token_type_boolean , afw_compile_token_type_identifier , afw_compile_token_type_integer , afw_compile_token_type_number ,
  afw_compile_token_type_binary_string , afw_compile_token_type_utf8_string , afw_compile_token_type_template_string , afw_compile_token_type_null ,
  afw_compile_token_type_undefined , afw_compile_token_type_ampersand , afw_compile_token_type_back_slash , afw_compile_token_type_caret ,
  afw_compile_token_type_colon , afw_compile_token_type_comma , afw_compile_token_type_dollar_sign , afw_compile_token_type_ellipsis ,
  afw_compile_token_type_fat_arrow , afw_compile_token_type_grave , afw_compile_token_type_nullish_coalescing , afw_compile_token_type_optional_chaining ,
  afw_compile_token_type_optional_chaining_thin_arrow , afw_compile_token_type_percent , afw_compile_token_type_period , afw_compile_token_type_question_mark ,
  afw_compile_token_type_semicolon , afw_compile_token_type_slash , afw_compile_token_type_thin_arrow , afw_compile_token_type_tilde ,
  afw_compile_token_type_substitute_start , afw_compile_token_type_vertical_bar , afw_compile_token_type_unary_plus , afw_compile_token_type_unary_minus ,
  afw_compile_token_type_unary_not , afw_compile_token_type_open_brace , afw_compile_token_type_close_brace , afw_compile_token_type_open_parenthesis ,
  afw_compile_token_type_close_parenthesis , afw_compile_token_type_open_bracket , afw_compile_token_type_close_bracket , afw_compile_token_type_open_angle_bracket ,
  afw_compile_token_type_close_angle_bracket , afw_compile_token_type_add , afw_compile_token_type_subtract , afw_compile_token_type_multiply ,
  afw_compile_token_type_divide , afw_compile_token_type_modulus , afw_compile_token_type_exponentiation , afw_compile_token_type_increment ,
  afw_compile_token_type_decrement , afw_compile_token_type_and , afw_compile_token_type_or , afw_compile_token_type_equal ,
  afw_compile_token_type_plus_equal , afw_compile_token_type_minus_equal , afw_compile_token_type_multiply_equal , afw_compile_token_type_divide_equal ,
  afw_compile_token_type_modulus_equal , afw_compile_token_type_exponentiation_equal , afw_compile_token_type_and_equal , afw_compile_token_type_or_equal ,
  afw_compile_token_type_nullish_equal , afw_compile_token_type_equal_to , afw_compile_token_type_equal_value_and_type , afw_compile_token_type_not_equal_to ,
  afw_compile_token_type_not_equal_value_and_type , afw_compile_token_type_less_than , afw_compile_token_type_less_than_or_equal_to , afw_compile_token_type_greater_than ,
  afw_compile_token_type_greater_than_or_equal_to
}
 
enum  afw_compile_internal_assignment_type_t { afw_compile_assignment_type_max_type }
 Enum for assignment types.
 
enum  afw_compile_assignment_target_type_t { afw_compile_assignment_target_type_max_type }
 Enum for assignment target types.
 

Functions

afw_compile_internal_token_type_t afw_compile_peek_next_token_impl (afw_compile_parser_t *parser)
 
 afw_compile_get_code_point_impl (afw_compile_parser_t *parser)
 
 afw_compile_get_unescaped_code_point_impl (afw_compile_parser_t *parser)
 
 afw_compile_is_reserved_word (afw_compile_parser_t *parser, const afw_utf8_t *s)
 
 afw_compile_next_raw_starts_with_impl (afw_compile_parser_t *parser, const afw_utf8_t *s)
 
 afw_compile_next_raw_starts_with_z_impl (afw_compile_parser_t *parser, const afw_utf8_z_t *s_z)
 
 afw_compile_parse_list_of_statements (afw_compile_parser_t *parser, afw_boolean_t end_is_close_brace, afw_boolean_t can_be_single_return_expression)
 
 afw_compile_get_raw_line_impl (afw_compile_parser_t *parser, afw_utf8_t *line)
 
 afw_compile_current_raw_token (afw_compile_parser_t *parser)
 
 afw_compile_get_string_literal (afw_compile_parser_t *parser, const afw_utf8_octet_t *s, afw_size_t len)
 
 afw_compile_get_token_impl (afw_compile_parser_t *parser)
 
void afw_compile_reuse_token_impl (afw_compile_parser_t *parser)
 
 afw_compile_create_contextual (afw_compile_parser_t *parser, afw_size_t start_offset, afw_size_t size)
 
 afw_compile_create_source_location_impl (afw_compile_parser_t *parser, afw_size_t start_offset)
 
afw_code_point_t afw_compile_peek_code_point (afw_compile_parser_t *parser)
 
 afw_compile_internal_s_push_code_point (afw_compile_parser_t *parser, afw_code_point_t cp)
 
 afw_compile_parse_set_error_z (afw_compile_parser_t *parser, const afw_utf8_z_t *source_z, const afw_utf8_z_t *message_z)
 
 afw_compile_parse_set_error_fz (afw_compile_parser_t *parser, const afw_utf8_z_t *source_z, const afw_utf8_z_t *format_z,...)
 
 afw_compile_parse_get_symbol_entry (afw_compile_parser_t *parser, const afw_utf8_t *name)
 
 afw_compile_parse_get_local_symbol_entry (afw_compile_parser_t *parser, const afw_utf8_t *name)
 
 afw_compile_parse_add_symbol_entry (afw_compile_parser_t *parser, const afw_utf8_t *name)
 
 afw_compile_parse_link_new_value_block (afw_compile_parser_t *parser, afw_size_t start_offset)
 
 afw_compile_parse_reference_create (afw_compile_parser_t *parser, const afw_compile_value_contextual_t *contextual, const afw_utf8_t *identifier)
 
 afw_compile_parse_check_symbol (afw_compile_parser_t *parser, const afw_utf8_t *name, const afw_value_t *value, afw_compile_internal_assignment_type_t assignment_type, afw_size_t symbol_cursor)
 
 afw_compile_parse_Assignment (afw_compile_parser_t *parser, afw_boolean_t *was_expression)
 
 afw_compile_parse_AssignmentBindingTarget (afw_compile_parser_t *parser, afw_compile_internal_assignment_type_t assignment_type, const afw_value_type_t **type, const afw_value_t **value)
 
 afw_compile_parse_AssignmentListDestructureTarget (afw_compile_parser_t *parser, afw_compile_internal_assignment_type_t assignment_type)
 
 afw_compile_parse_AssignmentElement (afw_compile_parser_t *parser, afw_compile_internal_assignment_type_t assignment_type)
 
 afw_compile_parse_AssignmentExpression (afw_compile_parser_t *parser)
 
 afw_compile_parse_AssignmentObjectDestructureTarget (afw_compile_parser_t *parser, afw_compile_internal_assignment_type_t assignment_type)
 
 afw_compile_parse_AssignmentProperty (afw_compile_parser_t *parser, afw_compile_internal_assignment_type_t assignment_type)
 
 afw_compile_parse_AssignmentStatement (afw_compile_parser_t *parser, afw_boolean_t *was_expression)
 
 afw_compile_parse_AssignmentTarget (afw_compile_parser_t *parser, afw_compile_internal_assignment_type_t assignment_type)
 
 afw_compile_parse_Comparison (afw_compile_parser_t *parser)
 
 afw_compile_parse_EntryFunctionLambdaOrVariableReference (afw_compile_parser_t *parser)
 
 afw_compile_parse_Equality (afw_compile_parser_t *parser)
 
 afw_compile_parse_Exponentiation (afw_compile_parser_t *parser)
 
 afw_compile_parse_Evaluation (afw_compile_parser_t *parser)
 
 afw_compile_parse_Expression (afw_compile_parser_t *parser)
 
 afw_compile_parse_ExpressionTuple (afw_compile_parser_t *parser)
 
 afw_compile_parse_ExpressionTupleAnnotation (afw_compile_parser_t *parser)
 
 afw_compile_parse_ExpressionTupleOperation (afw_compile_parser_t *parser)
 
 afw_compile_parse_ExpressionTupleParameter (afw_compile_parser_t *parser)
 
 afw_compile_parse_Factor (afw_compile_parser_t *parser)
 
 afw_compile_parse_FunctionSignature (afw_compile_parser_t *parser, const afw_value_block_t **block)
 
 afw_compile_parse_FunctionSignatureAndBody (afw_compile_parser_t *parser)
 
 afw_compile_parse_Json (afw_compile_parser_t *parser)
 
 afw_compile_parse_Literal (afw_compile_parser_t *parser, afw_boolean_t *is_Literal, afw_boolean_t must_be_literal, afw_boolean_t scalar_only)
 
 afw_compile_parse_Lambda (afw_compile_parser_t *parser)
 
 afw_compile_parse_List (afw_compile_parser_t *parser, afw_boolean_t allow_expression, afw_boolean_t allow_enhanced_literals)
 
 afw_compile_parse_LogicalExpression (afw_compile_parser_t *parser)
 
 afw_compile_parse_LogicalAnd (afw_compile_parser_t *parser)
 
 afw_compile_parse_NullishCoalescing (afw_compile_parser_t *parser)
 
 afw_compile_parse_Object (afw_compile_parser_t *parser, afw_boolean_t allow_expression, afw_boolean_t allow_enhanced_literals)
 
 afw_compile_parse_OptionalDefineAssignment (afw_compile_parser_t *parser)
 
 afw_compile_parse_OptionalDefineTarget (afw_compile_parser_t *parser)
 
 afw_compile_parse_OptionalType (afw_compile_parser_t *parser, afw_boolean_t is_return)
 
 afw_compile_parse_Parameters (afw_compile_parser_t *parser, afw_compile_args_t *args)
 
 afw_compile_parse_ParenthesizedExpression (afw_compile_parser_t *parser)
 
 afw_compile_parse_Prefixed (afw_compile_parser_t *parser)
 
 afw_compile_parse_Reference (afw_compile_parser_t *parser)
 
 afw_compile_parse_Script (afw_compile_parser_t *parser)
 
 afw_compile_parse_Statement (afw_compile_parser_t *parser, afw_boolean_t *was_expression)
 
 afw_compile_parse_Substitution (afw_compile_parser_t *parser)
 
 afw_compile_parse_Template (afw_compile_parser_t *parser)
 
 afw_compile_parse_TemplateString (afw_compile_parser_t *parser)
 
 afw_compile_parse_Term (afw_compile_parser_t *parser)
 
 afw_compile_parse_TestScript (afw_compile_parser_t *parser)
 
 afw_compile_parse_Type (afw_compile_parser_t *parser)
 
 afw_compile_parse_Value (afw_compile_parser_t *parser)
 
 afw_compile_parse_Hybrid (afw_compile_parser_t *parser)
 
 afw_compile_parse_variable_reference_create (afw_compile_parser_t *parser, const afw_compile_value_contextual_t *contextual, afw_compile_internal_assignment_type_t assignment_type, const afw_utf8_t *identifier)
 
 afw_compile_skip_ws (afw_compile_parser_t *parser)
 
 afw_compile_check_for_residual (afw_compile_parser_t *parser)
 
 AFW_STACK_STRUCT (afw_compile_internal_args_s, const afw_value_t *)
 
 afw_compile_lexical_parser_create (const afw_utf8_t *source, afw_utf8_octet_get_cb_t callback, void *callback_data, const afw_utf8_t *source_location, afw_compile_type_t compile_type, afw_compile_residual_check_t residual_check, afw_boolean_t cede_p, const afw_value_compiled_value_t *parent, const afw_compile_shared_t *shared, const afw_pool_t *p, afw_xctx_t *xctx)
 
 afw_compile_lexical_parser_finish_and_release (afw_compile_parser_t *parser, afw_xctx_t *xctx)
 

Detailed Description

Adaptive Framework Compiler Internal.

Definition in file afw_compile_internal.h.