IF I WASN'T BANNED
THE USUAL WAY FOR DEALING WITH TYPES IS TO KEEP IT AT THE SYNTAX TREE LEVEL. FOR INSTANCE, THE TYPE OF THE LITERAL ``3'', IS
INTEGER. THE TYPE OF THE LITERAL ``7'', IS ALSO
INTEGER. THE PLUS NODE, ``+'' HAS TYPE INTEGER WHEN ITS ARGUMENTS ARE INTEGERS. OR IT HAS TYPE FLOAT WHEN ITS ARGUMENTS ARE FLOATS. IT DEPENDS ON THE LANGUAGE HOW EXACTLY YOU WANT TO HANDLE ALL OF THIS, BUT IF YOU WORK ON THE TREE LEVEL, THE INFORMATION THAT YOU WANT SHOULD BE AVAILABLE TO YOU.
THE LEAVES OF THE SYNTAX TREE ARE WHERE YOU START. GET THOSE TYPES FIRST. CONSTANTS HAVE INTRINSIC TYPES, SO THOSE ARE EASY. FOR VARIABLES, YOU SHOULD LOCATE TEH VARIABLE DECLARATION FOR THE CURRENT SCOPE. IF YOU HAVE NESTED SCOPES, YOU MAY HAVE TO REPRESENT THE SCOPE STRUCTURE WITH A STACK OF HASH TABLES OF VARIABLE DEFINITIONS, OR SOMETHING TO THAT EFFECT. JUST DO A LINEAR SEARCH FROM THE INNER MOST SCOPE TO THE OUTER MOST FOR A DEFINITION. ONCE THE VARIABLE HAS BEEN BOUND TO A DEFINITION, YOU ARE SET FOR THE NEXT PHASE.
IF YOUR LANGUAGE REQUIRES ALL VARIABLE DECLARATIONS TO HAVE A TYPE, THEN YOU CAN EXTRACT THE TYPE FOR THE VARIABLE BY GETTING IT FROM THE VARIABLE'S DEFINITION. IF YOU'RE LANGUAGE USES TYPE INFERENCE, THEN IT'S HARDER. YOU WILL HAVE TO LOOK AT ALL INSTANCES IN THE SYNTAX TREE WHERE THE VARIABLE IS REFERENCED, AND SEE HOW IT IS USED. EACH TIME IT IS USED, THERE WILL BE CONSTRAINTS PLACED ON WHAT ITS TYPE MUST BE. THE TYPE OF THE VARIABLE CAN BE CONSTRUCTED BY UNIFYING THESE CONSTRAINTS.
IF YOU ARE CREATING A DYNAMIC LANGUAGE, YOU DON'T REALLY NEED TO CARE TOO MUCH ABOUT ANY OF THIS. ONCE THE RUN TIME SYSTEM IS COMPLETE, YOU DON'T REALLY CARE WHAT TYPES THINGS ARE AT COMPILE TIME.
THE ONLY WAY I COULD SEE A TYPED STACK BEING USEFUL IS IF YOU WERE CREATING A STATICALLY TYPED STACK BASED LANGUAGE. THIS WOULD BE HARD TO DO, BECAUSE IN MOST STACK BASED LANGUAGES, FUNCTIONS CAN CONSUME A PRODUCES DIFFERENT AMOUNTS OF VALUES BASED UPON THEIR INVOCATION. AND THIS IS IMPOSSIBLE TO KEEP TRACK OF SINCE EVEN TRYING TO CONSTRUCT A PARSE TREE WILL REDUCE TO THE HALTING PROBLEM. IT'S STILL AN INTERESTING THOUGHT THOUGH. IF EVER OPERATOR CONSUMES AND PRODUCES A KNOWN CONSTANT AMOUNT OF VALUES, THEN THE STACK BASED REPRESENTATION IS ACTUALLY EQUIVALENT TO A SYNTAX TREE. BUT THE SYNTAX TREE WILL PROBABLY GIVE YOU BETTER ACCESS TO THE VALUES YOU NEED. GOOD LUCK AND SORRY FOR NOT RESPONDING EARLIER, BUT I WAS BANNED FOR A WEEK. SINCERELY,
>>15-SAN. I HAD A LOT TO SAY BECAUSE I HAD A WEEK TO THINK ABOUT IT.