Closes #6
This commit is contained in:
1 parent
88b5883dda
commit
8d82b13dad
5 files changed
+227
-94
No files matched your search
@@ -532,9 +532,8 @@ one-based physical line number, including blank lines:
|
||||
example.dbc:3: Invalid CAN ID: invalid
|
||||
```
|
||||
|
||||
This change validates frame definitions. Signal syntax and unsupported DBC
|
||||
constructs retain their existing behavior; comprehensive validation is still
|
||||
planned. File-open errors contain the path but have no line number.
|
||||
This change validates frame definitions. Signal definitions are also validated as described below; comprehensive
|
||||
DBC grammar coverage is still planned. File-open errors contain the path but have no line number.
|
||||
|
||||
---
|
||||
|
||||
@@ -562,6 +561,35 @@ Parsed fields:
|
||||
|
||||
---
|
||||
|
||||
### Signal validation and parse errors
|
||||
|
||||
`SG_` statements are matched completely. Signal names must be nonempty and
|
||||
contain no whitespace. Spaces and tabs are accepted between syntax elements;
|
||||
byte order and signedness remain adjacent (`@0+`, `@0-`, `@1+`, or `@1-`).
|
||||
A quoted unit (which may be empty) and a nonempty comma-separated receiver
|
||||
list are required. Unexpected trailing fields are rejected.
|
||||
|
||||
Start bits must be unsigned decimal integers fitting `uint32_t`; lengths must
|
||||
be within `1..64` bits. Signs, fractional values, numeric suffixes, and overflow
|
||||
are rejected for these fields. Every signal bit must fit within the frame's
|
||||
declared payload length, using Intel increasing bit positions or Motorola
|
||||
sawtooth traversal. This uses the stored payload length without introducing
|
||||
an additional CAN or CAN FD payload limit.
|
||||
|
||||
Factor, offset, minimum, and maximum accept signed decimal numbers, fractions,
|
||||
and scientific notation. The entire numeric token must be valid; hexadecimal
|
||||
numbers, NaN, infinity, conversion overflow, and conversion underflow are
|
||||
rejected. Minimum must not exceed maximum. Zero and negative factors are allowed.
|
||||
|
||||
Multiplexing markers (`M`, `mN`, and combinations) are currently rejected rather
|
||||
than interpreted as part of a signal name. Multiplexing support and duplicate
|
||||
frame/signal detection remain separate work.
|
||||
|
||||
Invalid signal definitions stop parsing with `path:line: description`, including
|
||||
when the signal exceeds the declared payload length.
|
||||
|
||||
---
|
||||
|
||||
## Comments
|
||||
|
||||
Frame comment example:
|
||||
@@ -805,8 +833,8 @@ RegisterType<DbcValueHandler>("VAL_"); // after implementing DbcValueHandler
|
||||
Registration creates one handler; replacing a registration replaces that instance.
|
||||
Register during initialization before dispatching. A line is routed using its
|
||||
full first whitespace-delimited keyword, so `BO_TX_BU_` cannot match `BO_`.
|
||||
Unregistered keywords remain ignored. Existing `SG_` and `CM_` syntax policies
|
||||
are preserved, including requiring a literal space after those keywords.
|
||||
Unregistered keywords remain ignored. `SG_` accepts spaces and tabs after its keyword; `CM_` retains its existing
|
||||
policy requiring a literal space.
|
||||
|
||||
This factory handles statements inside DBC files. A separate format-level
|
||||
factory can be introduced when another file format is implemented. The decoder
|
||||
|
||||
Reference in new issue
Block a user