private static void InitializeTypes(SymbolTableStack symtabstack) { // int IntegerId = symtabstack.CreateInLocal("integer"); IntegerType = TypeSpec.CreateType(TypeForm.Scalar); IntegerType.Identifier = IntegerId; IntegerId.Definition = Definition.TYPE; IntegerId.Type = IntegerType; // real RealId = symtabstack.CreateInLocal("real"); RealType = TypeSpec.CreateType(TypeForm.Scalar); RealType.Identifier = RealId; RealId.Definition = Definition.TYPE; RealId.Type = RealType; // boolean BooleanId = symtabstack.CreateInLocal("boolean"); BooleanType = TypeSpec.CreateType(TypeForm.Enumeration); BooleanType.Identifier = BooleanId; BooleanId.Definition = Definition.TYPE; BooleanId.Type = BooleanType; // char CharId = symtabstack.CreateInLocal("char"); CharType = TypeSpec.CreateType(TypeForm.Scalar); CharType.Identifier = CharId; CharId.Definition = Definition.TYPE; CharId.Type = CharType; // UndefinedType = TypeSpec.CreateType(TypeForm.Scalar); }
public override void Process(ICode iCode, SymbolTableStack symtabstack) { var start = DateTime.Now; // var end = DateTime.Now; double elapsed_time = (end - start).Ticks / (1.0 * TimeSpan.TicksPerSecond); int instruction_count = 0; // send the message var args = Tuple.Create(instruction_count, elapsed_time); Message msg = new Message(MessageType.CompilerSummary, args); Send(msg); }
public override void Process(ICode iCode, SymbolTableStack symtabstack) { int execution_count = 0; var start = DateTime.Now; ICodeNode root = iCode.Root; StatementInterpreter stmnt_interpreter = StatementInterpreter.CreateWithObservers(observers); var execution_results = stmnt_interpreter.Execute(root, ref execution_count); var end = DateTime.Now; double elapsed_time = (end - start).Ticks / (1.0 * TimeSpan.TicksPerSecond); int runtime_errors = RuntimeErrorHandler.Errors; // send the message var args = Tuple.Create(execution_count, runtime_errors, elapsed_time); Message msg = new Message(MessageType.InterpreterSummary, args); Send(msg); }
private static void InitializeConstants(SymbolTableStack symtabstack) { // boolean enum constant false FalseId = symtabstack.CreateInLocal("false"); FalseId.Definition = Definition.ENUMERATION_CONSTANT; FalseId.Type = BooleanType; FalseId.SetAttribute(SymbolTableKey.ConstantValue, 0); // boolean enum constant true TrueId = symtabstack.CreateInLocal("true"); TrueId.Definition = Definition.ENUMERATION_CONSTANT; TrueId.Type = BooleanType; TrueId.SetAttribute(SymbolTableKey.ConstantValue, 1); // add false & true to the boolean enumeration type var constants = new List<SymbolTableEntry>() { FalseId, TrueId }; BooleanType.SetAttribute(TypeKey.EnumerationConstants, constants); }
public static AssignmentStatementParser CreateWithObservers(Scanner s, SymbolTableStack stack, List<IMessageObserver> obl) { return NonTerminalParser.CreateWithObserver<AssignmentStatementParser>(s, stack, obl); }
public abstract void Process(ICode iCode, SymbolTableStack symtabstack);
public static ExpressionParser CreateWithObservers(Scanner s, SymbolTableStack stack, List<IMessageObserver> obl) { return NonTerminalParser.CreateWithObserver<ExpressionParser>(s, stack, obl); }
/** * Initialize a symbol table stack with predefined identifiers. * */ public static void Initialize(SymbolTableStack symtabstack) { InitializeTypes(symtabstack); InitializeConstants(symtabstack); }
public static void Print(SymbolTableStack stack) { Console.WriteLine("\n===== CROSS-REFERENCE TABLE ====="); PrintColumnHeadings(); PrintSymbolTable(stack.GetLocal()); }