etc:users:jcmvbkbc:isl
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
etc:users:jcmvbkbc:isl [2010/08/15 18:50] – + case naming jcmvbkbc | etc:users:jcmvbkbc:isl [2010/11/04 00:49] – + reduction rule clarified jcmvbkbc | ||
---|---|---|---|
Line 56: | Line 56: | ||
When the header is absent Param1 corresponds to the trailer. If there' | When the header is absent Param1 corresponds to the trailer. If there' | ||
+ | |||
+ | Interfaces visible from root package, not referenced from other interfaces visible from root package get translated to pack/ | ||
===== Decoding context ===== | ===== Decoding context ===== | ||
Line 121: | Line 123: | ||
Only mandatory fields may have LengthRestriction > 1. | Only mandatory fields may have LengthRestriction > 1. | ||
+ | |||
+ | ===== Derived interfaces ===== | ||
+ | * if derivation is by inversion, another interface is created and parent' | ||
+ | * if derivation is by narrowing, another interface is created and extra messages are removed from there; | ||
+ | * derived interface is always represented by the DerivedInterface class; | ||
===== Validation constraints ===== | ===== Validation constraints ===== | ||
Line 128: | Line 135: | ||
* every pack/unpack message has corresponding messagetype; | * every pack/unpack message has corresponding messagetype; | ||
* header and trailer follow the rules for fields; | * header and trailer follow the rules for fields; | ||
+ | * message types are all different; | ||
==== Field/ | ==== Field/ | ||
* types of subfields are visible, parameterized types has required arguments; | * types of subfields are visible, parameterized types has required arguments; | ||
* field names are unique in each field contents scope; | * field names are unique in each field contents scope; | ||
+ | * no cyclic dependencies of fields/ | ||
+ | * however, even with the current naming rules there may be cyclic dependencies in optional_repeated parts and inside case constructs; | ||
+ | * generally every optional parts and case content may have cyclic dependencies; | ||
+ | |||
+ | ==== Constants ==== | ||
+ | * expression in constant' | ||
+ | * constants may not have recursive definition; | ||
===== Language features ===== | ===== Language features ===== | ||
Line 166: | Line 181: | ||
* it treats root package differently than named packages; | * it treats root package differently than named packages; | ||
* sibling packages don't merge and don't collide, one defined later is effective, others are ignored; | * sibling packages don't merge and don't collide, one defined later is effective, others are ignored; | ||
+ | |||
===== Naming for C output ===== | ===== Naming for C output ===== | ||
Line 171: | Line 187: | ||
There are two generic rules: | There are two generic rules: | ||
* type names are generated with suffix ' | * type names are generated with suffix ' | ||
- | * when there' | + | * when there' |
+ | * 'one subfield' | ||
==== Field/ | ==== Field/ | ||
Line 210: | Line 227: | ||
typedef enum { B_a_t_V1 = 1, B_a_t_V2 = 2 } B_a_t; | typedef enum { B_a_t_V1 = 1, B_a_t_V2 = 2 } B_a_t; | ||
</ | </ | ||
+ | |||
==== Case ==== | ==== Case ==== | ||
Line 215: | Line 233: | ||
* <C choice type> = <C container type> | * <C choice type> = <C container type> | ||
* <C choice type_t> = <C choice type>_t | * <C choice type_t> = <C choice type>_t | ||
- | * case labels: | + | * case labels |
* for numeric labels <C case name> = case< | * for numeric labels <C case name> = case< | ||
* for enum labels <C case name> = <enum label> | * for enum labels <C case name> = <enum label> | ||
- | Choice | + | Choice is always represented by the following structure: |
< | < | ||
struct <C choice type_t> { <C choice type_t> | struct <C choice type_t> { <C choice type_t> | ||
Line 227: | Line 245: | ||
Ex: see case.pdu | Ex: see case.pdu | ||
+ | |||
+ | ===== Schedule ===== | ||
+ | * finalize naming for the following items: | ||
+ | * exported constants; | ||
+ | * cases; | ||
+ | * ranges; | ||
+ | * arrays of primitive types; | ||
+ | * strings; | ||
+ | * interfaces, derived and nested; | ||
+ | * ? | ||
+ | * separate compiler frontend and backend; | ||
+ | * implement validators; | ||
+ | * implement pack/ | ||
+ | * interfaces; | ||
+ | * optional/ | ||
+ | * alignment; | ||
+ | * type instantiation and deep referencing; | ||
+ | * test; | ||
+ | * presentation; |
etc/users/jcmvbkbc/isl.txt · Last modified: 2016/08/08 20:53 by kel