Class: Functions04

Seven~ Functions04

Example 7/04: compile parameter-less functions into stack machine code.


new Functions04()

Source:

Extends

Classes

Fun
Symbol
Var

Members


funct

Describes current function

Source:

size

Manages next (global) variable address

Source:

Methods


Do()

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

Inherited From:
Overrides:
Source:

Else()

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

Inherited From:
Overrides:
Source:

Then()

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

Inherited From:
Overrides:
Source:

While()

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

Inherited From:
Overrides:
Source:

_alloc()

Returns new Var at next global address.

Source:

_check_defs()

Flags undefined functions, returns main if defined

Source:

_dcl()

(Re-)defines and returns sym, cannot be undefined

Source:

_find()

Returns symbol description for name, if any

Source:

_startup(main)

Generates Call to main.start and Print result

Parameters:
Name Type Description
main Fun

describes main().

Source:

add()

add: '+' product;

Inherited From:
Overrides:
Source:

assign()

assign: Name [ '=' sum ];

Overrides:
Source:

divide()

divide: '/' signed;

Inherited From:
Overrides:
Source:

eq()

eq: '=' sum;

Inherited From:
Overrides:
Source:

fun()

fun: head [ 'begin' stmts 'end' ] ';';

Source:

ge()

ge: '>=' sum;

Inherited From:
Overrides:
Source:

gt()

gt: '>' sum;

Inherited From:
Overrides:
Source:

head: 'function' Name; returns function symbol

Source:

input()

input: 'input' [ Number ];

Inherited From:
Overrides:
Source:

le()

le: '<=' sum;

Inherited From:
Overrides:
Source:

loop()

loop: While cmp Do stmts 'od';

Inherited From:
Overrides:
Source:

lt()

lt: '<' sum;

Inherited From:
Overrides:
Source:

multiply()

multiply: '*' signed;

Inherited From:
Overrides:
Source:

name()

name: Name;

Overrides:
Source:

names()

names: Name [{ ',' Name }]; defines new variables, returns number of names

Source:

ne()

ne: '<>' sum;

Inherited From:
Overrides:
Source:

number()

number: Number;

Inherited From:
Overrides:
Source:

print()

print: 'print' sums;

Inherited From:
Overrides:
Source:

prog()

prog: [ vars ] funs; returns executable

Overrides:
Source:

return()

return: 'return' [ sum ];

Source:

run()

Creates stack machine

Inherited From:
Overrides:
Source:

select()

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

Inherited From:
Overrides:
Source:

signed()

signed: [ '-' ] term;

Inherited From:
Overrides:
Source:

stmt()

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

Inherited From:
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

Inherited From:
Overrides:
Source:

toString()

Represents code as text

Inherited From:
Overrides:
Source: