Source Documentation

Lab2

class Parser
#include <lab2.hh>

Public Functions

void Recover(void)
double Parse(void)
class ParserEndOfFile
#include <lab2.hh>
class ParserError
#include <lab2.hh>
class Scanner
#include <lex.hh>

Public Functions

Token Scan(void)
inline Scanner()

Private Functions

void Reset(void)
void Accumulate(char)
void PutbackChar(unsigned char)
char *SymbolValue(void)
double NumberValue(void)
char GetChar(void)

Private Members

int state
int haveBuffered
unsigned char bufferedChar
char valueBuffer[kMaxTokenLength + 1]
long position
class ScannerError
#include <lex.hh>

Public Functions

inline ScannerError(char c, int s)
inline ScannerError(char *s)
inline ScannerError()

Public Members

char errorCharacter
char *message
int state
class Token
#include <lex.hh>

Public Functions

char *Lookup(TokenType)
char *Lookup(void)
inline Token()
inline Token(TokenType t)
inline Token(TokenType t, double x)
inline Token(TokenType t, char *s)

Public Members

TokenType type
double numberValue
char *symbolValue
class Trace
#include <lab2.hh>

Public Functions

inline Trace(char *s)
inline ~Trace()

Private Members

char *name

Private Static Attributes

static int indent = 0
namespace std
file lab2.cc
#include “lab2.hh”
file lab2.hh
#include <iostream>#include “lex.hh”
file lex.cc
#include “lex.hh”#include <stdlib.h>#include <string.h>#include <stdio.h>#include <ctype.h>

Functions

ostream &operator<<(ostream &s, Token &t)
ostream &operator<<(ostream &s, ScannerError &e)

Variables

static char *kTokenTypeNames[] = {"uninitialized", "number", "identifier", "plus", "minus", "times", "divide", "left paren", "right paren", "assignment", "end of file", "end of line", "power"}
file lex.hh
#include <iostream>

Enums

enum TokenType

Values:

enumerator kUninitialized
enumerator kNumber
enumerator kIdentifier
enumerator kPlus
enumerator kMinus
enumerator kTimes
enumerator kDivide
enumerator kLeftParen
enumerator kRightParen
enumerator kAssign
enumerator kEndMark
enumerator kEndOfLine
enumerator kPower

Functions

ostream &operator<<(ostream&, Token&)
ostream &operator<<(ostream&, ScannerError&)

Variables

const int kMaxTokenLength = 1024
file main.cc
#include <iostream>#include <stdlib.h>#include “lab2.hh”#include “lex.hh”

Functions

int main(void)
dir /home/marsj/dev/tddb44-webpage/tddd55-lab/lab2

Lab3-4

class And : public BinaryCondition
#include <ast.hh>

Public Functions

