Skip to content

Commit

Permalink
wip #8 added optionality and passthru to signatures
Browse files Browse the repository at this point in the history
  • Loading branch information
zippy committed Oct 22, 2015
1 parent d575eed commit 3a6a92d
Show file tree
Hide file tree
Showing 25 changed files with 283 additions and 190 deletions.
2 changes: 1 addition & 1 deletion spec/def_spec.h
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ void testDefSysDefs() {
// spec_is_str_equal(t2s(_t_child(G_contexts[SYS_CONTEXT].root,1)),"(STRUCTURES (STRUCTURE_DEFINITION (STRUCTURE_LABEL:BIT) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:INTEGER) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:FLOAT) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:CHAR) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:CSTRING) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:SYMBOL) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:ENUM) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:TREE_PATH) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:XADDR) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:LIST) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:SURFACE) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:TREE) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:RECEPTOR) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:PROCESS) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:STRUCTURE) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:SCAPE) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:SEMTREX) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:STREAM) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:UUID) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:STRUCTURE_DEF) (STRUCTURE_SYMBOL:NULL_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:SIGNATURE_PART) (STRUCTURE_SEQUENCE (STRUCTURE_SYMBOL:SIGNATURE_LABEL) (STRUCTURE_SYMBOL:SIGNATURE_TYPE))) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:SEQUENCE) (STRUCTURE_SYMBOL:STEP_SYMBOL)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:PROTOCOL_STEP) (STRUCTURE_SEQUENCE (STRUCTURE_SYMBOL:EXPECTATION) (STRUCTURE_SYMBOL:PARAMS) (STRUCTURE_SYMBOL:ACTION))) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:PROTOCOL) (STRUCTURE_SEQUENCE (STRUCTURE_SYMBOL:STEPS) (STRUCTURE_SYMBOL:SEQUENCES))) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:DATE) (STRUCTURE_SEQUENCE (STRUCTURE_SYMBOL:YEAR) (STRUCTURE_SYMBOL:MONTH) (STRUCTURE_SYMBOL:DAY))) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:TIME) (STRUCTURE_SEQUENCE (STRUCTURE_SYMBOL:HOUR) (STRUCTURE_SYMBOL:MINUTE) (STRUCTURE_SYMBOL:SECOND))) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:TIMESTAMP) (STRUCTURE_SEQUENCE (STRUCTURE_SYMBOL:TODAY) (STRUCTURE_SYMBOL:NOW))) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:REDUCTION_ERROR) (STRUCTURE_SYMBOL:ERROR_LOCATION)) (STRUCTURE_DEFINITION (STRUCTURE_LABEL:TREE_DELTA) (STRUCTURE_SEQUENCE (STRUCTURE_SYMBOL:TREE_DELTA_PATH) (STRUCTURE_SYMBOL:TREE_DELTA_VALUE) (STRUCTURE_SYMBOL:TREE_DELTA_COUNT))))");

// an example of a defined process (if)
spec_is_str_equal(t2s(_t_child(_t_child(G_contexts[SYS_CONTEXT].root,3),2)),"(PROCESS_CODING (PROCESS_NAME:IF) (PROCESS_INTENTION:if) (PROCESS_SIGNATURE (OUTPUT_SIGNATURE (SIGNATURE_LABEL:result) (SIGNATURE_STRUCTURE:TREE)) (INPUT_SIGNATURE (SIGNATURE_LABEL:condition) (SIGNATURE_PROCESS:BOOLEAN)) (INPUT_SIGNATURE (SIGNATURE_LABEL:then) (SIGNATURE_STRUCTURE:TREE)) (INPUT_SIGNATURE (SIGNATURE_LABEL:else) (SIGNATURE_STRUCTURE:TREE))))");
spec_is_str_equal(t2s(_t_child(_t_child(G_contexts[SYS_CONTEXT].root,3),2)),"(PROCESS_CODING (PROCESS_NAME:IF) (PROCESS_INTENTION:if) (PROCESS_SIGNATURE (OUTPUT_SIGNATURE (SIGNATURE_LABEL:result) (SIGNATURE_PASSTHRU)) (INPUT_SIGNATURE (SIGNATURE_LABEL:condition) (SIGNATURE_PROCESS:BOOLEAN)) (INPUT_SIGNATURE (SIGNATURE_LABEL:then) (SIGNATURE_ANY)) (INPUT_SIGNATURE (SIGNATURE_LABEL:else) (SIGNATURE_ANY) (SIGNATURE_OPTIONAL))))");
}

