GNU Octave  3.8.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Classes | Macros | Typedefs | Functions | Variables
lex.cc File Reference
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <cctype>
#include <cstring>
#include <iostream>
#include <set>
#include <sstream>
#include <string>
#include <stack>
#include <sys/types.h>
#include <unistd.h>
#include "cmd-edit.h"
#include "quit.h"
#include "lo-mappers.h"
#include "Cell.h"
#include "comment-list.h"
#include "defun.h"
#include "error.h"
#include "gripes.h"
#include "input.h"
#include "lex.h"
#include "ov.h"
#include "parse.h"
#include "pt-all.h"
#include "symtab.h"
#include "token.h"
#include "toplev.h"
#include "utils.h"
#include "variables.h"
#include <oct-parse.h>
#include <oct-gperf.h>
Include dependency graph for lex.cc:

Go to the source code of this file.

Classes

struct  yy_buffer_state
struct  yy_trans_info
struct  yyguts_t

Macros

#define BEGIN   yyg->yy_start = 1 + 2 *
#define BLOCK_COMMENT_START   4
#define CMD_OR_COMPUTED_ASSIGN_OP(PATTERN, TOK)
#define CMD_OR_OP(PATTERN, TOK, COMPAT)
#define CMD_OR_UNARY_OP(PATTERN, TOK, COMPAT)
#define COMMAND_START   1
#define curr_lexer   yyextra
#define DQ_STRING_START   6
#define ECHO   do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
#define EOB_ACT_CONTINUE_SCAN   0
#define EOB_ACT_END_OF_FILE   1
#define EOB_ACT_LAST_MATCH   2
#define FLEX_BETA
#define FLEX_SCANNER
#define FLEXINT_H
#define HANDLE_STRING_CONTINUATION
#define INITIAL   0
#define INPUT_FILE_START   3
#define INT16_MAX   (32767)
#define INT16_MIN   (-32767-1)
#define INT32_MAX   (2147483647)
#define INT32_MIN   (-2147483647-1)
#define INT8_MAX   (127)
#define INT8_MIN   (-128)
#define LINE_COMMENT_START   5
#define MATRIX_START   2
#define octave_wrap(n)   1
#define OCTAVE_YYG   struct yyguts_t *yyg = static_cast<struct yyguts_t*> (scanner)
#define REJECT   reject_used_but_not_detected
#define SQ_STRING_START   7
#define UINT16_MAX   (65535U)
#define UINT32_MAX   (4294967295U)
#define UINT8_MAX   (255U)
#define unput(c)   yyunput( c, yyg->yytext_ptr , yyscanner )
#define YY_AT_BOL()   (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
#define YY_BREAK   break;
#define YY_BUF_SIZE   16384
#define YY_BUFFER_EOF_PENDING   2
#define YY_BUFFER_NEW   0
#define YY_BUFFER_NORMAL   1
#define YY_CURRENT_BUFFER
#define YY_CURRENT_BUFFER_LVALUE   yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
#define YY_DECL
#define YY_DECL_IS_OURS   1
#define YY_DO_BEFORE_ACTION
#define YY_END_OF_BUFFER   120
#define YY_END_OF_BUFFER_CHAR   0
#define YY_EXIT_FAILURE   2
#define YY_EXTRA_TYPE   octave_base_lexer *
#define YY_FATAL_ERROR(msg)   (octave_get_extra (yyscanner))->fatal_error (msg)
#define yy_flex_debug   yyg->yy_flex_debug_r
#define YY_FLEX_MAJOR_VERSION   2
#define YY_FLEX_MINOR_VERSION   5
#define YY_FLEX_SUBMINOR_VERSION   35
#define YY_FLUSH_BUFFER   octave__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
#define YY_INPUT(buf, result, max_size)   result = curr_lexer->fill_flex_buffer (buf, max_size)
#define YY_INT_ALIGNED   short int
#define YY_LESS_LINENO(n)
#define YY_MORE_ADJ   0
#define yy_new_buffer   octave__create_buffer
#define YY_NEW_FILE   octave_restart(yyin ,yyscanner )
#define YY_NULL   0
#define YY_NUM_RULES   119
#define YY_READ_BUF_SIZE   8192
#define YY_RESTORE_YY_MORE_OFFSET
#define YY_RULE_SETUP
#define YY_SC_TO_UI(c)   ((unsigned int) (unsigned char) c)
#define yy_set_bol(at_bol)
#define yy_set_interactive(is_interactive)
#define YY_SKIP_YYWRAP
#define YY_START   ((yyg->yy_start - 1) / 2)
#define YY_START_STACK_INCR   25
#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
#define YY_STATE_EOF(state)   (YY_END_OF_BUFFER + state + 1)
#define YY_STRUCT_YY_BUFFER_STATE
#define YY_TYPEDEF_YY_BUFFER_STATE
#define YY_TYPEDEF_YY_SCANNER_T
#define YY_TYPEDEF_YY_SIZE_T
#define YY_USER_ACTION
#define yycolumn   (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
#define yyconst
#define yyextra   yyg->yyextra_r
#define yyin   yyg->yyin_r
#define yyleng   yyg->yyleng_r
#define yyless(n)
#define yyless(n)
#define yylineno   (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
#define yylval   yyg->yylval_r
#define yymore()   yymore_used_but_not_detected
#define yyout   yyg->yyout_r
#define YYSTATE   YY_START
#define YYTABLES_NAME   "yytables"
#define yyterminate()   return YY_NULL
#define yytext   yyg->yytext_r
#define yytext_ptr   yytext_r

Typedefs

typedef short int flex_int16_t
typedef int flex_int32_t
typedef signed char flex_int8_t
typedef unsigned short int flex_uint16_t
typedef unsigned int flex_uint32_t
typedef unsigned char flex_uint8_t
typedef struct yy_buffer_stateYY_BUFFER_STATE
typedef unsigned char YY_CHAR
typedef size_t yy_size_t
typedef int yy_state_type
typedef voidyyscan_t

Functions

 DEFUN (iskeyword, args,,"-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} iskeyword ()\n\ @deftypefnx {Built-in Function} {} iskeyword (@var{name})\n\ Return true if @var{name} is an Octave keyword. If @var{name}\n\ is omitted, return a list of keywords.\n\ @seealso{isvarname, exist}\n\ @end deftypefn")
 DEFUN (__display_tokens__, args, nargout,"-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} __display_tokens__ ()\n\ Query or set the internal variable that determines whether Octave's\n\ lexer displays tokens as they are read.\n\ @end deftypefn")
 DEFUN (__token_count__,,,"-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} __token_count__ ()\n\ Number of language tokens processed since Octave startup.\n\ @end deftypefn")
 DEFUN (__lexer_debug_flag__, args, nargout,"-*- texinfo -*-\n\ @deftypefn {Built-in Function} {@var{old_val} =} __lexer_debug_flag__ (@var{new_val}))\n\ Undocumented internal function.\n\ @end deftypefn")
static void display_character (char c)
static int input (yyscan_t yyscanner)
bool is_keyword (const std::string &s)
int isatty (int)
static bool looks_like_copyright (const std::string &s)
static bool looks_like_hex (const char *s, int len)
YY_BUFFER_STATE octave__create_buffer (FILE *file, int size, yyscan_t yyscanner)
 Allocate and initialize an input buffer state.
void octave__delete_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner)
 Destroy the buffer.
void octave__flush_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner)
 Discard all buffered characters.
static void octave__init_buffer (YY_BUFFER_STATE b, FILE *file, yyscan_t yyscanner)
static void octave__load_buffer_state (yyscan_t yyscanner)
YY_BUFFER_STATE octave__scan_buffer (char *base, yy_size_t size, yyscan_t yyscanner)
 Setup the input buffer state to scan directly from a user-specified character buffer.
YY_BUFFER_STATE octave__scan_bytes (char *yybytes, int _yybytes_len, yyscan_t yyscanner)
 Setup the input buffer state to scan the given bytes.
YY_BUFFER_STATE octave__scan_string (char *yystr, yyscan_t yyscanner)
 Setup the input buffer state to scan a string.
void octave__switch_to_buffer (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner)
 Switch to a different input buffer.
voidoctave_alloc (yy_size_t, yyscan_t yyscanner)
static void octave_ensure_buffer_stack (yyscan_t yyscanner)
void octave_free (void *, yyscan_t yyscanner)
int octave_get_column (yyscan_t yyscanner)
 Get the current column number.
int octave_get_debug (yyscan_t yyscanner)
octave_base_lexeroctave_get_extra (yyscan_t yyscanner)
 Get the user-defined data for this scanner.
FILE * octave_get_in (yyscan_t yyscanner)
 Get the input stream.
int octave_get_leng (yyscan_t yyscanner)
 Get the length of the current token.
int octave_get_lineno (yyscan_t yyscanner)
 Get the current line number.
YYSTYPEoctave_get_lval (yyscan_t yyscanner)
FILE * octave_get_out (yyscan_t yyscanner)
 Get the output stream.
charoctave_get_text (yyscan_t yyscanner)
 Get the current token.
int octave_lex (YYSTYPE *yylval_param, yyscan_t yyscanner)
 The main scanner function which does all the work.
int octave_lex_destroy (yyscan_t yyscanner)
int octave_lex_init (yyscan_t *scanner)
int octave_lex_init_extra (octave_base_lexer *user_defined, yyscan_t *scanner)
void octave_pop_buffer_state (yyscan_t yyscanner)
 Removes and deletes the top of the stack, if present.
void octave_push_buffer_state (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner)
 Pushes the new state onto the stack.
voidoctave_realloc (void *, yy_size_t, yyscan_t yyscanner)
void octave_restart (FILE *input_file, yyscan_t yyscanner)
 Immediately switch to a different input stream.
void octave_set_column (int column_no, yyscan_t yyscanner)
 Set the current column.
void octave_set_debug (int debug_flag, yyscan_t yyscanner)
void octave_set_extra (octave_base_lexer *user_defined, yyscan_t yyscanner)
 Set the user-defined data.
void octave_set_in (FILE *in_str, yyscan_t yyscanner)
 Set the input stream.
void octave_set_lineno (int line_number, yyscan_t yyscanner)
 Set the current line number.
void octave_set_lval (YYSTYPE *yylval_param, yyscan_t yyscanner)
void octave_set_out (FILE *out_str, yyscan_t yyscanner)
static std::string strip_trailing_whitespace (char *s)
static void yy_fatal_error (char msg[], yyscan_t yyscanner)
static void yy_fatal_error (char *msg, yyscan_t yyscanner)
static int yy_get_next_buffer (yyscan_t yyscanner)
static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
static int yy_init_globals (yyscan_t yyscanner)
static yy_state_type yy_try_NUL_trans (yy_state_type current_state, yyscan_t yyscanner)
static void yyunput (int c, char *buf_ptr, yyscan_t yyscanner)
static void yyunput (int c, register char *yy_bp, yyscan_t yyscanner)

Variables

static bool lexer_debug_flag = false
static bool Vdisplay_tokens = false
static unsigned int Vtoken_count = 0
static flex_int16_t yy_accept [358]
static flex_int16_t yy_base [387]
static flex_int16_t yy_chk [1299]
static flex_int16_t yy_def [387]
static flex_int32_t yy_ec [256]
static flex_int32_t yy_meta [49]
static flex_int16_t yy_nxt [1299]

Macro Definition Documentation

#define BEGIN   yyg->yy_start = 1 + 2 *
#define BLOCK_COMMENT_START   4

Definition at line 1090 of file lex.cc.

Referenced by octave_base_lexer::display_start_state(), and octave_lex().

#define CMD_OR_COMPUTED_ASSIGN_OP (   PATTERN,
  TOK 
)
Value:
\
do \
{ \
curr_lexer->lexer_debug (PATTERN); \
if (curr_lexer->previous_token_may_be_command ()) \
{ \
yyless (0); \
curr_lexer->push_start_state (COMMAND_START); \
} \
else \
{ \
return curr_lexer->handle_incompatible_op (PATTERN, TOK, false); \
} \
} \
while (0)

Definition at line 989 of file lex.cc.

Referenced by octave_lex().

#define CMD_OR_OP (   PATTERN,
  TOK,
  COMPAT 
)
Value:
\
do \
{ \
curr_lexer->lexer_debug (PATTERN); \
if (curr_lexer->looks_like_command_arg ()) \
{ \
yyless (0); \
curr_lexer->push_start_state (COMMAND_START); \
} \
else \
{ \
return curr_lexer->handle_op_internal (TOK, false, COMPAT); \
} \
} \
while (0)

Definition at line 971 of file lex.cc.

Referenced by octave_lex().

#define CMD_OR_UNARY_OP (   PATTERN,
  TOK,
  COMPAT 
)

Definition at line 1007 of file lex.cc.

Referenced by octave_lex().

#define COMMAND_START   1

Definition at line 1087 of file lex.cc.

Referenced by octave_base_lexer::display_start_state(), and octave_lex().

#define curr_lexer   yyextra

Definition at line 953 of file lex.cc.

Referenced by octave_lex().

#define DQ_STRING_START   6

Definition at line 1092 of file lex.cc.

Referenced by octave_base_lexer::display_start_state(), and octave_lex().

#define ECHO   do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)

Definition at line 1237 of file lex.cc.

Referenced by octave_lex().

#define EOB_ACT_CONTINUE_SCAN   0

Definition at line 188 of file lex.cc.

Referenced by input(), octave_lex(), and yy_get_next_buffer().

#define EOB_ACT_END_OF_FILE   1

Definition at line 189 of file lex.cc.

Referenced by input(), octave_lex(), and yy_get_next_buffer().

#define EOB_ACT_LAST_MATCH   2

Definition at line 190 of file lex.cc.

Referenced by input(), octave_lex(), and yy_get_next_buffer().

#define FLEX_BETA

Definition at line 20 of file lex.cc.

#define FLEX_SCANNER

Definition at line 15 of file lex.cc.

#define FLEXINT_H

Definition at line 36 of file lex.cc.

#define HANDLE_STRING_CONTINUATION
Value:
do \
{ \
curr_lexer->decrement_promptflag (); \
curr_lexer->input_line_number++; \
curr_lexer->current_input_column = 1; \
if (curr_lexer->is_push_lexer ()) \
{ \
if (curr_lexer->at_end_of_buffer ()) \
return -1; \
if (curr_lexer->at_end_of_file ()) \
return curr_lexer->handle_end_of_input (); \
} \
} \
while (0)

Definition at line 1053 of file lex.cc.

Referenced by octave_lex().

#define INITIAL   0
#define INPUT_FILE_START   3
#define INT16_MAX   (32767)

Definition at line 78 of file lex.cc.

#define INT16_MIN   (-32767-1)

Definition at line 69 of file lex.cc.

#define INT32_MAX   (2147483647)

Definition at line 81 of file lex.cc.

#define INT32_MIN   (-2147483647-1)

Definition at line 72 of file lex.cc.

#define INT8_MAX   (127)

Definition at line 75 of file lex.cc.

#define INT8_MIN   (-128)

Definition at line 66 of file lex.cc.

#define LINE_COMMENT_START   5

Definition at line 1091 of file lex.cc.

Referenced by octave_base_lexer::display_start_state(), and octave_lex().

#define MATRIX_START   2

Definition at line 1088 of file lex.cc.

Referenced by octave_base_lexer::display_start_state(), and octave_lex().

#define octave_wrap (   n)    1

Definition at line 343 of file lex.cc.

Referenced by input(), and octave_lex().

#define OCTAVE_YYG   struct yyguts_t *yyg = static_cast<struct yyguts_t*> (scanner)
#define REJECT   reject_used_but_not_detected

Definition at line 849 of file lex.cc.

#define SQ_STRING_START   7

Definition at line 1093 of file lex.cc.

Referenced by octave_base_lexer::display_start_state(), and octave_lex().

#define UINT16_MAX   (65535U)

Definition at line 87 of file lex.cc.

#define UINT32_MAX   (4294967295U)

Definition at line 90 of file lex.cc.

#define UINT8_MAX   (255U)

Definition at line 84 of file lex.cc.

#define unput (   c)    yyunput( c, yyg->yytext_ptr , yyscanner )

Definition at line 208 of file lex.cc.

Referenced by octave_lex().

#define YY_AT_BOL ( )    (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)

Definition at line 339 of file lex.cc.

Referenced by octave_lex(), and yy_get_previous_state().

#define YY_BREAK   break;

Definition at line 1318 of file lex.cc.

Referenced by octave_lex().

#define YY_BUF_SIZE   16384

Definition at line 175 of file lex.cc.

Referenced by octave_lex(), and octave_restart().

#define YY_BUFFER_EOF_PENDING   2

Definition at line 275 of file lex.cc.

Referenced by yy_get_next_buffer().

#define YY_BUFFER_NEW   0

Definition at line 263 of file lex.cc.

Referenced by octave__flush_buffer(), octave__scan_buffer(), and octave_lex().

#define YY_BUFFER_NORMAL   1

Definition at line 264 of file lex.cc.

Referenced by octave_lex().

#define YY_CURRENT_BUFFER
#define YY_CURRENT_BUFFER_LVALUE   yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
#define YY_DECL
Value:
(YYSTYPE * yylval_param , yyscan_t yyscanner)

Definition at line 1305 of file lex.cc.

#define YY_DECL_IS_OURS   1

Definition at line 1300 of file lex.cc.

#define YY_DO_BEFORE_ACTION
Value:
yyg->yytext_ptr = yy_bp; \
yyleng = (size_t) (yy_cp - yy_bp); \
yyg->yy_hold_char = *yy_cp; \
*yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp;

Definition at line 360 of file lex.cc.

Referenced by octave_lex().

#define YY_END_OF_BUFFER   120

Definition at line 368 of file lex.cc.

Referenced by octave_lex().

#define YY_END_OF_BUFFER_CHAR   0
#define YY_EXIT_FAILURE   2

Definition at line 3900 of file lex.cc.

Referenced by yy_fatal_error().

#define YY_EXTRA_TYPE   octave_base_lexer *

Definition at line 952 of file lex.cc.

#define YY_FATAL_ERROR (   msg)    (octave_get_extra (yyscanner))->fatal_error (msg)
#define yy_flex_debug   yyg->yy_flex_debug_r

Definition at line 143 of file lex.cc.

Referenced by octave_get_debug(), and octave_set_debug().

#define YY_FLEX_MAJOR_VERSION   2

Definition at line 16 of file lex.cc.

#define YY_FLEX_MINOR_VERSION   5

Definition at line 17 of file lex.cc.

#define YY_FLEX_SUBMINOR_VERSION   35

Definition at line 18 of file lex.cc.

#define YY_FLUSH_BUFFER   octave__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)

Definition at line 307 of file lex.cc.

#define YY_INPUT (   buf,
  result,
  max_size 
)    result = curr_lexer->fill_flex_buffer (buf, max_size)

Definition at line 960 of file lex.cc.

Referenced by yy_get_next_buffer().

#define YY_INT_ALIGNED   short int

Definition at line 11 of file lex.cc.

#define YY_LESS_LINENO (   n)

Definition at line 192 of file lex.cc.

#define YY_MORE_ADJ   0

Definition at line 851 of file lex.cc.

Referenced by octave_lex(), yy_get_next_buffer(), and yy_get_previous_state().

#define yy_new_buffer   octave__create_buffer

Definition at line 317 of file lex.cc.

#define YY_NEW_FILE   octave_restart(yyin ,yyscanner )

Definition at line 162 of file lex.cc.

Referenced by input(), and octave_lex().

#define YY_NULL   0

Definition at line 119 of file lex.cc.

Referenced by octave_lexer::fill_flex_buffer(), and octave_push_lexer::fill_flex_buffer().

#define YY_NUM_RULES   119

Definition at line 367 of file lex.cc.

#define YY_READ_BUF_SIZE   8192

Definition at line 1228 of file lex.cc.

Referenced by yy_get_next_buffer().

#define YY_RESTORE_YY_MORE_OFFSET

Definition at line 852 of file lex.cc.

Referenced by octave_lex().

#define YY_RULE_SETUP
Value:
if ( yyleng > 0 ) \
YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
(yytext[yyleng - 1] == '\n'); \
YY_USER_ACTION

Definition at line 1321 of file lex.cc.

Referenced by octave_lex().

#define YY_SC_TO_UI (   c)    ((unsigned int) (unsigned char) c)

Definition at line 126 of file lex.cc.

Referenced by octave_lex(), and yy_get_previous_state().

#define yy_set_bol (   at_bol)
Value:
{ \
if ( ! YY_CURRENT_BUFFER ){\
octave_ensure_buffer_stack (yyscanner); \
YY_CURRENT_BUFFER_LVALUE = \
octave__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
} \
YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
}

Definition at line 329 of file lex.cc.

#define yy_set_interactive (   is_interactive)
Value:
{ \
if ( ! YY_CURRENT_BUFFER ){ \
octave_ensure_buffer_stack (yyscanner); \
YY_CURRENT_BUFFER_LVALUE = \
octave__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
} \
YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
}

Definition at line 319 of file lex.cc.

#define YY_SKIP_YYWRAP

Definition at line 344 of file lex.cc.

#define YY_START   ((yyg->yy_start - 1) / 2)

Definition at line 155 of file lex.cc.

Referenced by octave_lex().

#define YY_START_STACK_INCR   25

Definition at line 1286 of file lex.cc.

#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))

Definition at line 181 of file lex.cc.

#define YY_STATE_EOF (   state)    (YY_END_OF_BUFFER + state + 1)

Definition at line 159 of file lex.cc.

Referenced by octave_lex().

#define YY_STRUCT_YY_BUFFER_STATE

Definition at line 216 of file lex.cc.

#define YY_TYPEDEF_YY_BUFFER_STATE

Definition at line 184 of file lex.cc.

#define YY_TYPEDEF_YY_SCANNER_T

Definition at line 130 of file lex.cc.

#define YY_TYPEDEF_YY_SIZE_T

Definition at line 211 of file lex.cc.

#define YY_USER_ACTION

Definition at line 1313 of file lex.cc.

#define yycolumn   (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)

Definition at line 142 of file lex.cc.

Referenced by octave_get_column(), and octave_set_column().

#define yyconst

Definition at line 115 of file lex.cc.

#define yyextra   yyg->yyextra_r

Definition at line 138 of file lex.cc.

Referenced by octave_get_extra(), and octave_set_extra().

#define yyin   yyg->yyin_r
#define yyleng   yyg->yyleng_r

Definition at line 139 of file lex.cc.

Referenced by octave_get_leng(), and octave_lex().

#define yyless (   n)
Value:
do \
{ \
/* Undo effects of setting up yytext. */ \
int yyless_macro_arg = (n); \
YY_LESS_LINENO(yyless_macro_arg);\
*yy_cp = yyg->yy_hold_char; \
YY_RESTORE_YY_MORE_OFFSET \
yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
YY_DO_BEFORE_ACTION; /* set up yytext again */ \
} \
while ( 0 )

Definition at line 3912 of file lex.cc.

#define yyless (   n)
Value:
do \
{ \
/* Undo effects of setting up yytext. */ \
int yyless_macro_arg = (n); \
YY_LESS_LINENO(yyless_macro_arg);\
yytext[yyleng] = yyg->yy_hold_char; \
yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
yyg->yy_hold_char = *yyg->yy_c_buf_p; \
*yyg->yy_c_buf_p = '\0'; \
yyleng = yyless_macro_arg; \
} \
while ( 0 )

Definition at line 3912 of file lex.cc.

#define yylineno   (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)

Definition at line 141 of file lex.cc.

Referenced by octave_get_lineno(), and octave_set_lineno().

#define yylval   yyg->yylval_r

Definition at line 1147 of file lex.cc.

Referenced by octave_get_lval(), octave_lex(), and octave_set_lval().

#define yymore ( )    yymore_used_but_not_detected

Definition at line 850 of file lex.cc.

#define yyout   yyg->yyout_r

Definition at line 137 of file lex.cc.

Referenced by octave_get_out(), octave_lex(), octave_set_out(), and yy_init_globals().

#define YYSTATE   YY_START

Definition at line 156 of file lex.cc.

#define YYTABLES_NAME   "yytables"

Definition at line 4257 of file lex.cc.

#define yyterminate ( )    return YY_NULL

Definition at line 1281 of file lex.cc.

#define yytext   yyg->yytext_r

Definition at line 140 of file lex.cc.

Referenced by octave_get_text(), and octave_lex().

#define yytext_ptr   yytext_r

Definition at line 350 of file lex.cc.

Typedef Documentation

typedef short int flex_int16_t

Definition at line 58 of file lex.cc.

typedef int flex_int32_t

Definition at line 59 of file lex.cc.

typedef signed char flex_int8_t

Definition at line 57 of file lex.cc.

typedef unsigned short int flex_uint16_t

Definition at line 61 of file lex.cc.

typedef unsigned int flex_uint32_t

Definition at line 62 of file lex.cc.

typedef unsigned char flex_uint8_t

Definition at line 60 of file lex.cc.

Definition at line 185 of file lex.cc.

typedef unsigned char YY_CHAR

Definition at line 346 of file lex.cc.

typedef size_t yy_size_t

Definition at line 212 of file lex.cc.

typedef int yy_state_type

Definition at line 348 of file lex.cc.

typedef void* yyscan_t

Definition at line 131 of file lex.cc.

Function Documentation

DEFUN ( iskeyword  ,
args   
)
DEFUN ( __display_tokens__  ,
args  ,
nargout   
)

Definition at line 4494 of file lex.cc.

References SET_INTERNAL_VARIABLE.

DEFUN ( __token_count__  )

Definition at line 4504 of file lex.cc.

References octave_value(), and Vtoken_count.

DEFUN ( __lexer_debug_flag__  ,
args  ,
nargout   
)

Definition at line 4513 of file lex.cc.

References lexer_debug_flag, and set_internal_variable().

static void display_character ( char  c)
static

Definition at line 4264 of file lex.cc.

Referenced by octave_base_lexer::text_yyinput(), and octave_base_lexer::xunput().

static int input ( yyscan_t  yyscanner)
static
bool is_keyword ( const std::string &  s)

Definition at line 4410 of file lex.cc.

References octave_kw_hash::in_word_set().

Referenced by DEFUN(), Fisvarname(), read_mat_ascii_data(), and symbol_exist().

int isatty ( int  )
static bool looks_like_copyright ( const std::string &  s)
static

Definition at line 4672 of file lex.cc.

Referenced by octave_base_lexer::finish_comment().

static bool looks_like_hex ( const char s,
int  len 
)
inlinestatic

Definition at line 5168 of file lex.cc.

Referenced by octave_base_lexer::handle_number().

YY_BUFFER_STATE octave__create_buffer ( FILE *  file,
int  size,
yyscan_t  yyscanner 
)

Allocate and initialize an input buffer state.

Parameters
fileA readable stream.
sizeThe character buffer size in bytes. When in doubt, use YY_BUF_SIZE.
yyscannerThe scanner object.
Returns
the allocated buffer state.

Definition at line 3607 of file lex.cc.

References octave__init_buffer(), octave_alloc(), size(), yy_buffer_state::yy_buf_size, yy_buffer_state::yy_ch_buf, YY_FATAL_ERROR, and yy_buffer_state::yy_is_our_buffer.

Referenced by octave_lex(), and octave_restart().

void octave__delete_buffer ( YY_BUFFER_STATE  b,
yyscan_t  yyscanner 
)

Destroy the buffer.

Parameters
ba buffer created with octave__create_buffer()
yyscannerThe scanner object.

Definition at line 3635 of file lex.cc.

References octave_free(), yy_buffer_state::yy_ch_buf, YY_CURRENT_BUFFER, YY_CURRENT_BUFFER_LVALUE, and yy_buffer_state::yy_is_our_buffer.

Referenced by octave_lex_destroy(), and octave_pop_buffer_state().

void octave__flush_buffer ( YY_BUFFER_STATE  b,
yyscan_t  yyscanner 
)

Discard all buffered characters.

On the next scan, YY_INPUT will be called.

Parameters
bthe buffer state to be flushed, usually YY_CURRENT_BUFFER.
yyscannerThe scanner object.

Definition at line 3688 of file lex.cc.

References octave__load_buffer_state(), yy_buffer_state::yy_at_bol, yy_buffer_state::yy_buf_pos, YY_BUFFER_NEW, yy_buffer_state::yy_buffer_status, yy_buffer_state::yy_ch_buf, YY_CURRENT_BUFFER, YY_END_OF_BUFFER_CHAR, and yy_buffer_state::yy_n_chars.

Referenced by octave__init_buffer().

static void octave__init_buffer ( YY_BUFFER_STATE  b,
FILE *  file,
yyscan_t  yyscanner 
)
static
static void octave__load_buffer_state ( yyscan_t  yyscanner)
static
YY_BUFFER_STATE octave__scan_buffer ( char base,
yy_size_t  size,
yyscan_t  yyscanner 
)

Setup the input buffer state to scan directly from a user-specified character buffer.

Parameters
basethe character buffer
sizethe size in bytes of the character buffer
yyscannerThe scanner object.
Returns
the newly allocated buffer state object.

Definition at line 3819 of file lex.cc.

References octave__switch_to_buffer(), octave_alloc(), yy_buffer_state::yy_at_bol, yy_buffer_state::yy_buf_pos, yy_buffer_state::yy_buf_size, YY_BUFFER_NEW, yy_buffer_state::yy_buffer_status, yy_buffer_state::yy_ch_buf, YY_END_OF_BUFFER_CHAR, YY_FATAL_ERROR, yy_buffer_state::yy_fill_buffer, yy_buffer_state::yy_input_file, yy_buffer_state::yy_is_interactive, yy_buffer_state::yy_is_our_buffer, and yy_buffer_state::yy_n_chars.

Referenced by octave__scan_bytes().

YY_BUFFER_STATE octave__scan_bytes ( char yybytes,
int  _yybytes_len,
yyscan_t  yyscanner 
)

Setup the input buffer state to scan the given bytes.

The next call to octave_lex() will scan from a copy of bytes.

Parameters
yybytesthe byte buffer to scan
_yybytes_lenthe number of bytes in the buffer pointed to by bytes.
yyscannerThe scanner object.
Returns
the newly allocated buffer state object.

Definition at line 3869 of file lex.cc.

References octave__scan_buffer(), octave_alloc(), YY_END_OF_BUFFER_CHAR, YY_FATAL_ERROR, and yy_buffer_state::yy_is_our_buffer.

Referenced by octave__scan_string().

YY_BUFFER_STATE octave__scan_string ( char yystr,
yyscan_t  yyscanner 
)

Setup the input buffer state to scan a string.

The next call to octave_lex() will scan from a copy of str.

Parameters
yystra NUL-terminated string to scan
yyscannerThe scanner object.
Returns
the newly allocated buffer state object.
Note
If you want to scan bytes that may contain NUL values, then use octave__scan_bytes() instead.

Definition at line 3856 of file lex.cc.

References octave__scan_bytes().

void octave__switch_to_buffer ( YY_BUFFER_STATE  new_buffer,
yyscan_t  yyscanner 
)

Switch to a different input buffer.

Parameters
new_bufferThe new input buffer.
yyscannerThe scanner object.

Definition at line 3560 of file lex.cc.

References octave__load_buffer_state(), octave_ensure_buffer_stack(), yyguts_t::yy_c_buf_p, YY_CURRENT_BUFFER, YY_CURRENT_BUFFER_LVALUE, yyguts_t::yy_did_buffer_switch_on_eof, yyguts_t::yy_hold_char, and yyguts_t::yy_n_chars.

Referenced by octave__scan_buffer().

void * octave_alloc ( yy_size_t  size,
yyscan_t  yyscanner 
)
static void octave_ensure_buffer_stack ( yyscan_t  yyscanner)
static
void octave_free ( void ptr,
yyscan_t  yyscanner 
)

Definition at line 4252 of file lex.cc.

Referenced by octave__delete_buffer(), and octave_lex_destroy().

int octave_get_column ( yyscan_t  yyscanner)

Get the current column number.

Parameters
yyscannerThe scanner object.

Definition at line 3953 of file lex.cc.

References YY_CURRENT_BUFFER, and yycolumn.

int octave_get_debug ( yyscan_t  yyscanner)

Definition at line 4058 of file lex.cc.

References yy_flex_debug.

octave_base_lexer * octave_get_extra ( yyscan_t  yyscanner)

Get the user-defined data for this scanner.

Parameters
yyscannerThe scanner object.

Definition at line 3931 of file lex.cc.

References yyextra.

FILE * octave_get_in ( yyscan_t  yyscanner)

Get the input stream.

Parameters
yyscannerThe scanner object.

Definition at line 3966 of file lex.cc.

References yyin.

int octave_get_leng ( yyscan_t  yyscanner)

Get the length of the current token.

Parameters
yyscannerThe scanner object.

Definition at line 3984 of file lex.cc.

References yyleng.

Referenced by octave_base_lexer::flex_yyleng().

int octave_get_lineno ( yyscan_t  yyscanner)

Get the current line number.

Parameters
yyscannerThe scanner object.

Definition at line 3940 of file lex.cc.

References YY_CURRENT_BUFFER, and yylineno.

YYSTYPE * octave_get_lval ( yyscan_t  yyscanner)

Definition at line 4072 of file lex.cc.

References yylval.

Referenced by octave_base_lexer::current_token(), and octave_base_lexer::push_token().

FILE * octave_get_out ( yyscan_t  yyscanner)

Get the output stream.

Parameters
yyscannerThe scanner object.

Definition at line 3975 of file lex.cc.

References yyout.

char * octave_get_text ( yyscan_t  yyscanner)

Get the current token.

Parameters
yyscannerThe scanner object.

Definition at line 3994 of file lex.cc.

References yytext.

Referenced by octave_base_lexer::flex_yytext().

int octave_lex ( YYSTYPE yylval_param,
yyscan_t  yyscanner 
)

The main scanner function which does all the work.

Definition at line 1329 of file lex.cc.

References ADD_EQ, AND_EQ, octave_comment_elt::block, BLOCK_COMMENT_START, CMD_OR_COMPUTED_ASSIGN_OP, CMD_OR_OP, CMD_OR_UNARY_OP, COMMAND_START, curr_lexer, DIV_EQ, DQ_STRING, DQ_STRING_START, ECHO, EDIV, EDIV_EQ, ELEFTDIV, ELEFTDIV_EQ, EMINUS, EMUL, EMUL_EQ, octave_comment_elt::end_of_line, EOB_ACT_CONTINUE_SCAN, EOB_ACT_END_OF_FILE, EOB_ACT_LAST_MATCH, EPLUS, EPOW, EPOW_EQ, error(), EXPR_AND, EXPR_AND_AND, EXPR_EQ, EXPR_GE, EXPR_GT, EXPR_LE, EXPR_LT, EXPR_NE, EXPR_NOT, EXPR_OR, EXPR_OR_OR, octave_comment_elt::full_line, HANDLE_STRING_CONTINUATION, HERMITIAN, IMAG_NUM, INITIAL, INPUT_FILE, INPUT_FILE_START, LEFTDIV, LEFTDIV_EQ, LEXICAL_ERROR, LINE_COMMENT_START, LSHIFT, LSHIFT_EQ, MATRIX_START, METAQUERY, MINUS_MINUS, MUL_EQ, NUM, octave__create_buffer(), octave__load_buffer_state(), octave_ensure_buffer_stack(), octave_wrap, OR_EQ, PLUS_PLUS, POW, POW_EQ, RSHIFT, RSHIFT_EQ, SQ_STRING, SQ_STRING_START, strip_trailing_whitespace(), SUB_EQ, SUPERCLASSREF, TRANSPOSE, undo_string_escape(), unput, warning_with_id(), yy_accept, YY_AT_BOL, yy_base, YY_BREAK, YY_BUF_SIZE, YY_BUFFER_NEW, YY_BUFFER_NORMAL, yyguts_t::yy_c_buf_p, yy_chk, YY_CURRENT_BUFFER, YY_CURRENT_BUFFER_LVALUE, yy_def, yyguts_t::yy_did_buffer_switch_on_eof, YY_DO_BEFORE_ACTION, yy_ec, YY_END_OF_BUFFER, YY_FATAL_ERROR, yy_get_next_buffer(), yy_get_previous_state(), yyguts_t::yy_hold_char, yyguts_t::yy_init, yyguts_t::yy_last_accepting_cpos, yyguts_t::yy_last_accepting_state, yy_meta, YY_MORE_ADJ, yyguts_t::yy_n_chars, YY_NEW_FILE, yy_nxt, YY_RESTORE_YY_MORE_OFFSET, YY_RULE_SETUP, YY_SC_TO_UI, YY_START, yyguts_t::yy_start, YY_STATE_EOF, yy_try_NUL_trans(), yyin, yyleng, yyless, yylval, yyout, and yytext.

int octave_lex_destroy ( yyscan_t  yyscanner)
int octave_lex_init ( yyscan_t scanner)

Definition at line 4091 of file lex.cc.

References octave_alloc(), and yy_init_globals().

Referenced by octave_base_lexer::init().

int octave_lex_init_extra ( octave_base_lexer user_defined,
yyscan_t scanner 
)

Definition at line 4120 of file lex.cc.

References octave_alloc(), octave_set_extra(), and yy_init_globals().

void octave_pop_buffer_state ( yyscan_t  yyscanner)

Removes and deletes the top of the stack, if present.

The next element becomes the new top.

Parameters
yyscannerThe scanner object.

Definition at line 3749 of file lex.cc.

References octave__delete_buffer(), octave__load_buffer_state(), yyguts_t::yy_buffer_stack_top, YY_CURRENT_BUFFER, YY_CURRENT_BUFFER_LVALUE, and yyguts_t::yy_did_buffer_switch_on_eof.

Referenced by octave_lex_destroy().

void octave_push_buffer_state ( YY_BUFFER_STATE  new_buffer,
yyscan_t  yyscanner 
)

Pushes the new state onto the stack.

The new state becomes the current state. This function will allocate the stack if necessary.

Parameters
new_bufferThe new state.
yyscannerThe scanner object.

Definition at line 3718 of file lex.cc.

References octave__load_buffer_state(), octave_ensure_buffer_stack(), yyguts_t::yy_buffer_stack_top, yyguts_t::yy_c_buf_p, YY_CURRENT_BUFFER, YY_CURRENT_BUFFER_LVALUE, yyguts_t::yy_did_buffer_switch_on_eof, yyguts_t::yy_hold_char, and yyguts_t::yy_n_chars.

void * octave_realloc ( void ptr,
yy_size_t  size,
yyscan_t  yyscanner 
)

Definition at line 4240 of file lex.cc.

Referenced by octave_ensure_buffer_stack(), and yy_get_next_buffer().

void octave_restart ( FILE *  input_file,
yyscan_t  yyscanner 
)

Immediately switch to a different input stream.

Parameters
input_fileA readable stream.
yyscannerThe scanner object.
Note
This function does not reset the start condition to INITIAL .

Definition at line 3542 of file lex.cc.

References octave__create_buffer(), octave__init_buffer(), octave__load_buffer_state(), octave_ensure_buffer_stack(), YY_BUF_SIZE, YY_CURRENT_BUFFER, YY_CURRENT_BUFFER_LVALUE, and yyin.

Referenced by input(), octave_base_lexer::reset(), and yy_get_next_buffer().

void octave_set_column ( int  column_no,
yyscan_t  yyscanner 
)

Set the current column.

Parameters
line_number
yyscannerThe scanner object.

Definition at line 4029 of file lex.cc.

References YY_CURRENT_BUFFER, yy_fatal_error(), and yycolumn.

void octave_set_debug ( int  debug_flag,
yyscan_t  yyscanner 
)

Definition at line 4064 of file lex.cc.

References yy_flex_debug.

void octave_set_extra ( octave_base_lexer user_defined,
yyscan_t  yyscanner 
)

Set the user-defined data.

This data is never touched by the scanner.

Parameters
user_definedThe data to be associated with this scanner.
yyscannerThe scanner object.

Definition at line 4004 of file lex.cc.

References yyextra.

Referenced by octave_base_lexer::init(), and octave_lex_init_extra().

void octave_set_in ( FILE *  in_str,
yyscan_t  yyscanner 
)

Set the input stream.

This does not discard the current input buffer.

Parameters
in_strA readable stream.
yyscannerThe scanner object.
See Also
octave__switch_to_buffer

Definition at line 4046 of file lex.cc.

References yyin.

void octave_set_lineno ( int  line_number,
yyscan_t  yyscanner 
)

Set the current line number.

Parameters
line_number
yyscannerThe scanner object.

Definition at line 4014 of file lex.cc.

References YY_CURRENT_BUFFER, yy_fatal_error(), and yylineno.

void octave_set_lval ( YYSTYPE yylval_param,
yyscan_t  yyscanner 
)

Definition at line 4078 of file lex.cc.

References yylval.

void octave_set_out ( FILE *  out_str,
yyscan_t  yyscanner 
)

Definition at line 4052 of file lex.cc.

References yyout.

static std::string strip_trailing_whitespace ( char s)
static
static void yy_fatal_error ( char  msg[],
yyscan_t  yyscanner 
)
static
static void yy_fatal_error ( char msg,
yyscan_t  yyscanner 
)
static

Definition at line 3903 of file lex.cc.

References void(), and YY_EXIT_FAILURE.

static int yy_get_next_buffer ( yyscan_t  yyscanner)
static
static yy_state_type yy_get_previous_state ( yyscan_t  yyscanner)
static
static int yy_init_globals ( yyscan_t  yyscanner)
static
static yy_state_type yy_try_NUL_trans ( yy_state_type  current_state,
yyscan_t  yyscanner 
)
static
static void yyunput ( int  c,
char buf_ptr,
yyscan_t  yyscanner 
)
static
static void yyunput ( int  c,
register char yy_bp,
yyscan_t  yyscanner 
)
static

Variable Documentation

bool lexer_debug_flag = false
static
bool Vdisplay_tokens = false
static

Definition at line 1072 of file lex.cc.

Referenced by octave_base_lexer::show_token().

unsigned int Vtoken_count = 0
static

Definition at line 1074 of file lex.cc.

Referenced by octave_base_lexer::count_token_internal(), and DEFUN().

flex_int16_t yy_accept[358]
static

Definition at line 376 of file lex.cc.

Referenced by octave_lex(), yy_get_previous_state(), and yy_try_NUL_trans().

flex_int16_t yy_base[387]
static

Definition at line 460 of file lex.cc.

Referenced by octave_lex(), yy_get_previous_state(), and yy_try_NUL_trans().

flex_int16_t yy_chk[1299]
static

Definition at line 699 of file lex.cc.

Referenced by octave_lex(), yy_get_previous_state(), and yy_try_NUL_trans().

flex_int16_t yy_def[387]
static

Definition at line 506 of file lex.cc.

Referenced by octave_lex(), yy_get_previous_state(), and yy_try_NUL_trans().

flex_int32_t yy_ec[256]
static

Definition at line 419 of file lex.cc.

Referenced by octave_lex(), and yy_get_previous_state().

flex_int32_t yy_meta[49]
static
Initial value:
{ 0,
1, 1, 2, 3, 1, 4, 1, 5, 1, 6,
1, 1, 1, 1, 7, 1, 8, 1, 9, 9,
9, 1, 7, 1, 1, 1, 1, 10, 11, 11,
5, 5, 1, 4, 1, 1, 11, 11, 11, 5,
5, 5, 5, 5, 1, 1, 1, 1
}

Definition at line 451 of file lex.cc.

Referenced by octave_lex(), yy_get_previous_state(), and yy_try_NUL_trans().

flex_int16_t yy_nxt[1299]
static

Definition at line 552 of file lex.cc.

Referenced by octave_lex(), yy_get_previous_state(), and yy_try_NUL_trans().