datex_core/parser/
errors.rs1use crate::ast::expressions::DatexExpression;
2use crate::compiler::error::ErrorCollector;
3use crate::global::operators::UnaryOperator;
4use crate::parser::lexer::Token;
5use crate::values::core_values::endpoint::InvalidEndpointError;
6use crate::values::core_values::error::NumberParseError;
7use core::ops::Range;
8
9#[derive(Debug, Clone, PartialEq, Eq)]
10pub enum ParserError {
11 InvalidToken,
13 UnexpectedToken {
15 expected: Vec<Token>,
16 found: Token,
17 },
18 ExpectedMoreTokens,
19 InvalidEndpointName {
20 name: String,
21 details: InvalidEndpointError,
22 },
23 InvalidAssignmentTarget,
24 NumberParseError(NumberParseError),
25 InvalidUnaryOperation {
26 operator: UnaryOperator,
27 },
28 InvalidTypeVariantAccess,
29 CouldNotMatchGenericParams,
31}
32
33#[derive(Debug)]
34pub struct DetailedParserErrorsWithAst {
35 pub ast: DatexExpression, pub errors: Vec<SpannedParserError>,
37}
38
39#[derive(Debug, Clone)]
40pub struct SpannedParserError {
41 pub error: ParserError,
42 pub span: Range<usize>,
43}
44
45impl ErrorCollector<SpannedParserError> for Vec<SpannedParserError> {
46 fn record_error(&mut self, error: SpannedParserError) {
47 self.push(error);
48 }
49}