ridl-syntax 0.11.0

The RIDL family lexer and grammar: a lossless concrete syntax tree over rowan.
Documentation
package veh.lenient

// Grammar over-approximations (the parser accepts, the checker narrows
// and emits the rejections). Every shape below parses losslessly with zero
// parser errors.

interface LenientShapes {

  // RIDL-201 territory: a stream payload on a signal parses.
  signal rawFeed : <SensorFrame>

  // RIDL-104 territory: a return type on a command parses.
  command setMode(mode: DriveMode): AckState

  // RIDL-106 territory and friends: timing parses on command, query, fixed.
  command reset() @50ms
  query getState(): DriveState @[10ms..100ms]
  fixed buildId : BuildId @1s

  // RIDL-301/-106 territory: attr blocks parse on signal, event, fixed.
  signal speed : Speed [ persist ]
  event doorOpened : DoorPayload [ someKey = 3 ]
  fixed vin : Vin [ cached ]

  // Init values parse on event and fixed.
  event calibrated : CalPayload = DEFAULT_CAL
  fixed region : Region = REGION_EU

  // Timing and attr block in either order, on every interaction kind.
  query ordered(): DriveState [ flagged ] @10ms
  query reordered(): DriveState @10ms [ flagged ]
  command attrsFirst() [ flagged ] @[..50ms]
  command timingFirst() @[..50ms] [ flagged ]
  signal attrsFirstSignal : Speed [ persist ] @10ms
  signal timingFirstSignal : Speed @10ms [ persist ]
  event attrsFirstEvent : DoorPayload [ someKey = 3 ] @[..1s]
  event timingFirstEvent : DoorPayload @[..1s] [ someKey = 3 ]
  fixed attrsFirstFixed : Vin [ cached ] @1s
  fixed timingFirstFixed : Vin @1s [ cached ]
}