mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
`FILE_PATTERNS` is a space-separated list, in contrary to what is suggested by its documentation. The pattern `*.h, *.c` does not match header files but files with `.h,` extension only. Rewriting the current comma-separated pattern makes Doxygen actually process header files. However, it also reveals several hitherto hidden issues (mostly missing documentation) in the code. This patch fixes some of these documentation problems (and lists the files with outstanding issues in a 'backlog'). JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu
156 lines
8.6 KiB
C
156 lines
8.6 KiB
C
/* Copyright JS Foundation and other contributors, http://js.foundation
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef JS_PARSER_H
|
|
#define JS_PARSER_H
|
|
|
|
#include "ecma-globals.h"
|
|
|
|
/** \addtogroup parser Parser
|
|
* @{
|
|
*
|
|
* \addtogroup jsparser JavaScript
|
|
* @{
|
|
*
|
|
* \addtogroup jsparser_parser Parser
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* Error codes.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PARSER_ERR_NO_ERROR, /**< no error */
|
|
|
|
PARSER_ERR_OUT_OF_MEMORY, /**< out of memory */
|
|
PARSER_ERR_LITERAL_LIMIT_REACHED, /**< maximum number of literals reached */
|
|
PARSER_ERR_ARGUMENT_LIMIT_REACHED, /**< maximum number of function arguments reached */
|
|
PARSER_ERR_STACK_LIMIT_REACHED, /**< maximum function stack size reached */
|
|
PARSER_ERR_REGISTER_LIMIT_REACHED, /**< maximum register size reached */
|
|
|
|
PARSER_ERR_INVALID_CHARACTER, /**< unexpected character */
|
|
PARSER_ERR_INVALID_HEX_DIGIT, /**< invalid hexadecimal digit */
|
|
PARSER_ERR_INVALID_ESCAPE_SEQUENCE, /**< invalid escape sequence */
|
|
PARSER_ERR_INVALID_UNICODE_ESCAPE_SEQUENCE, /**< invalid unicode escape sequence */
|
|
PARSER_ERR_INVALID_IDENTIFIER_START, /**< character cannot be start of an identifier */
|
|
PARSER_ERR_INVALID_IDENTIFIER_PART, /**< character cannot be part of an identifier */
|
|
|
|
PARSER_ERR_INVALID_NUMBER, /**< invalid number literal */
|
|
PARSER_ERR_MISSING_EXPONENT, /**< missing exponent */
|
|
PARSER_ERR_IDENTIFIER_AFTER_NUMBER, /**< identifier start after number */
|
|
|
|
PARSER_ERR_INVALID_REGEXP, /**< invalid regular expression */
|
|
PARSER_ERR_UNKNOWN_REGEXP_FLAG, /**< unknown regexp flag */
|
|
PARSER_ERR_DUPLICATED_REGEXP_FLAG, /**< duplicated regexp flag */
|
|
PARSER_ERR_UNSUPPORTED_REGEXP, /**< regular expression is not supported */
|
|
|
|
PARSER_ERR_IDENTIFIER_TOO_LONG, /**< too long identifier */
|
|
PARSER_ERR_STRING_TOO_LONG, /**< too long string literal */
|
|
PARSER_ERR_NUMBER_TOO_LONG, /**< too long number literal */
|
|
PARSER_ERR_REGEXP_TOO_LONG, /**< too long regexp literal */
|
|
|
|
PARSER_ERR_UNTERMINATED_MULTILINE_COMMENT, /**< unterminated multiline comment */
|
|
PARSER_ERR_UNTERMINATED_STRING, /**< unterminated string literal */
|
|
PARSER_ERR_UNTERMINATED_REGEXP, /**< unterminated regexp literal */
|
|
|
|
PARSER_ERR_NEWLINE_NOT_ALLOWED, /**< newline is not allowed */
|
|
PARSER_ERR_OCTAL_NUMBER_NOT_ALLOWED, /**< octal numbers are not allowed in strict mode */
|
|
PARSER_ERR_OCTAL_ESCAPE_NOT_ALLOWED, /**< octal escape sequences are not allowed in strict mode */
|
|
PARSER_ERR_STRICT_IDENT_NOT_ALLOWED, /**< identifier name is reserved in strict mode */
|
|
PARSER_ERR_EVAL_NOT_ALLOWED, /**< eval is not allowed here in strict mode */
|
|
PARSER_ERR_ARGUMENTS_NOT_ALLOWED, /**< arguments is not allowed here in strict mode */
|
|
PARSER_ERR_DELETE_IDENT_NOT_ALLOWED, /**< identifier delete is not allowed in strict mode */
|
|
PARSER_ERR_EVAL_CANNOT_ASSIGNED, /**< eval cannot be assigned in strict mode */
|
|
PARSER_ERR_ARGUMENTS_CANNOT_ASSIGNED, /**< arguments cannot be assigned in strict mode */
|
|
PARSER_ERR_WITH_NOT_ALLOWED, /**< with statement is not allowed in strict mode */
|
|
PARSER_ERR_MULTIPLE_DEFAULTS_NOT_ALLOWED, /**< multiple default cases are not allowed */
|
|
PARSER_ERR_DEFAULT_NOT_IN_SWITCH, /**< default statement is not in switch block */
|
|
PARSER_ERR_CASE_NOT_IN_SWITCH, /**< case statement is not in switch block */
|
|
#ifndef CONFIG_DISABLE_ES2015_CLASS
|
|
PARSER_ERR_MULTIPLE_CLASS_CONSTRUCTORS, /**< multiple class constructor */
|
|
PARSER_ERR_CLASS_CONSTRUCTOR_AS_ACCESSOR, /**< class constructor cannot be an accessor */
|
|
PARSER_ERR_CLASS_STATIC_PROTOTYPE, /**< static method name 'prototype' is not allowed */
|
|
#endif /* !CONFIG_DISABLE_ES2015_CLASS */
|
|
|
|
PARSER_ERR_LEFT_PAREN_EXPECTED, /**< left paren expected */
|
|
PARSER_ERR_LEFT_BRACE_EXPECTED, /**< left brace expected */
|
|
PARSER_ERR_RIGHT_PAREN_EXPECTED, /**< right paren expected */
|
|
PARSER_ERR_RIGHT_SQUARE_EXPECTED, /**< right square expected */
|
|
#ifndef CONFIG_DISABLE_ES2015_TEMPLATE_STRINGS
|
|
PARSER_ERR_RIGHT_BRACE_EXPECTED, /**< right brace expected */
|
|
#endif /* !CONFIG_DISABLE_ES2015_TEMPLATE_STRINGS */
|
|
PARSER_ERR_COLON_EXPECTED, /**< colon expected */
|
|
PARSER_ERR_COLON_FOR_CONDITIONAL_EXPECTED, /**< colon expected for conditional expression */
|
|
PARSER_ERR_SEMICOLON_EXPECTED, /**< semicolon expected */
|
|
PARSER_ERR_IN_EXPECTED, /**< in keyword expected */
|
|
PARSER_ERR_WHILE_EXPECTED, /**< while expected for do-while loop */
|
|
PARSER_ERR_CATCH_FINALLY_EXPECTED, /**< catch or finally expected */
|
|
PARSER_ERR_ARRAY_ITEM_SEPARATOR_EXPECTED, /**< array item separator expected */
|
|
PARSER_ERR_OBJECT_ITEM_SEPARATOR_EXPECTED, /**< object item separator expected */
|
|
PARSER_ERR_IDENTIFIER_EXPECTED, /**< identifier expected */
|
|
PARSER_ERR_EXPRESSION_EXPECTED, /**< expression expected */
|
|
PARSER_ERR_PRIMARY_EXP_EXPECTED, /**< primary expression expected */
|
|
PARSER_ERR_STATEMENT_EXPECTED, /**< statement expected */
|
|
PARSER_ERR_PROPERTY_IDENTIFIER_EXPECTED, /**< property identifier expected */
|
|
PARSER_ERR_ARGUMENT_LIST_EXPECTED, /**< argument list expected */
|
|
PARSER_ERR_NO_ARGUMENTS_EXPECTED, /**< property getters must have no arguments */
|
|
PARSER_ERR_ONE_ARGUMENT_EXPECTED, /**< property setters must have one argument */
|
|
|
|
PARSER_ERR_INVALID_EXPRESSION, /**< invalid expression */
|
|
PARSER_ERR_INVALID_SWITCH, /**< invalid switch body */
|
|
PARSER_ERR_INVALID_BREAK, /**< break must be inside a loop or switch */
|
|
PARSER_ERR_INVALID_BREAK_LABEL, /**< break target not found */
|
|
PARSER_ERR_INVALID_CONTINUE, /**< continue must be inside a loop */
|
|
PARSER_ERR_INVALID_CONTINUE_LABEL, /**< continue target not found */
|
|
PARSER_ERR_INVALID_RETURN, /**< return must be inside a function */
|
|
PARSER_ERR_INVALID_RIGHT_SQUARE, /**< right square must terminate a block */
|
|
PARSER_ERR_DUPLICATED_LABEL, /**< duplicated label */
|
|
PARSER_ERR_OBJECT_PROPERTY_REDEFINED, /**< property of object literal redefined */
|
|
PARSER_ERR_NON_STRICT_ARG_DEFINITION /**< non-strict argument definition */
|
|
} parser_error_t;
|
|
|
|
/**
|
|
* Source code line counter type.
|
|
*/
|
|
typedef uint32_t parser_line_counter_t;
|
|
|
|
/**
|
|
* Error code location.
|
|
*/
|
|
typedef struct
|
|
{
|
|
parser_error_t error; /**< error code */
|
|
parser_line_counter_t line; /**< line where the error occured */
|
|
parser_line_counter_t column; /**< column where the error occured */
|
|
} parser_error_location_t;
|
|
|
|
/* Note: source must be a valid UTF-8 string */
|
|
ecma_value_t parser_parse_script (const uint8_t *arg_list_p, size_t arg_list_size,
|
|
const uint8_t *source_p, size_t source_size,
|
|
uint32_t parse_opts, ecma_compiled_code_t **bytecode_data_p);
|
|
|
|
#ifdef JERRY_ENABLE_ERROR_MESSAGES
|
|
const char *parser_error_to_string (parser_error_t);
|
|
#endif /* JERRY_ENABLE_ERROR_MESSAGES */
|
|
|
|
/**
|
|
* @}
|
|
* @}
|
|
* @}
|
|
*/
|
|
|
|
#endif /* !JS_PARSER_H */
|