void testDef() {
Expand Down
18 changes: 11 additions & 7 deletions src/base_defs
Original file line number Diff line number Diff line change
Expand Up @@ -104,14 +104,18 @@ Symbol: PROCESS_CODING,[(PROCESS_NAME,PROCESS_INTENTION,PROCESS,PROCESS_SIGNATUR
Symbol: PROCESSES,[*PROCESS_CODING];

Symbol: SIGNATURE_LABEL,CSTRING;
Symbol: SIGNATURE_TYPE,STRUCTURE; the semantic type that would match i.e. either PROCESS/STRUCTURE or SYMBOL
Symbol: SIGNATURE_STRUCTURE,STRUCTURE; the structure that would match
Symbol: SIGNATURE_SYMBOL,SYMBOL; the symbol that would match
Symbol: SIGNATURE_PROCESS,SYMBOL; the output signature of the process
Structure: SIGNATURE_PART,SIGNATURE_LABEL,SIGNATURE_TYPE;
Symbol: INPUT_SIGNATURE,SIGNATURE_PART;
Symbol: OUTPUT_SIGNATURE,SIGNATURE_PART;
Symbol: PROCESS_SIGNATURE,LIST; a list where the first elem is the output signature, and the rest are the input signatures
Symbol: SIGNATURE_PROCESS,SYMBOL; the output signature of the process
Symbol: SIGNATURE_PASSTHRU,NULL_STRUCTURE;
Symbol: SIGNATURE_ANY,NULL_STRUCTURE;
Symbol: SIGNATURE_OPTIONAL,NULL_STRUCTURE;
Symbol: SIGNATURE_OUTPUT_TYPE,[{SIGNATURE_STRUCTURE,SIGNATURE_SYMBOL,SIGNATURE_PROCESS,SIGNATURE_PASSTHRU}]; the semantic type expected as result i.e. either PROCESS/STRUCTURE/SYMBOL or PASSTHRU when the type comes from a reduction of a SIGNATURE_ANY
Structure: SIGNATURE_SEMANTIC_VARIANTS,{SIGNATURE_STRUCTURE,SIGNATURE_SYMBOL,SIGNATURE_PROCESS,SIGNATURE_ANY};
Symbol: SIGNATURE_INPUT_TYPE,[(SIGNATURE_SEMANTIC_VARIANTS,?SIGNATURE_OPTIONAL)]; the semantic type that would expected as input i.e. either PROCESS/STRUCTURE/SYMBOL
Symbol: INPUT_SIGNATURE,[(SIGNATURE_LABEL,SIGNATURE_INPUT_TYPE)];
Symbol: OUTPUT_SIGNATURE,[(SIGNATURE_LABEL,SIGNATURE_OUTPUT_TYPE)];
Symbol: PROCESS_SIGNATURE,[(OUTPUT_SIGNATURE,*INPUT_SIGNATURE)];

Symbol: RUN_TREE,TREE; think about this as a stack frame and its code
Symbol: PARAM_REF,TREE_PATH; used in a code tree as a reference to a parameter
Expand Down Expand Up @@ -174,7 +178,7 @@ Symbol: INCOMPATIBLE_TYPE_ERR,REDUCTION_ERROR;
Symbol: UNIX_ERRNO_ERR,REDUCTION_ERROR;

Process: NOOP,"no-op","result",SIGNATURE_STRUCTURE,TREE,0;
Process: IF,"if","result",SIGNATURE_STRUCTURE,TREE,"condition",SIGNATURE_PROCESS,BOOLEAN,"then",SIGNATURE_STRUCTURE,TREE,"else",SIGNATURE_STRUCTURE,TREE,0;
Process: IF,"if","result",SIGNATURE_PASSTHRU,NULL_STRUCTURE,"condition",SIGNATURE_PROCESS,BOOLEAN,"then",SIGNATURE_ANY,NULL_STRUCTURE,"else",SIGNATURE_OPTIONAL,SIGNATURE_ANY,NULL_STRUCTURE,0;
Process: ADD_INT,"addition","sum",SIGNATURE_STRUCTURE,INTEGER,"augend",SIGNATURE_STRUCTURE,INTEGER,"addend",SIGNATURE_STRUCTURE,INTEGER,0;
Process: SUB_INT,"subtract","difference",SIGNATURE_STRUCTURE,INTEGER,"minuend",SIGNATURE_STRUCTURE,INTEGER,"subtrahend",SIGNATURE_STRUCTURE,INTEGER,0;
Process: MULT_INT,"multiply","product",SIGNATURE_STRUCTURE,INTEGER,"multiplicand",SIGNATURE_STRUCTURE,INTEGER,"multiplier",SIGNATURE_STRUCTURE,INTEGER,0;
Expand Down
21 changes: 15 additions & 6 deletions src/base_defs.c
Original file line number Diff line number Diff line change
Expand Up @@ -137,14 +137,23 @@ void base_defs() {
sTs(SYS_CONTEXT,ZERO_OR_MORE_OF_PROCESS_CODING,sT_STAR(sT_SYM(PROCESS_CODING)));
sYs(SYS_CONTEXT,PROCESSES,ZERO_OR_MORE_OF_PROCESS_CODING);
sY(SYS_CONTEXT,SIGNATURE_LABEL,CSTRING);
sY(SYS_CONTEXT,SIGNATURE_TYPE,STRUCTURE);
sY(SYS_CONTEXT,SIGNATURE_STRUCTURE,STRUCTURE);
sY(SYS_CONTEXT,SIGNATURE_SYMBOL,SYMBOL);
sY(SYS_CONTEXT,SIGNATURE_PROCESS,SYMBOL);
sT(SYS_CONTEXT,SIGNATURE_PART,2,SIGNATURE_LABEL,SIGNATURE_TYPE);
sY(SYS_CONTEXT,INPUT_SIGNATURE,SIGNATURE_PART);
sY(SYS_CONTEXT,OUTPUT_SIGNATURE,SIGNATURE_PART);
sYs(SYS_CONTEXT,PROCESS_SIGNATURE,LIST);
sY(SYS_CONTEXT,SIGNATURE_PASSTHRU,NULL_STRUCTURE);
sY(SYS_CONTEXT,SIGNATURE_ANY,NULL_STRUCTURE);
sY(SYS_CONTEXT,SIGNATURE_OPTIONAL,NULL_STRUCTURE);
sTs(SYS_CONTEXT,ONE_OF_SIGNATURE_STRUCTURE_AND_SIGNATURE_SYMBOL_AND_SIGNATURE_PROCESS_AND_SIGNATURE_PASSTHRU,sT_SET(4,sT_SYM(SIGNATURE_STRUCTURE),sT_SYM(SIGNATURE_SYMBOL),sT_SYM(SIGNATURE_PROCESS),sT_SYM(SIGNATURE_PASSTHRU)));
sY(SYS_CONTEXT,SIGNATURE_OUTPUT_TYPE,ONE_OF_SIGNATURE_STRUCTURE_AND_SIGNATURE_SYMBOL_AND_SIGNATURE_PROCESS_AND_SIGNATURE_PASSTHRU);
sTs(SYS_CONTEXT,SIGNATURE_SEMANTIC_VARIANTS,sT_SET(4,sT_SYM(SIGNATURE_STRUCTURE),sT_SYM(SIGNATURE_SYMBOL),sT_SYM(SIGNATURE_PROCESS),sT_SYM(SIGNATURE_ANY)));
sTs(SYS_CONTEXT,TUPLE_OF_SIGNATURE_SEMANTIC_VARIANTS_AND_ZERO_OR_ONE_OF_SIGNATURE_OPTIONAL,sT_SEQ(2,sT_SYM(SIGNATURE_SEMANTIC_VARIANTS),sT_QMRK(sT_SYM(SIGNATURE_OPTIONAL))));
sY(SYS_CONTEXT,SIGNATURE_INPUT_TYPE,TUPLE_OF_SIGNATURE_SEMANTIC_VARIANTS_AND_ZERO_OR_ONE_OF_SIGNATURE_OPTIONAL);
sTs(SYS_CONTEXT,TUPLE_OF_SIGNATURE_LABEL_AND_SIGNATURE_INPUT_TYPE,sT_SEQ(2,sT_SYM(SIGNATURE_LABEL),sT_SYM(SIGNATURE_INPUT_TYPE)));
sY(SYS_CONTEXT,INPUT_SIGNATURE,TUPLE_OF_SIGNATURE_LABEL_AND_SIGNATURE_INPUT_TYPE);
sTs(SYS_CONTEXT,TUPLE_OF_SIGNATURE_LABEL_AND_SIGNATURE_OUTPUT_TYPE,sT_SEQ(2,sT_SYM(SIGNATURE_LABEL),sT_SYM(SIGNATURE_OUTPUT_TYPE)));
sY(SYS_CONTEXT,OUTPUT_SIGNATURE,TUPLE_OF_SIGNATURE_LABEL_AND_SIGNATURE_OUTPUT_TYPE);
sTs(SYS_CONTEXT,TUPLE_OF_OUTPUT_SIGNATURE_AND_ZERO_OR_MORE_OF_INPUT_SIGNATURE,sT_SEQ(2,sT_SYM(OUTPUT_SIGNATURE),sT_STAR(sT_SYM(INPUT_SIGNATURE))));
sYs(SYS_CONTEXT,PROCESS_SIGNATURE,TUPLE_OF_OUTPUT_SIGNATURE_AND_ZERO_OR_MORE_OF_INPUT_SIGNATURE);
sY(SYS_CONTEXT,RUN_TREE,TREE);
sY(SYS_CONTEXT,PARAM_REF,TREE_PATH);
sY(SYS_CONTEXT,PARAMS,LIST);
Expand Down Expand Up @@ -201,7 +210,7 @@ void base_defs() {
sY(SYS_CONTEXT,INCOMPATIBLE_TYPE_ERR,REDUCTION_ERROR);
sY(SYS_CONTEXT,UNIX_ERRNO_ERR,REDUCTION_ERROR);
sP(SYS_CONTEXT,NOOP,"no-op","result",SIGNATURE_STRUCTURE,TREE,0);
sP(SYS_CONTEXT,IF,"if","result",SIGNATURE_STRUCTURE,TREE,"condition",SIGNATURE_PROCESS,BOOLEAN,"then",SIGNATURE_STRUCTURE,TREE,"else",SIGNATURE_STRUCTURE,TREE,0);
sP(SYS_CONTEXT,IF,"if","result",SIGNATURE_PASSTHRU,NULL_STRUCTURE,"condition",SIGNATURE_PROCESS,BOOLEAN,"then",SIGNATURE_ANY,NULL_STRUCTURE,"else",SIGNATURE_OPTIONAL,SIGNATURE_ANY,NULL_STRUCTURE,0);
sP(SYS_CONTEXT,ADD_INT,"addition","sum",SIGNATURE_STRUCTURE,INTEGER,"augend",SIGNATURE_STRUCTURE,INTEGER,"addend",SIGNATURE_STRUCTURE,INTEGER,0);
sP(SYS_CONTEXT,SUB_INT,"subtract","difference",SIGNATURE_STRUCTURE,INTEGER,"minuend",SIGNATURE_STRUCTURE,INTEGER,"subtrahend",SIGNATURE_STRUCTURE,INTEGER,0);
sP(SYS_CONTEXT,MULT_INT,"multiply","product",SIGNATURE_STRUCTURE,INTEGER,"multiplicand",SIGNATURE_STRUCTURE,INTEGER,"multiplier",SIGNATURE_STRUCTURE,INTEGER,0);
Expand Down
26 changes: 22 additions & 4 deletions src/base_defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,14 @@ enum SYSSymbolIDs {
PROCESS_SIGNATURE_ID,
PROCESS_CODING_ID,
SIGNATURE_LABEL_ID,
SIGNATURE_TYPE_ID,
SIGNATURE_STRUCTURE_ID,
SIGNATURE_SYMBOL_ID,
SIGNATURE_PROCESS_ID,
SIGNATURE_PASSTHRU_ID,
SIGNATURE_ANY_ID,
SIGNATURE_OPTIONAL_ID,
SIGNATURE_OUTPUT_TYPE_ID,
SIGNATURE_INPUT_TYPE_ID,
INPUT_SIGNATURE_ID,
OUTPUT_SIGNATURE_ID,
RUN_TREE_ID,
Expand Down Expand Up @@ -254,10 +258,14 @@ enum SYSSymbolIDs {
#define PROCESS_SIGNATURE G_contexts[SYS_CONTEXT].symbols[PROCESS_SIGNATURE_ID]
#define PROCESS_CODING G_contexts[SYS_CONTEXT].symbols[PROCESS_CODING_ID]
#define SIGNATURE_LABEL G_contexts[SYS_CONTEXT].symbols[SIGNATURE_LABEL_ID]
#define SIGNATURE_TYPE G_contexts[SYS_CONTEXT].symbols[SIGNATURE_TYPE_ID]
#define SIGNATURE_STRUCTURE G_contexts[SYS_CONTEXT].symbols[SIGNATURE_STRUCTURE_ID]
#define SIGNATURE_SYMBOL G_contexts[SYS_CONTEXT].symbols[SIGNATURE_SYMBOL_ID]
#define SIGNATURE_PROCESS G_contexts[SYS_CONTEXT].symbols[SIGNATURE_PROCESS_ID]
#define SIGNATURE_PASSTHRU G_contexts[SYS_CONTEXT].symbols[SIGNATURE_PASSTHRU_ID]
#define SIGNATURE_ANY G_contexts[SYS_CONTEXT].symbols[SIGNATURE_ANY_ID]
#define SIGNATURE_OPTIONAL G_contexts[SYS_CONTEXT].symbols[SIGNATURE_OPTIONAL_ID]
#define SIGNATURE_OUTPUT_TYPE G_contexts[SYS_CONTEXT].symbols[SIGNATURE_OUTPUT_TYPE_ID]
#define SIGNATURE_INPUT_TYPE G_contexts[SYS_CONTEXT].symbols[SIGNATURE_INPUT_TYPE_ID]
#define INPUT_SIGNATURE G_contexts[SYS_CONTEXT].symbols[INPUT_SIGNATURE_ID]
#define OUTPUT_SIGNATURE G_contexts[SYS_CONTEXT].symbols[OUTPUT_SIGNATURE_ID]
#define RUN_TREE G_contexts[SYS_CONTEXT].symbols[RUN_TREE_ID]
Expand Down Expand Up @@ -381,7 +389,12 @@ enum SYSStructureIDs {
LIST_OF_RECEPTOR_ADDRESS_AND_RECEPTOR_ADDRESS_AND_ASPECT_AND_CARRIER_AND_SIGNAL_UUID_AND_BODY_ID,
LIST_OF_PROCESS_NAME_AND_PROCESS_INTENTION_AND_PROCESS_AND_PROCESS_SIGNATURE_ID,
ZERO_OR_MORE_OF_PROCESS_CODING_ID,
SIGNATURE_PART_ID,
ONE_OF_SIGNATURE_STRUCTURE_AND_SIGNATURE_SYMBOL_AND_SIGNATURE_PROCESS_AND_SIGNATURE_PASSTHRU_ID,
SIGNATURE_SEMANTIC_VARIANTS_ID,
TUPLE_OF_SIGNATURE_SEMANTIC_VARIANTS_AND_ZERO_OR_ONE_OF_SIGNATURE_OPTIONAL_ID,
TUPLE_OF_SIGNATURE_LABEL_AND_SIGNATURE_INPUT_TYPE_ID,
TUPLE_OF_SIGNATURE_LABEL_AND_SIGNATURE_OUTPUT_TYPE_ID,
TUPLE_OF_OUTPUT_SIGNATURE_AND_ZERO_OR_MORE_OF_INPUT_SIGNATURE_ID,
SEQUENCE_ID,
PROTOCOL_STEP_ID,
PROTOCOL_ID,
Expand Down Expand Up @@ -429,7 +442,12 @@ enum SYSStructureIDs {
#define LIST_OF_RECEPTOR_ADDRESS_AND_RECEPTOR_ADDRESS_AND_ASPECT_AND_CARRIER_AND_SIGNAL_UUID_AND_BODY G_contexts[SYS_CONTEXT].structures[LIST_OF_RECEPTOR_ADDRESS_AND_RECEPTOR_ADDRESS_AND_ASPECT_AND_CARRIER_AND_SIGNAL_UUID_AND_BODY_ID]
#define LIST_OF_PROCESS_NAME_AND_PROCESS_INTENTION_AND_PROCESS_AND_PROCESS_SIGNATURE G_contexts[SYS_CONTEXT].structures[LIST_OF_PROCESS_NAME_AND_PROCESS_INTENTION_AND_PROCESS_AND_PROCESS_SIGNATURE_ID]
#define ZERO_OR_MORE_OF_PROCESS_CODING G_contexts[SYS_CONTEXT].structures[ZERO_OR_MORE_OF_PROCESS_CODING_ID]
#define SIGNATURE_PART G_contexts[SYS_CONTEXT].structures[SIGNATURE_PART_ID]
#define ONE_OF_SIGNATURE_STRUCTURE_AND_SIGNATURE_SYMBOL_AND_SIGNATURE_PROCESS_AND_SIGNATURE_PASSTHRU G_contexts[SYS_CONTEXT].structures[ONE_OF_SIGNATURE_STRUCTURE_AND_SIGNATURE_SYMBOL_AND_SIGNATURE_PROCESS_AND_SIGNATURE_PASSTHRU_ID]
#define SIGNATURE_SEMANTIC_VARIANTS G_contexts[SYS_CONTEXT].structures[SIGNATURE_SEMANTIC_VARIANTS_ID]
#define TUPLE_OF_SIGNATURE_SEMANTIC_VARIANTS_AND_ZERO_OR_ONE_OF_SIGNATURE_OPTIONAL G_contexts[SYS_CONTEXT].structures[TUPLE_OF_SIGNATURE_SEMANTIC_VARIANTS_AND_ZERO_OR_ONE_OF_SIGNATURE_OPTIONAL_ID]
#define TUPLE_OF_SIGNATURE_LABEL_AND_SIGNATURE_INPUT_TYPE G_contexts[SYS_CONTEXT].structures[TUPLE_OF_SIGNATURE_LABEL_AND_SIGNATURE_INPUT_TYPE_ID]
#define TUPLE_OF_SIGNATURE_LABEL_AND_SIGNATURE_OUTPUT_TYPE G_contexts[SYS_CONTEXT].structures[TUPLE_OF_SIGNATURE_LABEL_AND_SIGNATURE_OUTPUT_TYPE_ID]
#define TUPLE_OF_OUTPUT_SIGNATURE_AND_ZERO_OR_MORE_OF_INPUT_SIGNATURE G_contexts[SYS_CONTEXT].structures[TUPLE_OF_OUTPUT_SIGNATURE_AND_ZERO_OR_MORE_OF_INPUT_SIGNATURE_ID]
#define SEQUENCE G_contexts[SYS_CONTEXT].structures[SEQUENCE_ID]
#define PROTOCOL_STEP G_contexts[SYS_CONTEXT].structures[PROTOCOL_STEP_ID]
#define PROTOCOL G_contexts[SYS_CONTEXT].structures[PROTOCOL_ID]
Expand Down
2 changes: 1 addition & 1 deletion src/base_defs.pl
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ sub makeName {
$n =~ s/sT_OR/LOGICAL_OR_OF_/g;
$n =~ s/sT_STAR/ZERO_OR_MORE_OF_/g;
$n =~ s/sT_PLUS/ONE_OR_MORE_OF_/g;
$n =~ s/sT_QMARK/ZERO_OR_ONE_OF_/g;
$n =~ s/sT_QMRK/ZERO_OR_ONE_OF_/g;
$n =~ s/[()]//g;
return &andify($n);
}
Expand Down
16 changes: 15 additions & 1 deletion src/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -1201,16 +1201,30 @@ T *__p_make_signature(char *output_label,Symbol output_type,SemanticID output_se
va_start(params,output_sem);
char *label;
Symbol type,value;
int optional;
T *signature = _t_new_root(PROCESS_SIGNATURE);
T *o = _t_newr(signature,OUTPUT_SIGNATURE);
_t_new_str(o,SIGNATURE_LABEL,output_label);
_t_news(o,output_type,output_sem);
if (semeq(output_type,SIGNATURE_PASSTHRU)) {
_t_newr(o,output_type);
}
else {
_t_news(o,output_type,output_sem);
}
while (label = va_arg(params,char*)) {
type = va_arg(params,Symbol);
if (semeq(type,SIGNATURE_OPTIONAL)) {
optional = 1;
type = va_arg(params,Symbol);
}
else {
optional = 0;
}
value = va_arg(params,Symbol);
T *i = _t_newr(signature,INPUT_SIGNATURE);
_t_new_str(i,SIGNATURE_LABEL,label);
_t_news(i,type,value);
if (optional) _t_newr(i,SIGNATURE_OPTIONAL);
}
va_end(params);
return signature;
Expand Down
2 changes: 1 addition & 1 deletion src/sys_defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ char * G_label;
#define sT_SEQ(...) sT_(STRUCTURE_SEQUENCE,__VA_ARGS__)
#define sT_STAR(...) sT_(STRUCTURE_ZERO_OR_MORE,1,__VA_ARGS__)
#define sT_PLUS(...) sT_(STRUCTURE_ONE_OR_MORE,1,__VA_ARGS__)
#define sT_QMARK(...) sT_(STRUCTURE_ZERO_OR_ONE,1,__VA_ARGS__)
#define sT_QMRK(...) sT_(STRUCTURE_ZERO_OR_ONE,1,__VA_ARGS__)
#define sT_SYM(sym) _t_news(0,STRUCTURE_SYMBOL,sym)
#define sT_OR(x,y) sT_(STRUCTURE_OR,2,x,y)

Expand Down
6 changes: 3 additions & 3 deletions web/html_1.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ "symbol":{ "context":0,"id":158 },"type":"TREE_DELTA","name":"TREE_DELTA_ADD","children":[
{ "symbol":{ "context":0,"id":155 },"type":"TREE_PATH","name":"TREE_DELTA_PATH","surface":""},
{ "symbol":{ "context":0,"id":156 },"type":"LIST","name":"TREE_DELTA_VALUE","children":[
{ "symbol":{ "context":0,"id":162 },"type":"TREE_DELTA","name":"TREE_DELTA_ADD","children":[
{ "symbol":{ "context":0,"id":159 },"type":"TREE_PATH","name":"TREE_DELTA_PATH","surface":""},
{ "symbol":{ "context":0,"id":160 },"type":"LIST","name":"TREE_DELTA_VALUE","children":[
{ "symbol":{ "context":255,"id":27 },"type":"CSTRING","name":"HTML_TOK_TAG_OPEN","surface":"html"}]}]}
6 changes: 3 additions & 3 deletions web/html_10.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ "symbol":{ "context":0,"id":158 },"type":"TREE_DELTA","name":"TREE_DELTA_ADD","children":[
{ "symbol":{ "context":0,"id":155 },"type":"TREE_PATH","name":"TREE_DELTA_PATH","surface":""},
{ "symbol":{ "context":0,"id":156 },"type":"LIST","name":"TREE_DELTA_VALUE","children":[
{ "symbol":{ "context":0,"id":162 },"type":"TREE_DELTA","name":"TREE_DELTA_ADD","children":[
{ "symbol":{ "context":0,"id":159 },"type":"TREE_PATH","name":"TREE_DELTA_PATH","surface":""},
{ "symbol":{ "context":0,"id":160 },"type":"LIST","name":"TREE_DELTA_VALUE","children":[
{ "symbol":{ "context":255,"id":28 },"type":"CSTRING","name":"HTML_TOK_TAG_CLOSE","surface":"div"}]}]}
6 changes: 3 additions & 3 deletions web/html_11.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ "symbol":{ "context":0,"id":158 },"type":"TREE_DELTA","name":"TREE_DELTA_ADD","children":[
{ "symbol":{ "context":0,"id":155 },"type":"TREE_PATH","name":"TREE_DELTA_PATH","surface":""},
{ "symbol":{ "context":0,"id":156 },"type":"LIST","name":"TREE_DELTA_VALUE","children":[
{ "symbol":{ "context":0,"id":162 },"type":"TREE_DELTA","name":"TREE_DELTA_ADD","children":[
{ "symbol":{ "context":0,"id":159 },"type":"TREE_PATH","name":"TREE_DELTA_PATH","surface":""},
{ "symbol":{ "context":0,"id":160 },"type":"LIST","name":"TREE_DELTA_VALUE","children":[
{ "symbol":{ "context":255,"id":28 },"type":"CSTRING","name":"HTML_TOK_TAG_CLOSE","surface":"body"}]}]}
6 changes: 3 additions & 3 deletions web/html_12.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ "symbol":{ "context":0,"id":158 },"type":"TREE_DELTA","name":"TREE_DELTA_ADD","children":[
{ "symbol":{ "context":0,"id":155 },"type":"TREE_PATH","name":"TREE_DELTA_PATH","surface":""},
{ "symbol":{ "context":0,"id":156 },"type":"LIST","name":"TREE_DELTA_VALUE","children":[
{ "symbol":{ "context":0,"id":162 },"type":"TREE_DELTA","name":"TREE_DELTA_ADD","children":[
{ "symbol":{ "context":0,"id":159 },"type":"TREE_PATH","name":"TREE_DELTA_PATH","surface":""},
{ "symbol":{ "context":0,"id":160 },"type":"LIST","name":"TREE_DELTA_VALUE","children":[
{ "symbol":{ "context":255,"id":28 },"type":"CSTRING","name":"HTML_TOK_TAG_CLOSE","surface":"html"}]}]}
Loading

0 comments on commit 3a6a92d

Please sign in to comment.