Hi ich muss für ein Projekt einen Parser für folgende Datenstrukturen erstellen:
Code:
descriptor 81 mosaic_descriptor [
** *mosaic_entry_point * * * * * * * * * * 1
** *number_of_horizonal_elementary_cells * 3
** *reserved_future_use * * * * * * * * * *1 *ones
** *number_of_vertical_elementary_cells * *3
** *for length [
** * * *logical_cell_id * * * * * * * * * *6
** * * *reserved_future_use * * * * * * * *7 *ones
** * * *logical_cell_presentation * * * * *3
** * * *elementary_cell_field_length * * * 8 *byte_counter
** * * *for N [
** * * * * *reserved_future_use * * * * * *2 *ones
** * * * * *elementary_cell_id * * * * * * 6
** * * *]
** * * *cell_linkage_info * * * * * * * * *8
** * * *if [cell_linkage_info = 1] [
** * * * * *bouquet_id * * * * * * * * * * 16
** * * *]
** * * *if [cell_linkage_info = 2] [
** * * * * *original_network_id * * * * * *16 hex
** * * * * *transport_stream_id * * * * * *16 hex
** * * * * *service_id * * * * * * * * * * 16
** * * *]
** * * *if [cell_linkage_info = 3] [
** * * * * *original_network_id * * * * * *16 hex
** * * * * *transport_stream_id * * * * * *16 hex
** * * * * *service_id * * * * * * * * * * 16
** * * *]
** * * *if [cell_linkage_info = 4] [
** * * * * *original_network_id * * * * * *16 hex
** * * * * *transport_stream_id * * * * * *16 hex
** * * * * *service_id * * * * * * * * * * 16
** * * * * *event_id * * * * * * * * * * * 16
** * * *]
** *]
*
** *enum logical_cell_presentation [
** * * *0 *"undefined"
** * * *1 *"video"
** * * *2 *"still picture"
** * * *3 *"graphics/text"
** *]
*
** *enum cell_linkage_info [
** * * *0 *"undefined"
** * * 1 *"bouquet related"
** * * *2 *"service related"
** * * *3 *"other mosaic related"
** * * *4 *"event related"
** *]
]
Jeder descriptor kann recht verschachtelt sein und schaut ähnlich wie der obige aus. Length ist die komplette Länge in Byte, die Zahlen rechts sind in Bit. Hat jemand eine Idee wie ich das ganze möglichst flexibel gestalte, ohne gleich mit einem Riesen Compiler/Lexer arbeiten zu müssen?
Peter
PS: Von Compilerbau hab ich das letzte mal was vor 10+ Jahren mal im Studium gehört *herrje bin ich alt* :/