Skip to content
Snippets Groups Projects
Select Git revision
  • 59a4985519ce3100226928f163b7d5e3497a3591
  • master default
  • labcomm2014
  • labcomm2006
  • python_sig_hash
  • typedefs
  • anders.blomdell
  • typeref
  • pragma
  • compiler-refactoring
  • labcomm2013
  • v2014.6
  • v2015.0
  • v2014.5
  • v2014.4
  • v2006.0
  • v2014.3
  • v2014.2
  • v2014.1
  • v2014.0
  • v2013.0
21 results

labcomm

Sven Gestegard Robertz's avatar
Sven Gestegård Robertz authored
pruned and grafted the refactored compiler from the metadata branch. Tests run, but code needs cleanup
59a49855
History
Embryo of documentation. More details on http://wiki.cs.lth.se/moin/LabComm

*** The LabComm data description language: ***

Primitive types

  sample boolean a_boolean;
  sample byte a_byte;
  sample short a_short;
  sample int an_int;
  sample long a_long;
  sample float a_float;
  sample double a_double;
  sample string a_string;


Arrays

  sample int fixed_array[3];
  sample int variable_array[_];                // Note 1
  sample int fixed_array_of_array[3][4];       // Note 2
  sample int fixed_rectangular_array[3, 4];    // Note 2
  sample int variable_array_of_array[_][_];    // Notes 1 & 2
  sample int variable_rectangular_array[_, _]; // Notes 1 & 2

1 In contrast to C, LabComm supports both fixed and variable (denoted by '_') sized arrays.
2 In contrast to Java, LabComm supports multidimensional arrays and not only arrays of arrays. 


Structures

  sample struct {
    int an_int_field;
    double a_double_field;
  } a_struct;


User defined types

  typedef struct {
    int field_1;
    byte field_2;
  } user_type[_];
  sample user_type a_user_type_instance;
  sample user_type another_user_type_instance;


Example sample declaration (e.g. example.lc)

  sample struct {
    int sequence;
    struct {
      boolean last;
      string data;
    } line[_];
  } log_message;

From an .lc file, the labcomm compiler can generate marshalling and demarshalling code
for C, Java, Python, and C#.