From 5a23ef275696d5f34b3aabd51e15aed2ef835f1f Mon Sep 17 00:00:00 2001 From: Scarlett Date: Wed, 16 Apr 2025 11:44:02 -0400 Subject: [PATCH] Fixed -tok, spacings in -st, and validation tests --- src/runner.c | 9 +- src/runner.h | 8 +- src/symbol_table.c | 120 ++++++++-------- src/symbol_table.h | 89 ++++++------ .../expected/sp2_carls_mistake.expected | 66 ++++----- .../expected/sp2_function_types.expected | 55 ++++---- .../expected/sp2_integer_binary_op.expected | 38 +++--- ...sp2_invalid_multiple_params_no_as.expected | 20 +++ .../expected/sp2_invalid_recop.expected | 37 ++--- .../expected/sp2_invalid_release.expected | 31 +++-- tests/sprint2/expected/sp2_library.expected | 75 +++++----- tests/sprint2/expected/sp2_llnode.expected | 128 +++++++++--------- tests/sprint2/expected/sp2_one_line.expected | 59 ++++---- .../sprint2/expected/sp2_presidence.expected | 36 +++-- tests/sprint2/expected/sp2_simple.expected | 28 ++-- .../expected/sp2_sp2_arrayargs.expected | 17 +++ .../sp2_valid_assignable_and_mem.expected | 39 +++--- .../expected/sp3_and_or_type_check.expected | 34 +++++ .../sp3_boolean_binary_op_typecheck.expected | 37 ++--- .../sp3_boolean_unary_op_typecheck.expected | 37 ++--- .../sp3_carls_second_mistake.expected | 37 ++--- .../sp3_integer_binary_op_typecheck.expected | 44 +++--- .../sp3_integer_unary_op_typecheck.expected | 37 ++--- .../expected/sp3_multiple_args.expected | 25 ++++ .../sp3_primitive_type_check.expected | 19 +++ .../expected/sp3_record_size_check.expected | 29 ++++ 26 files changed, 677 insertions(+), 477 deletions(-) create mode 100644 tests/sprint2/expected/sp2_invalid_multiple_params_no_as.expected create mode 100644 tests/sprint2/expected/sp2_sp2_arrayargs.expected create mode 100644 tests/sprint3/expected/sp3_and_or_type_check.expected create mode 100644 tests/sprint3/expected/sp3_multiple_args.expected create mode 100644 tests/sprint3/expected/sp3_primitive_type_check.expected create mode 100644 tests/sprint3/expected/sp3_record_size_check.expected diff --git a/src/runner.c b/src/runner.c index 03e1933..6915d29 100644 --- a/src/runner.c +++ b/src/runner.c @@ -111,6 +111,13 @@ int run(FILE *alpha) { yyin = alpha; yyparse(); + if (tok_flag != NULL) { + while (0 != (token = yylex())) { + // Don't delete me 🥺 + } + fclose(tok_flag); + } + if (st_flag != NULL) { print_symbol_table(top, st_flag); fclose(st_flag); @@ -136,8 +143,6 @@ int run(FILE *alpha) { fclose(cg_flag); } - //yyparse(); - if (yyin != NULL) { fclose(yyin); } diff --git a/src/runner.h b/src/runner.h index 0a878d9..3e71a7a 100644 --- a/src/runner.h +++ b/src/runner.h @@ -5,11 +5,11 @@ #define TOK_LEN 3 #define ST_LEN 2 #define TC_LEN 2 -#define HELP \ - "HELP:\n" \ +#define HELP \ + "HELP:\n" \ " How to run the alpha compiler:\n" \ - " ./alpha [options] program\n" \ - "Valid options:\n" \ + " ./alpha [options] program\n" \ + "Valid options:\n" \ " -tok output the token number, token, line number, and column number for each of the tokens to the .tok file\n" \ " -st output the symbol table for the program to the .st file\n" \ " -asc output the annotated source code for the program to the .asc file, including syntax errors\n" \ diff --git a/src/symbol_table.c b/src/symbol_table.c index cd44b40..c1d3946 100644 --- a/src/symbol_table.c +++ b/src/symbol_table.c @@ -92,9 +92,9 @@ int getNumArrDim(TableNode *definition) { "function. Invalid."); return -1; } - if(getAdInfoType(definition) != TYPE_ARRAY_TYPE){ + if (getAdInfoType(definition) != TYPE_ARRAY_TYPE) { printdebug( - "passed an invalid node to getNumArrDim. Seeing tag %d in getNumArrDim. Invalid.",getAdInfoType(definition)); + "passed an invalid node to getNumArrDim. Seeing tag %d in getNumArrDim. Invalid.", getAdInfoType(definition)); return -1; } return definition->additionalinfo->ArrayAdInfo->numofdimensions; @@ -114,9 +114,9 @@ TableNode *getArrType(TableNode *definition) { "function. Invalid."); return undefined; } - if(getAdInfoType(definition) != TYPE_ARRAY_TYPE){ + if (getAdInfoType(definition) != TYPE_ARRAY_TYPE) { printdebug( - "passed an invalid node to getArrType. Seeing tag %d. Invalid.",getAdInfoType(definition)); + "passed an invalid node to getArrType. Seeing tag %d. Invalid.", getAdInfoType(definition)); return undefined; } return definition->additionalinfo->ArrayAdInfo->typeofarray; @@ -138,25 +138,25 @@ AdInfo *CreateRecordInfo(int length, SymbolTable *recordScope) { // Perhaps this may not be needed since we need to iterate over all elements // anyways. -int getRecTotal(TableNode* node){ - if(node == NULL){ +int getRecTotal(TableNode *node) { + if (node == NULL) { printdebug( "passed a NULL node to getRecTotal. Invalid."); - return -1; + return -1; } - if(getAdInfoType(node) != TYPE_RECORD_TYPE){ + if (getAdInfoType(node) != TYPE_RECORD_TYPE) { printdebug( "passed an invalid node to getRecTotal. Invalid."); return -1; } - if(node->additionalinfo == NULL){ + if (node->additionalinfo == NULL) { printdebug( "node has NULL additionalinfo. Invalid."); return -1; } return node->additionalinfo->RecAdInfo->total_size; } -TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) { +TableNode *setRecOffsetInfo(SymbolTable *scope, TableNode *node) { if (node == NULL) { printdebug( "passed a NULL node to setRecOffsetInfo. Invalid."); @@ -167,51 +167,47 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) { "passed an NULL scope to setRecOffsetInfo. Invalid."); return undefined; } - if(getFirstEntry(scope) == NULL){ + if (getFirstEntry(scope) == NULL) { printdebug( "passed an empty scope to setRecOffsetInfo. Invalid."); return undefined; } - TableNode* this = getFirstEntry(scope); + TableNode *this = getFirstEntry(scope); int largest = 0; int k = getRecLength(node); int total_size = 0; int counter = 0; int *offsets = (int *)calloc(2 * k, sizeof(int)); - if(getAdInfoType(this) == TYPE_FUNCTION_DECLARATION){ + if (getAdInfoType(this) == TYPE_FUNCTION_DECLARATION) { offsets[counter] = 8; total_size = total_size + offsets[counter]; largest = 8; counter++; - } - else if((getAdInfoType(this) == TYPE_RECORD)){ + } else if ((getAdInfoType(this) == TYPE_RECORD)) { offsets[counter] = 8; printf("hitting record and adding to largest"); total_size = total_size + offsets[counter]; largest = offsets[counter]; counter++; - } - else if(getAdInfoType(this)==TYPE_PRIMITIVE){ + } else if (getAdInfoType(this) == TYPE_PRIMITIVE) { offsets[counter] = getPrimSize(getTypeEntry(this)); total_size = total_size + offsets[counter]; largest = offsets[counter]; counter++; - } - else if(getAdInfoType(this)==TYPE_ARRAY){ + } else if (getAdInfoType(this) == TYPE_ARRAY) { offsets[counter] = 8; total_size = total_size + offsets[counter]; largest = offsets[counter]; counter++; - } - else { + } else { printdebug( - "[TYPE CHECK] passed an invalid (first) parameter to a function definition. seeing %d. Type of entry is %s. Name attempted to pass is %s.",getAdInfoType(this),getType(this),getName(this)); + "[TYPE CHECK] passed an invalid (first) parameter to a function definition. seeing %d. Type of entry is %s. Name attempted to pass is %s.", getAdInfoType(this), getType(this), getName(this)); return undefined; } this = getNextEntry(this); - while(this != NULL){ - if(getAdInfoType(this) == TYPE_FUNCTION_DECLARATION){ + while (this != NULL) { + if (getAdInfoType(this) == TYPE_FUNCTION_DECLARATION) { int s = 8; if (s > largest) { largest = s; @@ -225,8 +221,7 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) { total_size = total_size + offsets[counter]; counter++; this = getNextEntry(this); - } - else if(getAdInfoType(this) == TYPE_ARRAY){ + } else if (getAdInfoType(this) == TYPE_ARRAY) { int s = 8; if (s > largest) { largest = s; @@ -240,8 +235,7 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) { total_size = total_size + offsets[counter]; counter++; this = getNextEntry(this); - } - else if((getAdInfoType(this) == TYPE_RECORD)){ + } else if ((getAdInfoType(this) == TYPE_RECORD)) { int s = 8; if (s > largest) { largest = s; @@ -257,8 +251,7 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) { total_size = total_size + offsets[counter]; counter++; this = getNextEntry(this); - } - else if(getAdInfoType(this) == TYPE_PRIMITIVE){ + } else if (getAdInfoType(this) == TYPE_PRIMITIVE) { int s = getPrimSize(getTypeEntry(this)); if (s > largest) { largest = s; @@ -272,9 +265,9 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) { total_size = total_size + offsets[counter]; counter++; this = getNextEntry(this); - }else{ + } else { printdebug( - "[TYPE CHECK] passed an invalid parameter at position %d in record.",((counter+1)/2)); + "[TYPE CHECK] passed an invalid parameter at position %d in record.", ((counter + 1) / 2)); return undefined; } } @@ -286,18 +279,18 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) { return node; } -int* getRecOffsets(TableNode* node){ - if(node == NULL){ +int *getRecOffsets(TableNode *node) { + if (node == NULL) { printdebug( "passed a NULL node to getRecTotal. Invalid."); - return NULL; + return NULL; } - if(getAdInfoType(node) != TYPE_RECORD_TYPE){ + if (getAdInfoType(node) != TYPE_RECORD_TYPE) { printdebug( "passed an invalid node to getRecTotal. Invalid."); return NULL; } - if(node->additionalinfo == NULL){ + if (node->additionalinfo == NULL) { printdebug( "node has NULL additionalinfo. Invalid."); return NULL; @@ -341,7 +334,8 @@ SymbolTable *getRecList(TableNode *definition) { if (strcmp(getType(definition), "record") != 0) { printdebug( "not checking the list of types of a record -- invalid " - "op of type %s", getType(definition)); + "op of type %s", + getType(definition)); return NULL; } return definition->additionalinfo->RecAdInfo->recordScope; @@ -521,7 +515,7 @@ TableNode *getParameter(TableNode *definition) { "function. Invalid."); return undefined; } - if(definition->additionalinfo == NULL){ + if (definition->additionalinfo == NULL) { printdebug( "node has NULL additionalinfo. Invalid."); return undefined; @@ -552,7 +546,7 @@ TableNode *getReturn(TableNode *definition) { "not checking the return of a function -- invalid op"); return undefined; } - if(definition->additionalinfo == NULL){ + if (definition->additionalinfo == NULL) { printdebug( "node has NULL additionalinfo. Invalid."); return undefined; @@ -605,10 +599,10 @@ SymbolTable *init(SymbolTable *start) { chara = (TableNode *)calloc(1, sizeof(TableNode)); stri = (TableNode *)calloc(1, sizeof(TableNode)); boo = (TableNode *)calloc(1, sizeof(TableNode)); - TableNode* reservetype = (TableNode *)calloc(1, sizeof(TableNode)); - TableNode* reserve = (TableNode *)calloc(1, sizeof(TableNode)); - TableNode* releasetype = (TableNode *)calloc(1, sizeof(TableNode)); - TableNode* release = (TableNode *)calloc(1, sizeof(TableNode)); + TableNode *reservetype = (TableNode *)calloc(1, sizeof(TableNode)); + TableNode *reserve = (TableNode *)calloc(1, sizeof(TableNode)); + TableNode *releasetype = (TableNode *)calloc(1, sizeof(TableNode)); + TableNode *release = (TableNode *)calloc(1, sizeof(TableNode)); // TableNode* arr = (TableNode*)malloc(sizeof(SymbolTable)); start->entries = integ; integ->next = addr; @@ -721,7 +715,7 @@ SymbolTable *init(SymbolTable *start) { integ->tag = TYPE_PRIMITIVE_TYPE; // explicitly set the type for integ addr->tag = TYPE_PRIMITIVE_TYPE; // explicitly set the type for addr chara->tag = TYPE_PRIMITIVE_TYPE; // explicitly set the type for chara - stri->tag = TYPE_ARRAY_TYPE; // explicitly set the type for stri + stri->tag = TYPE_ARRAY_TYPE; // explicitly set the type for stri boo->tag = TYPE_PRIMITIVE_TYPE; // explicitly set the type for boo reserve->tag = TYPE_FUNCTION_DECLARATION; reservetype->tag = TYPE_FUNCTION_TYPE; @@ -1064,7 +1058,7 @@ TableNode *table_lookup(SymbolTable *table, char *x) { // check current table and all parents TableNode *look_up(SymbolTable *table, char *x) { if (table == NULL) { - printdebug("Could not find %s in any scope using lookup",x); + printdebug("Could not find %s in any scope using lookup", x); return undefined; } TableNode *ret = table_lookup(table, x); @@ -1157,33 +1151,33 @@ void print_symbol_table(SymbolTable *table, FILE *file_ptr) { } } if (getAdInfoType(entry) == TYPE_ARRAY) { - char *arrayType = (char *)malloc(100); - //sprintf(arrayType, " %d -> %s", getNumArrDim(entry), - // getName(getArrType(entry))); - + char *arrayType = (char *)malloc(sizeof(getType(entry) + 1)); + sprintf(arrayType, " %s", getType(entry)); if (parentScopeNum == 0) { - st_fprint(file_ptr, getName(entry), currentScopeNum, -100, getType(entry), " Array Instance"); + st_fprint(file_ptr, getName(entry), currentScopeNum, -100, arrayType, " Array Instance"); } else { - st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, getType(entry), " Array Instance"); + st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, arrayType, " Array Instance"); } } if (getAdInfoType(entry) == TYPE_RECORD_TYPE) { char *recordAdInfo = (char *)malloc(100); sprintf(recordAdInfo, " elements-%d size-%d bytes", getRecLength(entry), getRecTotal(entry)); if (parentScopeNum == 0) { - st_fprint(file_ptr, getName(entry), currentScopeNum, -100, " record type", recordAdInfo); + st_fprint(file_ptr, getName(entry), currentScopeNum, -100, " Record Type", recordAdInfo); } else { - st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, " record type", recordAdInfo); + st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, " Record Type", recordAdInfo); } } if (getAdInfoType(entry) == TYPE_RECORD) { char *recordAdInfo = (char *)malloc(100); sprintf(recordAdInfo, " elements-%d", getRecLength(entry)); + char *recordType = (char *)malloc(sizeof(getType(entry) + 1)); + sprintf(recordType, " %s", getType(entry)); if (parentScopeNum == 0) { - st_fprint(file_ptr, getName(entry), currentScopeNum, -100, getType(entry), "record instance"); + st_fprint(file_ptr, getName(entry), currentScopeNum, -100, recordType, " Record Instance"); } else { - st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, getType(entry), "record instance"); + st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, recordType, " Record Instance"); } } @@ -1193,8 +1187,6 @@ void print_symbol_table(SymbolTable *table, FILE *file_ptr) { if (parentScopeNum == 0) { st_fprint(file_ptr, getName(entry), currentScopeNum, -100, " Primitive Type", primAdInfo); } else { - //printdebug("%sTHIS ONE", COLOR_RED); - printTableNode(entry); char *primType = (char *)malloc(sizeof(getType(entry) + 1)); sprintf(primType, " %s", getType(entry)); st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, primType, primAdInfo); @@ -1206,11 +1198,9 @@ void print_symbol_table(SymbolTable *table, FILE *file_ptr) { if (parentScopeNum == 0) { st_fprint(file_ptr, getName(entry), currentScopeNum, -100, " Primitive", primAdInfo); } else { - printdebug("%sTHIS ONE", COLOR_RED); - printTableNode(entry); char *primType = (char *)malloc(sizeof(getType(entry) + 1)); sprintf(primType, " %s", getType(entry)); - st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, getType(entry), "Primitive Instance"); + st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, primType, " Primitive Instance"); } } @@ -1226,10 +1216,12 @@ void print_symbol_table(SymbolTable *table, FILE *file_ptr) { } if (getAdInfoType(entry) == TYPE_FUNCTION_DECLARATION) { + char *functiontype = (char *)malloc(100); + sprintf(functiontype, " %s", getName(getReturn(entry))); if (parentScopeNum == 0) { - st_fprint(file_ptr, getName(entry), currentScopeNum, -100, getType(entry), " Function Definition"); + st_fprint(file_ptr, getName(entry), currentScopeNum, -100, functiontype, " Function Definition"); } else { - st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, getType(entry), " Function Definition"); + st_fprint(file_ptr, getName(entry), currentScopeNum, parentScopeNum, functiontype, " Function Definition"); } } @@ -1393,7 +1385,7 @@ TableNode *getNextEntry(TableNode *tn) { // Uses pointers to the table node to print the info TableNode *printTableNode(TableNode *tn) { if (DEBUG == 0) { - return tn; + return tn; } if (tn == NULL) { diff --git a/src/symbol_table.h b/src/symbol_table.h index 6a33974..01d4458 100644 --- a/src/symbol_table.h +++ b/src/symbol_table.h @@ -7,80 +7,79 @@ #define SIZE_INT 4 #define SIZE_ADDR 8 #define SIZE_CHAR 1 -#define SIZE_BOOL 4 //TODO: Ask Carl what this size should be - +#define SIZE_BOOL 4 //TODO: Ask Carl what this size should be struct TableNode; typedef struct { - int size; + int size; } primitive_info; typedef struct { - int numofdimensions; - struct TableNode *typeofarray; + int numofdimensions; + struct TableNode *typeofarray; } array_info; typedef struct { - int numofelements; - struct SymbolTable *recordScope; - int total_size; - int* offsets; + int numofelements; + struct SymbolTable *recordScope; + int total_size; + int *offsets; } record_info; typedef struct { - int startlinenumber; - bool regularoras; + int startlinenumber; + bool regularoras; } function_declaration_info; typedef struct { - struct TableNode *parameter; - struct TableNode *returntype; + struct TableNode *parameter; + struct TableNode *returntype; } function_type_info; typedef union { - primitive_info *PrimAdInfo; - array_info *ArrayAdInfo; - record_info *RecAdInfo; - function_declaration_info *FunDecAdInfo; - function_type_info *FunTypeAdInfo; + primitive_info *PrimAdInfo; + array_info *ArrayAdInfo; + record_info *RecAdInfo; + function_declaration_info *FunDecAdInfo; + function_type_info *FunTypeAdInfo; } AdInfo; typedef struct ListOfTable { - struct SymbolTable *table; - struct ListOfTable *next; + struct SymbolTable *table; + struct ListOfTable *next; } ListOfTable; //Table node to store typedef struct TableNode { - struct TableNode *theType; - int tag; - char *theName; - AdInfo *additionalinfo; - struct TableNode *next; + struct TableNode *theType; + int tag; + char *theName; + AdInfo *additionalinfo; + struct TableNode *next; } TableNode; typedef struct SymbolTable { - TableNode *entries; - struct SymbolTable *Parent_Scope; - struct ListOfTable *Children_Scope; - int Line_Number; - int Column_Number; + TableNode *entries; + struct SymbolTable *Parent_Scope; + struct ListOfTable *Children_Scope; + int Line_Number; + int Column_Number; } SymbolTable; typedef enum { - TYPE_STRING = 1, - TYPE_ARRAY_TYPE = 2, - TYPE_RECORD_TYPE = 3, - TYPE_FUNCTION_DECLARATION = 4, - TYPE_FUNCTION_TYPE = 5, - TYPE_PRIMITIVE = 6, - TYPE_ALL_ELSE = 7, - TYPE_UNDEFINED = 8, - TYPE_RECORD = 9, - TYPE_ARRAY = 10, - TYPE_SYSTEM_DEFINED = 11, - TYPE_PRIMITIVE_TYPE = 12 + TYPE_STRING = 1, + TYPE_ARRAY_TYPE = 2, + TYPE_RECORD_TYPE = 3, + TYPE_FUNCTION_DECLARATION = 4, + TYPE_FUNCTION_TYPE = 5, + TYPE_PRIMITIVE = 6, + TYPE_ALL_ELSE = 7, + TYPE_UNDEFINED = 8, + TYPE_RECORD = 9, + TYPE_ARRAY = 10, + TYPE_SYSTEM_DEFINED = 11, + TYPE_PRIMITIVE_TYPE = 12 } types; AdInfo *CreatePrimitiveInfo(int size); @@ -128,10 +127,10 @@ ListOfTable *getRestOfChildren(ListOfTable *lt); TableNode *getFirstEntry(SymbolTable *st); TableNode *getNextEntry(TableNode *tn); -TableNode * printTableNode(TableNode * tn); +TableNode *printTableNode(TableNode *tn); void printdebug_impl(char *file, int line, const char *format, ...); -#define printdebug(format, ...) \ - printdebug_impl(__FILE__, __LINE__, format, ##__VA_ARGS__) +#define printdebug(format, ...) \ + printdebug_impl(__FILE__, __LINE__, format, ##__VA_ARGS__) extern int yylex(void); extern char *yytext; diff --git a/tests/sprint2/expected/sp2_carls_mistake.expected b/tests/sprint2/expected/sp2_carls_mistake.expected index 23a8694..cee5d6f 100644 --- a/tests/sprint2/expected/sp2_carls_mistake.expected +++ b/tests/sprint2/expected/sp2_carls_mistake.expected @@ -1,31 +1,35 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -bar2 : 001001 : : T2 : User Defined -bar1 : 001001 : : T2 : User Defined -foo : 001001 : : T1 : User Defined -arr : 001001 : : 1 -> integer : Type of Array -T2 : 001001 : : primitive function type : User Defined -T1 : 001001 : : primitive function type : User Defined -rec : 001001 : : record : elements-2 -entry : 001001 : : main : User Defined -main : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -w : 026000 : 001001 : rec : User Defined -result : 026000 : 001001 : integer : User Defined -arg : 026000 : 001001 : string : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -r : 021000 : 001001 : integer : User Defined -s : 021000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -a : 017000 : 001001 : rec : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -x : 013000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -y : 004000 : 001001 : integer : User Defined -x : 004000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +bar2 : 001001 : : undefined : Function Definition +bar1 : 001001 : : undefined : Function Definition +foo : 001001 : : undefined : Function Definition +entry : 001001 : : undefined : Function Definition +main : 001001 : : string -> integer : Type of Function +arr : 001001 : : 1 -> integer : Type of Array +T2 : 001001 : : rec -> integer : Type of Function +T1 : 001001 : : integer -> integer : Type of Function +rec : 001001 : : Record Type : elements-2 size-8 bytes +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +w : 025000 : 001001 : rec : Record Instance +result : 025000 : 001001 : integer : Primitive Instance +arg : 025000 : 001001 : string : Array Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +r : 021000 : 001001 : integer : Primitive Instance +s : 021000 : 001001 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +x : 017000 : 001001 : integer : Primitive Instance +y : 017000 : 001001 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +x : 013000 : 001001 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 001000 : 001001 : integer : Primitive Instance +x : 001000 : 001001 : integer : Primitive Instance diff --git a/tests/sprint2/expected/sp2_function_types.expected b/tests/sprint2/expected/sp2_function_types.expected index bd1d2ce..391690b 100644 --- a/tests/sprint2/expected/sp2_function_types.expected +++ b/tests/sprint2/expected/sp2_function_types.expected @@ -1,26 +1,29 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -entry : 001001 : : string2integer : User Defined -integer2integer2integerFunc: 001001 : : integer2integer2integer : User Defined -released : 001001 : : address2integer : User Defined -reserved : 001001 : : integer2address : User Defined -printBoolean : 001001 : : Boolean2integer : User Defined -printCharacter : 001001 : : character2integer : User Defined -printInteger : 001001 : : integer2integer : User Defined -integer2integer2integer : 001001 : : primitive function type : User Defined -address2integer : 001001 : : primitive function type : User Defined -integer2address : 001001 : : primitive function type : User Defined -Boolean2Boolean2Boolean : 001001 : : primitive function type : User Defined -character2character2Boolean: 001001 : : primitive function type : User Defined -integer2integer2Boolean : 001001 : : primitive function type : User Defined -string2integer : 001001 : : primitive function type : User Defined -Boolean2integer : 001001 : : primitive function type : User Defined -character2integer : 001001 : : primitive function type : User Defined -integer2integer : 001001 : : primitive function type : User Defined -Boolean2Boolean : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +entry : 001001 : : undefined : Function Definition +integer2integer2integerFunc : 001001 : : undefined : Function Definition +released : 001001 : : undefined : Function Definition +reserved : 001001 : : undefined : Function Definition +printBoolean : 001001 : : undefined : Function Definition +printCharacter : 001001 : : undefined : Function Definition +printInteger : 001001 : : undefined : Function Definition +integer2integer2integer : 001001 : : integer2integer -> integer : Type of Function +address2integer : 001001 : : address -> integer : Type of Function +integer2address : 001001 : : integer -> address : Type of Function +Boolean2Boolean2Boolean : 001001 : : Boolean2Boolean -> Boolean : Type of Function +character2character2Boolean : 001001 : : undefined -> undefined : Type of Function +integer2integer2Boolean : 001001 : : integer2integer -> Boolean : Type of Function +string2integer : 001001 : : string -> integer : Type of Function +Boolean2integer : 001001 : : Boolean -> integer : Type of Function +character2integer : 001001 : : character -> integer : Type of Function +integer2integer : 001001 : : integer -> integer : Type of Function +Boolean2Boolean : 001001 : : Boolean -> Boolean : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition diff --git a/tests/sprint2/expected/sp2_integer_binary_op.expected b/tests/sprint2/expected/sp2_integer_binary_op.expected index 299c09d..d24c170 100644 --- a/tests/sprint2/expected/sp2_integer_binary_op.expected +++ b/tests/sprint2/expected/sp2_integer_binary_op.expected @@ -1,17 +1,21 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -entry : 001001 : : main : User Defined -main : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -b1 : 005000 : 001001 : Boolean : User Defined -b2 : 005000 : 001001 : Boolean : User Defined -arr2 : 005000 : 001001 : address : User Defined -arr : 005000 : 001001 : address : User Defined -x : 005000 : 001001 : integer : User Defined -arg : 005000 : 001001 : string : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +testarr : 001001 : : 1 -> integer : Type of Array +entry : 001001 : : undefined : Function Definition +main : 001001 : : string -> integer : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +b1 : 005000 : 001001 : Boolean : Primitive Instance +b2 : 005000 : 001001 : Boolean : Primitive Instance +arr2 : 005000 : 001001 : testarr : Array Instance +arr : 005000 : 001001 : testarr : Array Instance +x : 005000 : 001001 : integer : Primitive Instance +arg : 005000 : 001001 : string : Array Instance diff --git a/tests/sprint2/expected/sp2_invalid_multiple_params_no_as.expected b/tests/sprint2/expected/sp2_invalid_multiple_params_no_as.expected new file mode 100644 index 0000000..509c6eb --- /dev/null +++ b/tests/sprint2/expected/sp2_invalid_multiple_params_no_as.expected @@ -0,0 +1,20 @@ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +test : 001001 : : undefined : Function Definition +main : 001001 : : rec -> integer : Type of Function +rec : 001001 : : Record Type : elements-2 size-8 bytes +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +arg : 005000 : 001001 : integer : Primitive Instance +arg2 : 005000 : 001001 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 001000 : 001001 : integer : Primitive Instance +x : 001000 : 001001 : integer : Primitive Instance diff --git a/tests/sprint2/expected/sp2_invalid_recop.expected b/tests/sprint2/expected/sp2_invalid_recop.expected index 5274102..642ad85 100644 --- a/tests/sprint2/expected/sp2_invalid_recop.expected +++ b/tests/sprint2/expected/sp2_invalid_recop.expected @@ -1,17 +1,20 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -rec : 001001 : : record : elements-2 -entry : 001001 : : main : User Defined -main : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -w : 007000 : 001001 : rec : User Defined -arg : 007000 : 001001 : string : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -y : 004000 : 001001 : integer : User Defined -x : 004000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +rec : 001001 : : Record Type : elements-2 size-8 bytes +entry : 001001 : : undefined : Function Definition +main : 001001 : : string -> integer : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +w : 006000 : 001001 : rec : Record Instance +arg : 006000 : 001001 : string : Array Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 004000 : 001001 : integer : Primitive Instance +x : 004000 : 001001 : integer : Primitive Instance diff --git a/tests/sprint2/expected/sp2_invalid_release.expected b/tests/sprint2/expected/sp2_invalid_release.expected index de26852..1ac0274 100644 --- a/tests/sprint2/expected/sp2_invalid_release.expected +++ b/tests/sprint2/expected/sp2_invalid_release.expected @@ -1,14 +1,17 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -rec : 001001 : : record : elements-2 -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -w : 004000 : 001001 : rec : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -y : 001000 : 001001 : integer : User Defined -x : 001000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +rec : 001001 : : Record Type : elements-2 size-8 bytes +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +w : 003000 : 001001 : rec : Record Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 001000 : 001001 : integer : Primitive Instance +x : 001000 : 001001 : integer : Primitive Instance diff --git a/tests/sprint2/expected/sp2_library.expected b/tests/sprint2/expected/sp2_library.expected index a1318bd..80a9611 100644 --- a/tests/sprint2/expected/sp2_library.expected +++ b/tests/sprint2/expected/sp2_library.expected @@ -1,36 +1,39 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -entry : 001001 : : string2integer : User Defined -printBoolean : 001001 : : Boolean2integer : User Defined -printCharacter : 001001 : : character2integer : User Defined -printInteger : 001001 : : integer2integer : User Defined -address2integer : 001001 : : primitive function type : User Defined -integer2address : 001001 : : primitive function type : User Defined -BooleanXBoolean2Boolean : 001001 : : primitive function type : User Defined -characterXcharacter2Boolean: 001001 : : primitive function type : User Defined -integerXinteger2Boolean : 001001 : : primitive function type : User Defined -integerXinteger2integer : 001001 : : primitive function type : User Defined -string2integer : 001001 : : primitive function type : User Defined -Boolean2integer : 001001 : : primitive function type : User Defined -character2integer : 001001 : : primitive function type : User Defined -integer2integer : 001001 : : primitive function type : User Defined -Boolean2Boolean : 001001 : : primitive function type : User Defined -integerXinteger : 001001 : : record : elements-2 -characterXcharacter : 001001 : : record : elements-2 -BooleanXBoolean : 001001 : : record : elements-2 -string : 001001 : : 1 -> character : Type of Array -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -y : 015000 : 001001 : integer : User Defined -x : 015000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -y : 014000 : 001001 : character : User Defined -x : 014000 : 001001 : character : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -y : 013000 : 001001 : Boolean : User Defined -x : 013000 : 001001 : Boolean : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +entry : 001001 : : undefined : Function Definition +printBoolean : 001001 : : undefined : Function Definition +printCharacter : 001001 : : undefined : Function Definition +printInteger : 001001 : : undefined : Function Definition +address2integer : 001001 : : address -> integer : Type of Function +integer2address : 001001 : : integer -> address : Type of Function +BooleanXBoolean2Boolean : 001001 : : BooleanXBoolean -> Boolean : Type of Function +characterXcharacter2Boolean : 001001 : : characterXcharacter -> Boolean : Type of Function +integerXinteger2Boolean : 001001 : : integerXinteger -> Boolean : Type of Function +integerXinteger2integer : 001001 : : integerXinteger -> integer : Type of Function +string2integer : 001001 : : string -> integer : Type of Function +Boolean2integer : 001001 : : Boolean -> integer : Type of Function +character2integer : 001001 : : character -> integer : Type of Function +integer2integer : 001001 : : integer -> integer : Type of Function +Boolean2Boolean : 001001 : : Boolean -> Boolean : Type of Function +integerXinteger : 001001 : : Record Type : elements-2 size-8 bytes +characterXcharacter : 001001 : : Record Type : elements-2 size-2 bytes +BooleanXBoolean : 001001 : : Record Type : elements-2 size-8 bytes +string : 001001 : : 1 -> character : Type of Array +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 015000 : 001001 : integer : Primitive Instance +x : 015000 : 001001 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 014000 : 001001 : character : Primitive Instance +x : 014000 : 001001 : character : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 013000 : 001001 : Boolean : Primitive Instance +x : 013000 : 001001 : Boolean : Primitive Instance diff --git a/tests/sprint2/expected/sp2_llnode.expected b/tests/sprint2/expected/sp2_llnode.expected index dfe8d53..ab13e6f 100644 --- a/tests/sprint2/expected/sp2_llnode.expected +++ b/tests/sprint2/expected/sp2_llnode.expected @@ -1,62 +1,66 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -make_list : 001001 : : list : User Defined -bar2 : 001001 : : T2 : User Defined -bar1 : 001001 : : T2 : User Defined -foo : 001001 : : T1 : User Defined -list : 001001 : : primitive function type : User Defined -llnode : 001001 : : record : elements-3 -T2 : 001001 : : primitive function type : User Defined -T1 : 001001 : : primitive function type : User Defined -rec : 001001 : : record : elements-2 -entry : 001001 : : main : User Defined -main : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -li : 070000 : 001001 : llnode : User Defined -w : 070000 : 001001 : rec : User Defined -result : 070000 : 001001 : integer : User Defined -arg : 070000 : 001001 : string : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -r : 054000 : 001001 : integer : User Defined -s : 054000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -x : 060009 : 054000 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ - : 062028 : 060009 : : Empty Scope --------------------------:--------:--------:--------------------------:------------------------------ - : 055021 : 054000 : : Empty Scope --------------------------:--------:--------:--------------------------:------------------------------ - : 056026 : 055021 : : Empty Scope --------------------------:--------:--------:--------------------------:------------------------------ -a : 050000 : 001001 : rec : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -x : 046000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -temp : 017000 : 001001 : address : User Defined -curr : 017000 : 001001 : address : User Defined -ret : 017000 : 001001 : address : User Defined -orig_a : 017000 : 001001 : integer : User Defined -a : 017000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ - : 021012 : 017000 : : Empty Scope --------------------------:--------:--------:--------------------------:------------------------------ - : 026023 : 021012 : : Empty Scope --------------------------:--------:--------:--------------------------:------------------------------ - : 035020 : 026023 : : Empty Scope --------------------------:--------:--------:--------------------------:------------------------------ - : 031034 : 026023 : : Empty Scope --------------------------:--------:--------:--------------------------:------------------------------ - : 019029 : 017000 : : Empty Scope --------------------------:--------:--------:--------------------------:------------------------------ -next : 008000 : 001001 : llnode : User Defined -val : 008000 : 001001 : integer : User Defined -prev : 008000 : 001001 : llnode : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -y : 004000 : 001001 : integer : User Defined -x : 004000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +make_list : 001001 : : undefined : Function Definition +bar2 : 001001 : : undefined : Function Definition +bar1 : 001001 : : undefined : Function Definition +foo : 001001 : : undefined : Function Definition +list : 001001 : : integer -> llnode : Type of Function +llnode : 001001 : : Record Type : elements-3 size-24 bytes +T2 : 001001 : : rec -> integer : Type of Function +T1 : 001001 : : integer -> integer : Type of Function +rec : 001001 : : Record Type : elements-2 size-8 bytes +entry : 001001 : : undefined : Function Definition +main : 001001 : : string -> integer : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +li : 069000 : 001001 : llnode : Record Instance +w : 069000 : 001001 : rec : Record Instance +result : 069000 : 001001 : integer : Primitive Instance +arg : 069000 : 001001 : string : Array Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +r : 054000 : 001001 : integer : Primitive Instance +s : 054000 : 001001 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +x : 059012 : 054000 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 062028 : 059012 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 055021 : 054000 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 056026 : 055021 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +a : 050000 : 001001 : integer : Primitive Instance +b : 050000 : 001001 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +x : 046000 : 001001 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +temp : 016000 : 001001 : address : Primitive Instance +curr : 016000 : 001001 : address : Primitive Instance +ret : 016000 : 001001 : address : Primitive Instance +orig_a : 016000 : 001001 : integer : Primitive Instance +a : 016000 : 001001 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 021012 : 016000 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 026023 : 021012 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 035020 : 026023 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 031034 : 026023 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 019029 : 016000 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +next : 008000 : 001001 : llnode : Record Instance +val : 008000 : 001001 : integer : Primitive Instance +prev : 008000 : 001001 : llnode : Record Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 004000 : 001001 : integer : Primitive Instance +x : 004000 : 001001 : integer : Primitive Instance diff --git a/tests/sprint2/expected/sp2_one_line.expected b/tests/sprint2/expected/sp2_one_line.expected index 8dde170..dcdd20a 100644 --- a/tests/sprint2/expected/sp2_one_line.expected +++ b/tests/sprint2/expected/sp2_one_line.expected @@ -1,30 +1,29 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -bar2 : 001001 : : T2 : User Defined -bar1 : 001001 : : T2 : User Defined -foo : 001001 : : T1 : User Defined -T2 : 001001 : : primitive function type : User Defined -T1 : 001001 : : primitive function type : User Defined -rec : 001001 : : record : elements-2 -entry : 001001 : : main : User Defined -main : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -w : 001000 : 001001 : rec : User Defined -result : 001000 : 001001 : integer : User Defined -arg : 001000 : 001001 : string : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -r : 001000 : 001001 : integer : User Defined -s : 001000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -a : 001000 : 001001 : rec : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -x : 001000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -y : 001000 : 001001 : integer : User Defined -x : 001000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +bar2 : 001001 : : undefined : Function Definition +bar1 : 001001 : : undefined : Function Definition +foo : 001001 : : undefined : Function Definition +T2 : 001001 : : rec -> integer : Type of Function +T1 : 001001 : : integer -> integer : Type of Function +rec : 001001 : : Record Type : elements-2 size-8 bytes +entry : 001001 : : undefined : Function Definition +main : 001001 : : string -> integer : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 000000 : 001001 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +a : 001000 : 001001 : integer : Primitive Instance +undefined : 001000 : 001001 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +x : 001000 : 001001 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 001000 : 001001 : integer : Primitive Instance +x : 001000 : 001001 : integer : Primitive Instance diff --git a/tests/sprint2/expected/sp2_presidence.expected b/tests/sprint2/expected/sp2_presidence.expected index 70d9f83..80d2312 100644 --- a/tests/sprint2/expected/sp2_presidence.expected +++ b/tests/sprint2/expected/sp2_presidence.expected @@ -1,13 +1,23 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -entry : 001001 : : main : User Defined -main : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -x : 005000 : 001001 : integer : User Defined -arg : 005000 : 001001 : string : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +entry : 001001 : : undefined : Function Definition +rec : 001001 : : Record Type : elements-2 size-8 bytes +main : 001001 : : string -> integer : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +arg_bool : 006000 : 001001 : Boolean : Primitive Instance +arg_record : 006000 : 001001 : rec : Record Instance +arg_y : 006000 : 001001 : integer : Primitive Instance +arg_x : 006000 : 001001 : integer : Primitive Instance +arg : 006000 : 001001 : string : Array Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +rec_y : 002000 : 001001 : integer : Primitive Instance +rec_x : 002000 : 001001 : integer : Primitive Instance diff --git a/tests/sprint2/expected/sp2_simple.expected b/tests/sprint2/expected/sp2_simple.expected index 8d55a97..649bea7 100644 --- a/tests/sprint2/expected/sp2_simple.expected +++ b/tests/sprint2/expected/sp2_simple.expected @@ -1,12 +1,16 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -entry : 001001 : : main : User Defined -main : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -arg : 005000 : 001001 : string : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +entry : 001001 : : undefined : Function Definition +main : 001001 : : string -> integer : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +x : 004000 : 001001 : integer : Primitive Instance +arg : 004000 : 001001 : string : Array Instance diff --git a/tests/sprint2/expected/sp2_sp2_arrayargs.expected b/tests/sprint2/expected/sp2_sp2_arrayargs.expected new file mode 100644 index 0000000..0db9d5a --- /dev/null +++ b/tests/sprint2/expected/sp2_sp2_arrayargs.expected @@ -0,0 +1,17 @@ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +a_of_s : 001001 : : 1 -> string : Type of Array +string : 001001 : : 1 -> character : Type of Array +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +many_names : 006000 : 001001 : a_of_s : Array Instance +another_name : 006000 : 001001 : string : Array Instance +one_name : 006000 : 001001 : string : Array Instance diff --git a/tests/sprint2/expected/sp2_valid_assignable_and_mem.expected b/tests/sprint2/expected/sp2_valid_assignable_and_mem.expected index ab5cb2a..aa4b733 100644 --- a/tests/sprint2/expected/sp2_valid_assignable_and_mem.expected +++ b/tests/sprint2/expected/sp2_valid_assignable_and_mem.expected @@ -1,18 +1,21 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -T2 : 001001 : : primitive function type : User Defined -rec : 001001 : : record : elements-2 -entry : 001001 : : main : User Defined -main : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -w : 008000 : 001001 : rec : User Defined -arg : 008000 : 001001 : string : User Defined --------------------------:--------:--------:--------------------------:------------------------------ -y : 004000 : 001001 : integer : User Defined -x : 004000 : 001001 : integer : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +T2 : 001001 : : rec -> integer : Type of Function +rec : 001001 : : Record Type : elements-2 size-8 bytes +entry : 001001 : : undefined : Function Definition +main : 001001 : : string -> integer : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +w : 007000 : 001001 : rec : Record Instance +arg : 007000 : 001001 : string : Array Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 004000 : 001001 : integer : Primitive Instance +x : 004000 : 001001 : integer : Primitive Instance diff --git a/tests/sprint3/expected/sp3_and_or_type_check.expected b/tests/sprint3/expected/sp3_and_or_type_check.expected new file mode 100644 index 0000000..600a1f9 --- /dev/null +++ b/tests/sprint3/expected/sp3_and_or_type_check.expected @@ -0,0 +1,34 @@ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +test : 001001 : : undefined : Function Definition +main : 001001 : : rec -> integer : Type of Function +rec : 001001 : : Record Type : elements-2 size-8 bytes +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +b : 005000 : 001001 : Boolean : Primitive Instance +x : 005000 : 001001 : integer : Primitive Instance +arg : 005000 : 001001 : integer : Primitive Instance +undefined : 005000 : 001001 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 023009 : 005000 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 021014 : 005000 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 017009 : 005000 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 015017 : 005000 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 011012 : 005000 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 007015 : 005000 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 001000 : 001001 : integer : Primitive Instance +x : 001000 : 001001 : integer : Primitive Instance diff --git a/tests/sprint3/expected/sp3_boolean_binary_op_typecheck.expected b/tests/sprint3/expected/sp3_boolean_binary_op_typecheck.expected index 299c09d..1653f88 100644 --- a/tests/sprint3/expected/sp3_boolean_binary_op_typecheck.expected +++ b/tests/sprint3/expected/sp3_boolean_binary_op_typecheck.expected @@ -1,17 +1,20 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -entry : 001001 : : main : User Defined -main : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -b1 : 005000 : 001001 : Boolean : User Defined -b2 : 005000 : 001001 : Boolean : User Defined -arr2 : 005000 : 001001 : address : User Defined -arr : 005000 : 001001 : address : User Defined -x : 005000 : 001001 : integer : User Defined -arg : 005000 : 001001 : string : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +entry : 001001 : : undefined : Function Definition +main : 001001 : : string -> integer : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +b1 : 004000 : 001001 : Boolean : Primitive Instance +b2 : 004000 : 001001 : Boolean : Primitive Instance +arr2 : 004000 : 001001 : address : Primitive Instance +arr : 004000 : 001001 : address : Primitive Instance +x : 004000 : 001001 : integer : Primitive Instance +arg : 004000 : 001001 : string : Array Instance diff --git a/tests/sprint3/expected/sp3_boolean_unary_op_typecheck.expected b/tests/sprint3/expected/sp3_boolean_unary_op_typecheck.expected index 299c09d..1653f88 100644 --- a/tests/sprint3/expected/sp3_boolean_unary_op_typecheck.expected +++ b/tests/sprint3/expected/sp3_boolean_unary_op_typecheck.expected @@ -1,17 +1,20 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -entry : 001001 : : main : User Defined -main : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -b1 : 005000 : 001001 : Boolean : User Defined -b2 : 005000 : 001001 : Boolean : User Defined -arr2 : 005000 : 001001 : address : User Defined -arr : 005000 : 001001 : address : User Defined -x : 005000 : 001001 : integer : User Defined -arg : 005000 : 001001 : string : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +entry : 001001 : : undefined : Function Definition +main : 001001 : : string -> integer : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +b1 : 004000 : 001001 : Boolean : Primitive Instance +b2 : 004000 : 001001 : Boolean : Primitive Instance +arr2 : 004000 : 001001 : address : Primitive Instance +arr : 004000 : 001001 : address : Primitive Instance +x : 004000 : 001001 : integer : Primitive Instance +arg : 004000 : 001001 : string : Array Instance diff --git a/tests/sprint3/expected/sp3_carls_second_mistake.expected b/tests/sprint3/expected/sp3_carls_second_mistake.expected index 5d0682f..6f509e0 100644 --- a/tests/sprint3/expected/sp3_carls_second_mistake.expected +++ b/tests/sprint3/expected/sp3_carls_second_mistake.expected @@ -1,17 +1,20 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -a_of_s : 001001 : : 1 -> string : Type of Array -string : 001001 : : 1 -> character : Type of Array -entry : 001001 : : main : User Defined -main : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -many_names : 010000 : 001001 : a_of_s : User Defined -another_name : 010000 : 001001 : string : User Defined -one_name : 010000 : 001001 : string : User Defined -arg : 010000 : 001001 : string : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +a_of_s : 001001 : : 1 -> string : Type of Array +string : 001001 : : 1 -> character : Type of Array +entry : 001001 : : undefined : Function Definition +main : 001001 : : string -> integer : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +many_names : 009000 : 001001 : a_of_s : Array Instance +another_name : 009000 : 001001 : string : Array Instance +one_name : 009000 : 001001 : string : Array Instance +arg : 009000 : 001001 : string : Array Instance diff --git a/tests/sprint3/expected/sp3_integer_binary_op_typecheck.expected b/tests/sprint3/expected/sp3_integer_binary_op_typecheck.expected index a183cf5..8344120 100644 --- a/tests/sprint3/expected/sp3_integer_binary_op_typecheck.expected +++ b/tests/sprint3/expected/sp3_integer_binary_op_typecheck.expected @@ -1,18 +1,26 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -entry : 001001 : : main : User Defined -main : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -a : 005000 : 001001 : character : User Defined -b1 : 005000 : 001001 : Boolean : User Defined -b2 : 005000 : 001001 : Boolean : User Defined -arr2 : 005000 : 001001 : address : User Defined -arr : 005000 : 001001 : address : User Defined -x : 005000 : 001001 : integer : User Defined -arg : 005000 : 001001 : string : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +entry : 001001 : : undefined : Function Definition +rec : 001001 : : Record Type : elements-2 size-8 bytes +main : 001001 : : string -> integer : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +r : 006000 : 001001 : rec : Record Instance +a : 006000 : 001001 : character : Primitive Instance +b1 : 006000 : 001001 : Boolean : Primitive Instance +b2 : 006000 : 001001 : Boolean : Primitive Instance +arr2 : 006000 : 001001 : address : Primitive Instance +arr : 006000 : 001001 : address : Primitive Instance +x : 006000 : 001001 : integer : Primitive Instance +arg : 006000 : 001001 : string : Array Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 003000 : 001001 : integer : Primitive Instance +x : 003000 : 001001 : integer : Primitive Instance diff --git a/tests/sprint3/expected/sp3_integer_unary_op_typecheck.expected b/tests/sprint3/expected/sp3_integer_unary_op_typecheck.expected index 299c09d..1653f88 100644 --- a/tests/sprint3/expected/sp3_integer_unary_op_typecheck.expected +++ b/tests/sprint3/expected/sp3_integer_unary_op_typecheck.expected @@ -1,17 +1,20 @@ -NAME : SCOPE : PARENT : TYPE : Extra annotation --------------------------:--------:--------:--------------------------:------------------------------ -entry : 001001 : : main : User Defined -main : 001001 : : primitive function type : User Defined -integer : 001001 : : Primitive : size-4 bytes -address : 001001 : : Primitive : size-8 bytes -character : 001001 : : Primitive : size-1 bytes -string : 001001 : : 1 -> character : Type of Array -Boolean : 001001 : : Primitive : size-1 bytes --------------------------:--------:--------:--------------------------:------------------------------ -b1 : 005000 : 001001 : Boolean : User Defined -b2 : 005000 : 001001 : Boolean : User Defined -arr2 : 005000 : 001001 : address : User Defined -arr : 005000 : 001001 : address : User Defined -x : 005000 : 001001 : integer : User Defined -arg : 005000 : 001001 : string : User Defined --------------------------:--------:--------:--------------------------:------------------------------ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +entry : 001001 : : undefined : Function Definition +main : 001001 : : string -> integer : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +b1 : 004000 : 001001 : Boolean : Primitive Instance +b2 : 004000 : 001001 : Boolean : Primitive Instance +arr2 : 004000 : 001001 : address : Primitive Instance +arr : 004000 : 001001 : address : Primitive Instance +x : 004000 : 001001 : integer : Primitive Instance +arg : 004000 : 001001 : string : Array Instance diff --git a/tests/sprint3/expected/sp3_multiple_args.expected b/tests/sprint3/expected/sp3_multiple_args.expected new file mode 100644 index 0000000..c0128e1 --- /dev/null +++ b/tests/sprint3/expected/sp3_multiple_args.expected @@ -0,0 +1,25 @@ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +bar : 001001 : : undefined : Function Definition +entry : 001001 : : undefined : Function Definition +main : 001001 : : string -> integer : Type of Function +T2 : 001001 : : rec -> integer : Type of Function +rec : 001001 : : Record Type : elements-2 size-6 bytes +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +w : 013000 : 001001 : rec : Record Instance +result : 013000 : 001001 : integer : Primitive Instance +arg : 013000 : 001001 : string : Array Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: + : 009000 : 001001 : : Empty Scope +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 001000 : 001001 : integer : Primitive Instance +x : 001000 : 001001 : character : Primitive Instance diff --git a/tests/sprint3/expected/sp3_primitive_type_check.expected b/tests/sprint3/expected/sp3_primitive_type_check.expected new file mode 100644 index 0000000..0a57752 --- /dev/null +++ b/tests/sprint3/expected/sp3_primitive_type_check.expected @@ -0,0 +1,19 @@ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +entry : 001001 : : undefined : Function Definition +main : 001001 : : string -> integer : Type of Function +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +bool : 015000 : 001001 : Boolean : Primitive Instance +char : 015000 : 001001 : character : Primitive Instance +add : 015000 : 001001 : address : Primitive Instance +i : 015000 : 001001 : integer : Primitive Instance +arg : 015000 : 001001 : string : Array Instance diff --git a/tests/sprint3/expected/sp3_record_size_check.expected b/tests/sprint3/expected/sp3_record_size_check.expected new file mode 100644 index 0000000..a061979 --- /dev/null +++ b/tests/sprint3/expected/sp3_record_size_check.expected @@ -0,0 +1,29 @@ +NAME : SCOPE : PARENT : TYPE : EXTRA ANNOTATION : +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +tricky : 001001 : : Record Type : elements-4 size-16 bytes +rec : 001001 : : Record Type : elements-6 size-24 bytes +tom : 001001 : : Record Type : elements-2 size-8 bytes +integer : 001001 : : Primitive Type : size-4 bytes +address : 001001 : : Primitive Type : size-8 bytes +character : 001001 : : Primitive Type : size-1 bytes +string : 001001 : : 1 -> character : Type of Array +Boolean : 001001 : : Primitive Type : size-4 bytes +reserve type : 001001 : : integer -> address : Type of Function +reserve : 001001 : : undefined : Function Definition +release type : 001001 : : address -> integer : Type of Function +release : 001001 : : undefined : Function Definition +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +k2 : 003000 : 001001 : integer : Primitive Instance +b2 : 003000 : 001001 : Boolean : Primitive Instance +k1 : 003000 : 001001 : integer : Primitive Instance +b1 : 003000 : 001001 : Boolean : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 002000 : 001001 : integer : Primitive Instance +b : 002000 : 001001 : Boolean : Primitive Instance +d : 002000 : 001001 : character : Primitive Instance +c : 002000 : 001001 : character : Primitive Instance +prev : 002000 : 001001 : tom : Record Instance +x : 002000 : 001001 : integer : Primitive Instance +------------------------------:--------:--------:-----------------------------------:-----------------------------------: +y : 001000 : 001001 : integer : Primitive Instance +x : 001000 : 001001 : integer : Primitive Instance