@c Copyright (C) 1996, 1997 John W. Eaton
@c This is part of the Octave manual.
@c For copying conditions, see the file gpl.texi.

@node Grammar
@appendix Grammar
@cindex grammar rules
@cindex language definition

Someday I hope to expand this to include a semi-formal description of
Octave's language.

@menu
* Keywords::                    
@end menu

@node Keywords
@section Keywords
@cindex keywords

The following identifiers are keywords, and may not be used as variable
or function names:

@example
@group
break                   for
case                    function
catch                   global
continue                gplot
else                    gsplot
elseif                  if
end                     otherwise
end_try_catch           return
end_unwind_protect      switch
endfor                  try
endfunction             unwind_protect
endif                   unwind_protect_cleanup
endswitch               while
endwhile                
@end group
@end example

The following command-like functions are also speical.  They may be used
as simple variable names, but not as formal parameters for functions, or
as the names of structure variables.  Failed assignments leave them
undefined (you can recover the orginal definition as a function using
clear).

@example
@group
casesen       echo          load          show
cd            edit_history  ls            type
chdir         format        more          which
clear         help          run_history   who
diary         history       save          whos
dir           hold          set
@end group
@end example
