90 likes | 175 Views
MScheme. Advanced Programming 2009/2010 – Group 23 Rui Sebastião 56939 José Duarte Lourenço 58515 Sofia Teixeira 58600. Agenda. Architecture Input Processing Algorithm Environment Notion Extensions microScheme Reference. Architecture. Command pattern Recursion. Input Processing.
E N D
MScheme Advanced Programming 2009/2010 – Group 23 Rui Sebastião 56939 José Duarte Lourenço 58515 Sofia Teixeira 58600
Agenda • Architecture • Input Processing • Algorithm • Environment Notion • Extensions • microScheme Reference
Architecture • Command pattern • Recursion
Input Processing • Main Expression Parser • If-else structure • String matching with the language reference… • … Or Type Matching with language types
Input Processing – Algorithm 1/2 • Check the car of incoming cons • If it is a known command, execute it with our eval nodes • Inside each eval node: • Evaluate recursively with Expression Parser the car of the expression received until it is of a known type
Input Processing – Algorithm 2/2 • If it is of a known type, perform adequate evaluation • Self evaluating expressions • Cons expressions • Symbols that are Functions and must evaluate again on Expression Parser
EnvironmentNotion • At the beginning of the program, an initial environment is set with the known symbols and keywords • On each let, let*,letrec instruction and lambda a new internal environment is pushed into our List of Environments • At the end of its execution, the stack pointer returns to the global environment • No push and pop operations: we don’t want to lose previous environments!
Extensions • Exception handling • Approaching our types to the ones in Scheme • JFields