Mercurial > hg > octave-nkf
view doc/interpreter/grammar.txi @ 12573:232a90612254
Add new section on parsing to documentation.
Add functions add_input_event_hook, remove_input_event_hook, missing_function_hook to documentation.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Sun, 03 Apr 2011 20:33:14 -0700 |
parents | fd0a3ac60b0e |
children | 0f69d849360e |
line wrap: on
line source
@c Copyright (C) 1996-2011 John W. Eaton @c @c This file is part of Octave. @c @c Octave is free software; you can redistribute it and/or modify it @c under the terms of the GNU General Public License as published by the @c Free Software Foundation; either version 3 of the License, or (at @c your option) any later version. @c @c Octave is distributed in the hope that it will be useful, but WITHOUT @c ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or @c FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License @c for more details. @c @c You should have received a copy of the GNU General Public License @c along with Octave; see the file COPYING. If not, see @c <http://www.gnu.org/licenses/>. @node Grammar and Parser @appendix Grammar and Parser @cindex grammar rules @cindex language definition This appendix will eventually contain a semi-formal description of Octave's language. @menu * Keywords:: * Parser:: @end menu @node Keywords @section Keywords @cindex keywords The following identifiers are keywords, and may not be used as variable or function names: @multitable @columnfractions .33 .33 .33 @item @code{__FILE__} @tab @code{__LINE__} @tab @code{break} @item @code{case} @tab @code{catch} @tab @code{classdef} @item @code{continue} @tab @code{do} @tab @code{else} @item @code{elseif} @tab @code{end} @tab @code{end_try_catch} @item @code{end_unwind_protect} @tab @code{endclassdef} @tab @code{endevents} @item @code{endfor} @tab @code{endfunction} @tab @code{endif} @item @code{endmethods} @tab @code{endproperties} @tab @code{endswitch} @item @code{endwhile} @tab @code{events} @tab @code{for} @item @code{function} @tab @code{get} @tab @code{global} @item @code{if} @tab @code{methods} @tab @code{otherwise} @item @code{persistent} @tab @code{properties} @tab @code{return} @item @code{set} @tab @code{static} @tab @code{switch} @item @code{try} @tab @code{until} @tab @code{unwind_protect} @item @code{unwind_protect_cleanup}@tab @code{while} @end multitable The function @code{iskeyword} can be used to quickly check whether an identifier is reserved by Octave. @DOCSTRING(iskeyword) @node Parser @section Parser @cindex parser The parser has a number of variables that affect its internal operation. These variables are generally documented in the manual alongside the code that they affect. For example, @code{allow_noninteger_range_as_index} is discussed in the section on index expressions. In addition, there are three non-specific parser customization functions. @code{add_input_event_hook} can be used to schedule a user function for periodic evaluation. @code{remove_input_event_hook} will stop a user function from being evaluated periodically. @DOCSTRING(add_input_event_hook) @DOCSTRING(remove_input_event_hook) Finally, when the parser cannot identify an input token it calls a particular function to handle this. By default, this is the function "unimplemented" which makes suggestions about possible Octave substitutes for @sc{matlab} functions. @DOCSTRING(missing_function_hook)