inline And(Condition *l, Condition *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Protected Functions

virtual void print(ostream &o)
class ArrayReference : public LeftValue
#include <ast.hh>

Public Functions

inline ArrayReference(VariableInformation *i, Expression *x)
virtual void GenerateAssignment(QuadsList &q, VariableInformation *val)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

VariableInformation *id
Expression *index

Protected Functions

virtual void print(ostream &o)
class Assignment : public Statement
#include <ast.hh>

Public Functions

inline Assignment(LeftValue *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

LeftValue *target
Expression *value

Protected Functions

virtual void print(ostream &o)
class ASTNode
#include <ast.hh>

Subclassed by Condition, ElseIfList, Expression, ExpressionList, Statement, StatementList

Public Functions

virtual VariableInformation *GenerateCode(QuadsList &q) = 0
virtual VariableInformation *GenerateCodeAndJump(QuadsList &q, long label)

Protected Functions

void indent(ostream &o)
void indentMore(void)
void indentLess(void)
void beginChild(ostream &o)
void endChild(ostream &o)
void lastChild(ostream &o)
virtual void print(ostream &o)
virtual void xprint(ostream &o, char *cls)

Protected Static Attributes

static int indentLevel = 0
static bool branches[10000]

Friends

friend friend ostream & operator<< (ostream &, ASTNode &)
friend friend ostream & operator<< (ostream &, ASTNode *)
class BinaryCondition : public Condition
#include <ast.hh>

Subclassed by And, Or

Public Functions

inline BinaryCondition(Condition *l, Condition *r)
virtual VariableInformation *GenerateCode(QuadsList &q) = 0

Public Members

Condition *left
Condition *right

Protected Functions

virtual void print(ostream &o)
virtual void xprint(ostream &o, char *cls)
class BinaryOperation : public Expression
#include <ast.hh>

Subclassed by Divide, Minus, Plus, Power, Times

Public Functions

inline BinaryOperation(Expression *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q) = 0

Public Members

Expression *left
Expression *right

Protected Functions

virtual void print(ostream &o)
virtual void xprint(ostream &o, char*)
class BinaryRelation : public Condition
#include <ast.hh>

Subclassed by Equal, GreaterThan, GreaterThanOrEqual, LessThan, LessThanOrEqual, NotEqual

Public Functions

inline BinaryRelation(Expression *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q) = 0

Public Members

Expression *left
Expression *right

Protected Functions

virtual void print(ostream &o)
virtual void xprint(ostream &o, char *cls)
class BooleanConstant : public Condition
#include <ast.hh>

Public Functions

inline BooleanConstant(int v)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

bool value

Protected Functions

virtual void print(ostream &o)
class CallStatement : public Statement
#include <ast.hh>

Public Functions

inline CallStatement(FunctionCall *c)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

FunctionCall *call

Protected Functions

virtual void print(ostream &o)
class Condition : public ASTNode
#include <ast.hh>

Subclassed by BinaryCondition, BinaryRelation, BooleanConstant, Not

Public Functions

virtual VariableInformation *GenerateCode(QuadsList &q) = 0

Protected Functions

virtual void print(ostream &o)
class Divide : public BinaryOperation
#include <ast.hh>

Public Functions

inline Divide(Expression *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Protected Functions

virtual void print(ostream &o)
class ElseIfList : public ASTNode
#include <ast.hh>

Public Functions

inline ElseIfList(ElseIfList *p, Condition *c, StatementList *b)
virtual VariableInformation *GenerateCode(QuadsList &q)
virtual VariableInformation *GenerateCodeAndJump(QuadsList &q, long lbl)

Public Members

ElseIfList *preceding
Condition *condition
StatementList *body

Protected Functions

virtual void print(ostream &o)
class Equal : public BinaryRelation
#include <ast.hh>

Public Functions

inline Equal(Expression *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Protected Functions

virtual void print(ostream &o)
class error
#include <string.hh>
class Expression : public ASTNode
#include <ast.hh>

Subclassed by BinaryOperation, FunctionCall, IntegerConstant, IntegerToReal, LeftValue, RealConstant, TruncateReal, UnaryMinus

Public Functions

inline Expression(TypeInformation *t)
virtual VariableInformation *GenerateCode(QuadsList &q) = 0

Public Members

TypeInformation *valueType

Protected Functions

virtual void print(ostream &o)
class ExpressionList : public ASTNode
#include <ast.hh>

Public Functions

inline ExpressionList(ExpressionList *pe, Expression *e)
virtual VariableInformation *GenerateCode(QuadsList &q)
virtual void GenerateParameterList(QuadsList &q, VariableInformation *firstParam)

Public Members

ExpressionList *precedingExpressions
Expression *expression

Protected Functions

virtual void print(ostream &o)
class FunctionCall : public Expression
#include <ast.hh>

Public Functions

inline FunctionCall(FunctionInformation *f, ExpressionList *a)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

FunctionInformation *function
ExpressionList *arguments

Protected Functions

virtual void print(ostream &o)
class FunctionInformation : public SymbolInformation
#include <symtab.hh>

Public Functions

inline FunctionInformation(const ::string &i)
inline virtual FunctionInformation *SymbolAsFunction(void)
void SetParent(FunctionInformation*)
void SetReturnType(TypeInformation*)
void SetBody(StatementList*)
void SetQuads(QuadsList*)
FunctionInformation *GetParent(void)
TypeInformation *GetReturnType(void)
VariableInformation *GetLastParam(void)
StatementList *GetBody(void)
QuadsList *GetQuads(void)
FunctionInformation *AddFunction(const ::string&, FunctionInformation*)
VariableInformation *AddParameter(const ::string&, TypeInformation*)
VariableInformation *AddVariable(const ::string&, TypeInformation*)
SymbolInformation *AddSymbol(SymbolInformation*)
TypeInformation *AddArrayType(TypeInformation*, int)
VariableInformation *TemporaryVariable(TypeInformation *type)
void GenerateCode(void)
char OkToAddSymbol(const ::string&)
SymbolInformation *LookupIdentifier(const ::string&)

Protected Functions

virtual ostream &print(ostream&)

Protected Attributes

long temporaryCount

Private Members

FunctionInformation *parent
TypeInformation *returnType
VariableInformation *lastParam
VariableInformation *lastLocal
SymbolTable symbolTable
StatementList *body
QuadsList *quads

Friends

friend class SymbolTable
class GreaterThan : public BinaryRelation
#include <ast.hh>

Public Functions

inline GreaterThan(Expression *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Protected Functions

virtual void print(ostream &o)
class GreaterThanOrEqual : public BinaryRelation
#include <ast.hh>

Public Functions

inline GreaterThanOrEqual(Expression *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Protected Functions

virtual void print(ostream &o)
class Identifier : public LeftValue
#include <ast.hh>

Public Functions

inline Identifier(VariableInformation *i)
virtual void GenerateAssignment(QuadsList &q, VariableInformation *val)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

VariableInformation *id

Protected Functions

virtual void print(ostream &o)
class IfStatement : public Statement
#include <ast.hh>

Public Functions

inline IfStatement(Condition *c, StatementList *ts, ElseIfList *eif, StatementList *es)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

Condition *condition
StatementList *thenStatements
ElseIfList *elseIfList
StatementList *elseStatements

Protected Functions

virtual void print(ostream &o)
class IntegerConstant : public Expression
#include <ast.hh>

Public Functions

inline IntegerConstant(long int v)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

long int value

Protected Functions

virtual void print(ostream &o)
class IntegerToReal : public Expression
#include <ast.hh>

Public Functions

inline IntegerToReal(Expression *e)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

Expression *value

Protected Functions

virtual void print(ostream &o)
class LeftValue : public Expression
#include <ast.hh>

Subclassed by ArrayReference, Identifier

Public Functions

inline LeftValue(TypeInformation *t)
virtual void GenerateAssignment(QuadsList &q, VariableInformation *val) = 0
virtual VariableInformation *GenerateCode(QuadsList &q) = 0

Protected Functions

virtual void print(ostream &o)
class LessThan : public BinaryRelation
#include <ast.hh>

Public Functions

inline LessThan(Expression *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Protected Functions

virtual void print(ostream &o)
class LessThanOrEqual : public BinaryRelation
#include <ast.hh>

Public Functions

inline LessThanOrEqual(Expression *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Protected Functions

virtual void print(ostream &o)
class Minus : public BinaryOperation
#include <ast.hh>

Public Functions

inline Minus(Expression *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Protected Functions

virtual void print(ostream &o)
class Not : public Condition
#include <ast.hh>

Public Functions

inline Not(Condition *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

Condition *right

Protected Functions

virtual void print(ostream &o)
class NotEqual : public BinaryRelation
#include <ast.hh>

Public Functions

inline NotEqual(Expression *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Protected Functions

virtual void print(ostream &o)
class Or : public BinaryCondition
#include <ast.hh>

Public Functions

inline Or(Condition *l, Condition *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Protected Functions

virtual void print(ostream &o)
class Plus : public BinaryOperation
#include <ast.hh>

Public Functions

inline Plus(Expression *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Protected Functions

virtual void print(ostream &o)
class Power : public BinaryOperation
#include <ast.hh>

Public Functions

inline Power(Expression *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Protected Functions

virtual void print(ostream &o)
class Quad
#include <codegen.hh>

Public Functions

void print_c(ostream &o)
inline Quad(tQuadType o, SymbolInformation *a, SymbolInformation *b, SymbolInformation *c)
inline Quad(tQuadType o, long a, SymbolInformation *b, SymbolInformation *c)
inline Quad(tQuadType o, SymbolInformation *a, long b, SymbolInformation *c)
inline Quad(tQuadType o, double a, SymbolInformation *b, SymbolInformation *c)

Public Members

tQuadType opcode
SymbolInformation *sym1
SymbolInformation *sym2
SymbolInformation *sym3
long int1
long int2
long int3
double real1
double real2
double real3

Private Functions

ostream &print(ostream&)

Friends

friend friend ostream & operator<< (ostream &, Quad *)
friend friend ostream & operator<< (ostream &, Quad &)
class QuadsList
#include <codegen.hh>

Public Functions

void print_c(ostream&)
inline QuadsList()
QuadsList &operator+=(Quad *q)
inline long NextLabel(void)

Private Functions

ostream &print(ostream&)

Private Members

QuadsListElement *head
QuadsListElement *tail

Private Static Attributes

static long labelCounter

Friends

friend class QuadsListIterator
friend friend ostream & operator<< (ostream &, QuadsList *)
friend friend ostream & operator<< (ostream &, QuadsList &)
class QuadsList::QuadsListElement

Public Functions

inline QuadsListElement(Quad *d, QuadsListElement *n)
inline ~QuadsListElement()

Public Members

Quad *data
QuadsListElement *next
class QuadsListIterator
#include <codegen.hh>

Public Functions

inline QuadsListIterator(QuadsList *ql)
inline Quad *Next(void)

Private Members

QuadsList::QuadsListElement *elem
class RealConstant : public Expression
#include <ast.hh>

Public Functions

inline RealConstant(double v)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

double value

Protected Functions

virtual void print(ostream &o)
class ReturnStatement : public Statement
#include <ast.hh>

Public Functions

inline ReturnStatement()
inline ReturnStatement(Expression *e)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

Expression *value

Protected Functions

virtual void print(ostream &o)
class Statement : public ASTNode
#include <ast.hh>

Subclassed by Assignment, CallStatement, IfStatement, ReturnStatement, WhileStatement

Public Functions

virtual VariableInformation *GenerateCode(QuadsList &q) = 0

Protected Functions

virtual void print(ostream &o)
class StatementList : public ASTNode
#include <ast.hh>

Public Functions

inline StatementList(StatementList *l, Statement *s)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

Statement *statement
StatementList *precedingStatements

Protected Functions

virtual void print(ostream &o)
class string
#include <string.hh>

Public Functions

string()
string(char*)
string(char, int)
string(const string&)
string(int)
~string()
void upcase(void)
void downcase(void)
string &operator=(const string&)
string &operator=(const char*)
string &operator=(const char)
string &operator+=(const string&)
string &operator+=(const char)
string &operator+=(const char*)
unsigned long hash(void) const
int length(void) const
char &operator[](int)
const char operator[](const int) const

Private Functions

void ensure_size(int)

Private Members

char *text
int size
int position
int chunk_size

Friends

friend friend string & operator+ (const string &, const string &)
friend friend string & operator+ (const string &, const char)
friend friend string & operator+ (const string &, const int)
friend friend int operator== (const string &, const string &)
friend friend int operator!= (const string &, const string &)
friend friend int operator< (const string &, const string &)
friend friend int operator> (const string &, const string &)
friend friend int operator>= (const string &, const string &)
friend friend int operator<= (const string &, const string &)
friend friend ostream & operator<< (ostream &, const string &)
friend friend ostream & operator<< (ostream &, const string *)
class SymbolInformation
#include <symtab.hh>

Subclassed by FunctionInformation, TypeInformation, VariableInformation

Public Types

enum tFormatType

Values:

enumerator kFullFormat
enumerator kSummaryFormat
enumerator kShortFormat
enumerator kCFormat

Public Functions

inline SymbolInformation(SymbolInformationType t, const ::string &i)
inline virtual ~SymbolInformation()
inline virtual FunctionInformation *SymbolAsFunction(void)
inline virtual VariableInformation *SymbolAsVariable(void)
inline virtual TypeInformation *SymbolAsType(void)

Public Members

SymbolInformationType tag
::string id
SymbolTable *table

Public Static Attributes

static tFormatType outputFormat = SymbolInformation::kFullFormat

Protected Functions

virtual ostream &print(ostream&)

Friends

friend class SymbolTable
friend friend ostream & LongSymbols (ostream &)
friend friend ostream & SummarySymbols (ostream &)
friend friend ostream & ShortSymbols (ostream &)
friend friend ostream & operator<< (ostream &, SymbolInformation &)
friend friend ostream & operator<< (ostream &, SymbolInformation *)
class SymbolTable
#include <symtab.hh>

Public Functions

SymbolTable()
void AddSymbol(SymbolInformation*)
SymbolInformation *LookupSymbol(const ::string&)

Public Members

SymbolTableElement **table
int tableSize

Public Static Attributes

static int nextTemporary

Protected Functions

virtual ostream &print(ostream&)

Friends

friend friend ostream & operator<< (ostream &, SymbolTable &)
friend friend ostream & operator<< (ostream &, SymbolTable *)
class SymbolTableElement
#include <symtab.hh>

Public Members

SymbolInformation *info
SymbolTableElement *next
class Times : public BinaryOperation
#include <ast.hh>

Public Functions

inline Times(Expression *l, Expression *r)
virtual VariableInformation *GenerateCode(QuadsList &q)

Protected Functions

virtual void print(ostream &o)
class TruncateReal : public Expression
#include <ast.hh>

Public Functions

inline TruncateReal(Expression *e)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

Expression *value

Protected Functions

virtual void print(ostream &o)
class TypeInformation : public SymbolInformation
#include <symtab.hh>

Public Functions

inline virtual TypeInformation *SymbolAsType(void)
inline TypeInformation(const ::string &i, unsigned long s)

Public Members

TypeInformation *elementType
int arrayDimensions
unsigned long size

Protected Functions

virtual ostream &print(ostream&)

Friends

friend class SymbolTable
friend class FunctionInformation
friend class VariableInformation
class UnaryMinus : public Expression
#include <ast.hh>

Public Functions

inline UnaryMinus(Expression *e)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

Expression *right

Protected Functions

virtual void print(ostream &o)
class VariableInformation : public SymbolInformation
#include <symtab.hh>

Public Functions

inline virtual VariableInformation *SymbolAsVariable(void)
inline VariableInformation(const ::string &i)
inline VariableInformation(const ::string &i, TypeInformation *t)

Public Members

TypeInformation *type
VariableInformation *prev

Protected Functions

virtual ostream &print(ostream&)
class WhileStatement : public Statement
#include <ast.hh>

Public Functions

inline WhileStatement(Condition *c, StatementList *b)
virtual VariableInformation *GenerateCode(QuadsList &q)

Public Members

Condition *condition
StatementList *body

Protected Functions

virtual void print(ostream &o)
namespace std
file ast.cc
#include “ast.hh”

Functions

ostream &operator<<(ostream &o, ASTNode *node)
ostream &operator<<(ostream &o, ASTNode &node)
file ast.hh
#include “symtab.hh”#include “codegen.hh”

Enums

enum ASTNodeType

Values:

Functions

ostream &operator<<(ostream&, ASTNode&)
ostream &operator<<(ostream&, ASTNode*)
file codegen.cc
#include <iostream>#include <iomanip>#include <stdlib.h>#include “ast.hh”#include “symtab.hh”#include “codegen.hh”

Defines

USEQ

Functions

static VariableInformation *BinaryGenerateCode(QuadsList &q, tQuadType realop, tQuadType intop, ASTNode *left, ASTNode *right, ASTNode *node, TypeInformation *type = NULL)
ostream &operator<<(ostream &o, QuadsList *q)
ostream &operator<<(ostream &o, QuadsList &q)
ostream &operator<<(ostream &o, Quad *q)
ostream &operator<<(ostream &o, Quad &q)
file codegen.hh

Enums

enum tQuadType

Values:

enumerator iconst
enumerator rconst
enumerator iaddr
enumerator itor
enumerator rtrunc
enumerator iadd
enumerator isub
enumerator imul
enumerator idiv
enumerator ipow
enumerator radd
enumerator rsub
enumerator rmul
enumerator rdiv
enumerator rpow
enumerator igt
enumerator ilt
enumerator ieq
enumerator rgt
enumerator rlt
enumerator req
enumerator iand
enumerator ior
enumerator inot
enumerator jtrue
enumerator jfalse
enumerator jump
enumerator clabel
enumerator istore
enumerator iload
enumerator rstore
enumerator rload
enumerator creturn
enumerator param
enumerator call
enumerator iassign
enumerator rassign
enumerator aassign
enumerator hcf
enumerator nop
file main.cc
#include <stdlib.h>#include <stdio.h>#include <iostream>#include “ast.hh”#include “parser.hh”#include “symtab.hh”#include <unistd.h>

Functions

int yyparse(void)
void Usage(char *program)
int main(int argc, char **argv)

Variables

int yydebug
int errorCount
int warningCount
static char *optionString = "dhc"
file stl.h
#include <math.h>#include <stdio.h>

Defines

array_real(X)
array_integer(X)
real
integer
conditional
bool

Functions

integer putint(long x)
integer putreal(double x)
double getreal()
double getint()
integer putline()
file string.cc
#include <stdlib.h>#include <malloc.h>#include <cstring>#include <ctype.h>#include <strstream>#include “string.hh”

Defines

MAX(a, b)

Functions

string &operator+(const string &s1, const string &s2)
string &operator+(const string &s1, const char c)
string &operator+(const string &s1, const int i)
int operator==(const string &s1, const string &s2)
int operator!=(const string &s1, const string &s2)
int operator>=(const string &s1, const string &s2)
int operator<=(const string &s1, const string &s2)
int operator>(const string &s1, const string &s2)
int operator<(const string &s1, const string &s2)
ostream &operator<<(ostream &o, const string &s)
ostream &operator<<(ostream &o, const string *s)
file string.hh
#include <iostream>
file symtab.cc
#include <stdlib.h>#include “symtab.hh”#include “ast.hh”#include “string.hh”

Functions

ostream &SummarySymbols(ostream &o)
ostream &operator<<(ostream &o, SymbolTable &t)
ostream &operator<<(ostream &o, SymbolTable *t)
ostream &operator<<(ostream &o, SymbolInformation &i)
ostream &operator<<(ostream &o, SymbolInformation *i)
ostream &ShortSymbols(ostream &o)
ostream &LongSymbols(ostream &o)
ostream &CFormat(ostream &o)

Variables

FunctionInformation *currentFunction
TypeInformation *kIntegerType
TypeInformation *kRealType
FunctionInformation *kFPrintFunction
FunctionInformation *kIPrintFunction
FunctionInformation *kFReadFunction
FunctionInformation *kIReadFunction
file symtab.hh
#include <iostream>#include “string.hh”

Enums

enum SymbolInformationType

Values:

enumerator kFunctionInformation
enumerator kVariableInformation
enumerator kTypeInformation

Functions

ostream &ShortSymbols(ostream &o)
ostream &LongSymbols(ostream &o)
ostream &CFormat(ostream &o)

Variables

FunctionInformation *currentFunction
FunctionInformation *kFPrintFunction
FunctionInformation *kIPrintFunction
FunctionInformation *kFReadFunction
FunctionInformation *kIReadFunction
TypeInformation *kRealType
TypeInformation *kIntegerType
file README.md
page md__home_marsj_dev_tddb44-webpage_tddd55-lab_lab3-4_test_README

expression_test.prog

This program simple executes and print simple expressions

factorial_test.prog

This program checks if functions and if/else statements are handled correctly. Checks the factorial function

fibonacci_test.prog

Similar to the factorial test, also tests recursions

sort_test.prog

This program simple executes selection sort on an unsorted array

*output_ref

These are references files specifing the expected output from the programs above. It is used by codegen-test.sh

How to test?

To test a program simply execute codegen-test.sh in the parent directory.

bash codegen-test.sh

How do I compile my own program?

Invoke the compiler. Pipe the output to a file with the suffix.c

compiler -c > <name>.c 

Do not use the -d flag when doing this.

Then compile this file with

gcc -lm <name.c>

dir /home/marsj/dev/tddb44-webpage/tddd55-lab/lab3-4
dir /home/marsj/dev/tddb44-webpage/tddd55-lab/lab3-4/test