Tips for Golfing in BBC BASIC
Spaces after keywords are optional because of tokenisation. For example:

INPUT answer$
PRINT answer$
IF answer$ = 'Hi' THEN
  PRINT 'Hi!'
ENDIF


Can be shortened to

INPUTanswer$
PRINTanswer$
IFanswer$='Hi'THEN
  PRINT'Hi!'
ENDIF


The corollary of this is, a variable name cannot start with a keyword. So PRINTa is not a valid variable name. However printa is.

Spaces before keywords can be more tricky. Variable names can end with a keyword, so if variable name and keyword are run together they will be interpreted as a variable name.

For example the following gives a "no such variable" error because the variable aPRINT is not defined:

  a=7
  IF7=aPRINT"seven"


By rearranging this can be avoided:

  a=7
  IFa=7PRINT"seven"


This is a trivial example, but frequently rearranging an expression to end in a number or bracket instead of a variable name will enable you to eliminate a trailing space.