Class: Control11

Six~ Control11

Example 6/11: compile a little language into stack machine code.


new Control11()

Source:

Extends

Methods


Do()

Do: 'do'; returns address of slot for bzero to od

Source:

Else()

Else: 'else'; creates slot for branch to fi, returns address of else

Source:

Then()

Then: 'then'; returns address for bzero to else fi

Source:

While()

While: 'while'; returns address for branch to while

Source:

add()

add: '+' product;

Inherited From:
Overrides:
Source:

assign()

assign: Name '=' sum; stores and pops stack

Source:

divide()

divide: '/' signed;

Inherited From:
Overrides:
Source:

eq()

eq: '=' sum;

Source:

ge()

ge: '>=' sum;

Source:

gt()

gt: '>' sum;

Source:

input()

input: 'input' [ Number ];

Inherited From:
Overrides:
Source:

le()

le: '<=' sum;

Source:

loop()

loop: While cmp Do stmts 'od';

Source:

lt()

lt: '<' sum;

Source:

multiply()

multiply: '*' signed;

Inherited From:
Overrides:
Source:

name()

name: Name;

Inherited From:
Overrides:
Source:

ne()

ne: '<>' sum;

Source:

number()

number: Number;

Inherited From:
Overrides:
Source:

print()

print: 'print' sums;

Source:

prog()

prog: stmts; returns executable

Source:

run()

Creates stack machine

Inherited From:
Overrides:
Source:

select()

select: 'if' cmp Then stmts [ Else stmts ] 'fi';

Source:

signed()

signed: [ '-' ] term;

Inherited From:
Overrides:
Source:

stmt()

stmt: assign | print | loop | select; [replace] no op

Overrides:
Source:

subtract()

subtract: '-' product;

Inherited From:
Overrides:
Source:

sum()

sum: 'let' Name '=' sum | product [{ add | subtract }];

Inherited From:
Overrides:
Source:

sums()

sums: sum [{ ',' sum }]; returns number of values

Source:

toString()

Represents code as text

Inherited From:
Overrides:
Source: