Mercurial > octave
annotate libinterp/parse-tree/lex.ll @ 24534:194eb4bd202b
maint: Update punctuation for GPL v3 license text.
* COPYING, Makefile.am, README,
bootstrap, bootstrap.conf, OctJavaQry.java, changelog.tmpl,
check-subst-vars.in.sh, find-defun-files.sh, find-files-with-tests.sh,
get-source-mtime.sh, mk-hg-id.sh, mk-octave-config-h.sh, mk-opts.pl,
stl_algo.h-fixed, subst-config-vals.in.sh, subst-cross-config-vals.in.sh,
subst-default-vals.in.sh, subst-script-vals.in.sh, configure.ac,
Doxyfile.in, arith.txi, audio.txi, basics.txi, bugs.txi, config-images.sh,
container.txi, cp-idx.txi, data.txi, debug.txi, diagperm.txi, diffeq.txi,
add_to_aspell_dict, mk_undocumented_list, spellcheck, errors.txi, eval.txi,
expr.txi, external.txi, fn-idx.txi, func.txi, genpropdoc.m, geometry.txi,
geometryimages.m, grammar.txi, gui.txi, image.txi, images.awk, install.txi,
interp.txi, interpimages.m, intro.txi, io.txi, linalg.txi, macros.texi,
matrix.txi, mk-doc-cache.pl, mkcontrib.awk, mkoctfile.1, munge-texi.pl,
nonlin.txi, numbers.txi, obsolete.txi, octave-cli.1, octave-config.1, octave.1,
octave.css, octave.texi, oop.txi, op-idx.txi, optim.txi, package.txi, plot.txi,
plotimages.m, poly.txi, preface.txi, quad.txi, set.txi, signal.txi, sparse.txi,
sparseimages.m, splineimages.m, stats.txi, stmt.txi, strings.txi, system.txi,
testfun.txi, var.txi, vectorize.txi, array.texi, bugs.texi, cp-idx.texi,
dae.texi, diffeq.texi, error.texi, factor.texi, fn-idx.texi, gpl.texi,
install.texi, intro.texi, liboctave.texi, matvec.texi, nleqn.texi, nlfunc.texi,
ode.texi, optim.texi, preface.texi, quad.texi, range.texi, refcard-a4.tex,
refcard-legal.tex, refcard-letter.tex, refcard.tex, HACKING.md,
octave.appdata.xml.in, Backend.cc, Backend.h, BaseControl.cc, BaseControl.h,
ButtonControl.cc, ButtonControl.h, ButtonGroup.cc, ButtonGroup.h, Canvas.cc,
Canvas.h, CheckBoxControl.cc, CheckBoxControl.h, Container.cc, Container.h,
ContextMenu.cc, ContextMenu.h, EditControl.cc, EditControl.h, Figure.cc,
Figure.h, FigureWindow.cc, FigureWindow.h, GLCanvas.cc, GLCanvas.h,
GenericEventNotify.h, KeyMap.cc, KeyMap.h, ListBoxControl.cc, ListBoxControl.h,
Logger.cc, Logger.h, Menu.cc, Menu.h, MenuContainer.h, MouseModeActionGroup.cc,
MouseModeActionGroup.h, Object.cc, Object.h, ObjectFactory.cc, ObjectFactory.h,
ObjectProxy.cc, ObjectProxy.h, Panel.cc, Panel.h, PopupMenuControl.cc,
PopupMenuControl.h, PushButtonControl.cc, PushButtonControl.h, PushTool.cc,
PushTool.h, QtHandlesUtils.cc, QtHandlesUtils.h, RadioButtonControl.cc,
RadioButtonControl.h, SliderControl.cc, SliderControl.h, TextControl.cc,
TextControl.h, TextEdit.cc, TextEdit.h, ToggleButtonControl.cc,
ToggleButtonControl.h, ToggleTool.cc, ToggleTool.h, ToolBar.cc, ToolBar.h,
ToolBarButton.cc, ToolBarButton.h, __init_qt__.cc, __init_qt__.h,
annotation-dialog.cc, annotation-dialog.h, gl-select.cc, gl-select.h,
liboctgui-build-info.h, liboctgui-build-info.in.cc,
mk-default-qt-settings.in.sh, QTerminal.cc, QTerminal.h, BlockArray.cpp,
BlockArray.h, Character.h, CharacterColor.h, Emulation.cpp, Emulation.h,
Filter.cpp, Filter.h, History.cpp, History.h, KeyboardTranslator.cpp,
KeyboardTranslator.h, QUnixTerminalImpl.cpp, QUnixTerminalImpl.h, Screen.cpp,
Screen.h, ScreenWindow.cpp, ScreenWindow.h, SelfListener.cpp, SelfListener.h,
TerminalCharacterDecoder.cpp, TerminalCharacterDecoder.h, TerminalModel.cpp,
TerminalModel.h, TerminalView.cpp, TerminalView.h, Vt102Emulation.cpp,
Vt102Emulation.h, kpty.cpp, kpty.h, kpty_p.h, QTerminalColors.cpp,
QTerminalColors.h, QWinTerminalImpl.cpp, QWinTerminalImpl.h, main.cpp,
color-picker.cc, color-picker.h, dialog.cc, dialog.h,
documentation-dock-widget.cc, documentation-dock-widget.h,
external-editor-interface.cc, external-editor-interface.h,
files-dock-widget.cc, files-dock-widget.h, find-files-dialog.cc,
find-files-dialog.h, find-files-model.cc, find-files-model.h,
history-dock-widget.cc, history-dock-widget.h, file-editor-interface.h,
file-editor-tab.cc, file-editor-tab.h, file-editor.cc, file-editor.h,
find-dialog.cc, find-dialog.h, marker.cc, marker.h, octave-qscintilla.cc,
octave-qscintilla.h, octave-txt-lexer.cc, octave-txt-lexer.h, main-window.cc,
main-window.h, octave-cmd.cc, octave-cmd.h, octave-dock-widget.cc,
octave-dock-widget.h, octave-gui.cc, octave-gui.h, octave-qt-link.cc,
octave-qt-link.h, octave-settings.h, texinfo-parser.cc, texinfo-parser.h,
webinfo.cc, webinfo.h, resource-manager.cc, resource-manager.h,
settings-dialog.cc, settings-dialog.h, shortcut-manager.cc, shortcut-manager.h,
terminal-dock-widget.cc, terminal-dock-widget.h, thread-manager.cc,
thread-manager.h, variable-editor-model.cc, variable-editor-model.h,
variable-editor.cc, variable-editor.h, welcome-wizard.cc, welcome-wizard.h,
workspace-model.cc, workspace-model.h, workspace-view.cc, workspace-view.h,
build-env.h, build-env.in.cc, builtins.h, Cell.cc, Cell.h, __contourc__.cc,
__dsearchn__.cc, __ichol__.cc, __ilu__.cc, __lin_interpn__.cc, __luinc__.cc,
__magick_read__.cc, __pchip_deriv__.cc, __qp__.cc, balance.cc,
base-text-renderer.h, besselj.cc, betainc.cc, bitfcns.cc, bsxfun.cc,
c-file-ptr-stream.cc, c-file-ptr-stream.h, call-stack.cc, call-stack.h,
cdisplay.c, cdisplay.h, cellfun.cc, coct-hdf5-types.c, colloc.cc, conv2.cc,
daspk.cc, dasrt.cc, dassl.cc, data.cc, data.h, debug.cc, default-defs.in.h,
defaults.cc, defaults.h, defun-dld.h, defun-int.h, defun.cc, defun.h, det.cc,
dirfns.cc, dirfns.h, display.cc, display.h, dlmread.cc, dot.cc, dynamic-ld.cc,
dynamic-ld.h, eig.cc, ellipj.cc, environment.cc, environment.h, error.cc,
error.h, errwarn.cc, errwarn.h, event-queue.cc, event-queue.h, fcn-info.cc,
fcn-info.h, fft.cc, fft2.cc, fftn.cc, file-io.cc, file-io.h, filter.cc,
find.cc, ft-text-renderer.cc, ft-text-renderer.h, gammainc.cc, gcd.cc,
genprops.awk, getgrent.cc, getpwent.cc, getrusage.cc, givens.cc, gl-render.cc,
gl-render.h, gl2ps-print.cc, gl2ps-print.h, graphics-handle.h,
graphics-toolkit.cc, graphics-toolkit.h, graphics.cc, graphics.in.h, gripes.cc,
gripes.h, gsvd.cc, gtk-manager.cc, gtk-manager.h, hash.cc, help.cc, help.h,
hess.cc, hex2num.cc, hook-fcn.cc, hook-fcn.h, input.cc, input.h,
interpreter-private.cc, interpreter-private.h, interpreter.cc, interpreter.h,
inv.cc, kron.cc, load-path.cc, load-path.h, load-save.cc, load-save.h,
lookup.cc, ls-ascii-helper.cc, ls-ascii-helper.h, ls-hdf5.cc, ls-hdf5.h,
ls-mat-ascii.cc, ls-mat-ascii.h, ls-mat4.cc, ls-mat4.h, ls-mat5.cc, ls-mat5.h,
ls-oct-binary.cc, ls-oct-binary.h, ls-oct-text.cc, ls-oct-text.h, ls-utils.cc,
ls-utils.h, lsode.cc, lu.cc, mappers.cc, matrix_type.cc, max.cc, mex.cc, mex.h,
mexproto.h, mgorth.cc, mk-errno-list.sh, mk-mxarray-h.in.sh, mxarray.in.h,
nproc.cc, oct-errno.h, oct-errno.in.cc, oct-fstrm.cc, oct-fstrm.h,
oct-handle.h, oct-hdf5-types.cc, oct-hdf5-types.h, oct-hdf5.h, oct-hist.cc,
oct-hist.h, oct-iostrm.cc, oct-iostrm.h, oct-map.cc, oct-map.h, oct-obj.h,
oct-opengl.h, oct-prcstrm.cc, oct-prcstrm.h, oct-procbuf.cc, oct-procbuf.h,
oct-stdstrm.h, oct-stream.cc, oct-stream.h, oct-strstrm.cc, oct-strstrm.h,
oct-tex-lexer.in.ll, oct-tex-parser.in.yy, oct.h, octave-default-image.h,
octave-link.cc, octave-link.h, ordschur.cc, pager.cc, pager.h, pinv.cc,
pr-output.cc, pr-output.h, procstream.cc, procstream.h, psi.cc, quad.cc,
quadcc.cc, qz.cc, rand.cc, rcond.cc, regexp.cc, schur.cc, sighandlers.cc,
sighandlers.h, sparse-xdiv.cc, sparse-xdiv.h, sparse-xpow.cc, sparse-xpow.h,
sparse.cc, spparms.cc, sqrtm.cc, str2double.cc, strfind.cc, strfns.cc,
sub2ind.cc, svd.cc, sylvester.cc, symrec.cc, symrec.h, symscope.cc, symscope.h,
symtab.cc, symtab.h, syscalls.cc, sysdep.cc, sysdep.h, text-renderer.cc,
text-renderer.h, time.cc, toplev.cc, toplev.h, tril.cc, tsearch.cc, txt-eng.cc,
txt-eng.h, typecast.cc, url-handle-manager.cc, url-handle-manager.h,
urlwrite.cc, utils.cc, utils.h, variables.cc, variables.h, workspace-element.h,
xdiv.cc, xdiv.h, xnorm.cc, xnorm.h, xpow.cc, xpow.h, zfstream.cc, zfstream.h,
deprecated-config.h, __delaunayn__.cc, __eigs__.cc, __fltk_uigetfile__.cc,
__glpk__.cc, __init_fltk__.cc, __init_gnuplot__.cc, __ode15__.cc,
__osmesa_print__.cc, __voronoi__.cc, amd.cc, audiodevinfo.cc, audioread.cc,
ccolamd.cc, chol.cc, colamd.cc, config-module.awk, config-module.sh,
convhulln.cc, dmperm.cc, fftw.cc, gzip.cc, oct-qhull.h, qr.cc, symbfact.cc,
symrcm.cc, liboctinterp-build-info.h, liboctinterp-build-info.in.cc,
mk-build-env-features.sh, mk-builtins.pl, mk-doc.pl, mk-pkg-add.sh,
mk-version-h.in.sh, ov-base-diag.cc, ov-base-diag.h, ov-base-int.cc,
ov-base-int.h, ov-base-mat.cc, ov-base-mat.h, ov-base-scalar.cc,
ov-base-scalar.h, ov-base-sparse.cc, ov-base-sparse.h, ov-base.cc, ov-base.h,
ov-bool-mat.cc, ov-bool-mat.h, ov-bool-sparse.cc, ov-bool-sparse.h, ov-bool.cc,
ov-bool.h, ov-builtin.cc, ov-builtin.h, ov-cell.cc, ov-cell.h, ov-ch-mat.cc,
ov-ch-mat.h, ov-class.cc, ov-class.h, ov-classdef.cc, ov-classdef.h,
ov-colon.cc, ov-colon.h, ov-complex.cc, ov-complex.h, ov-cs-list.cc,
ov-cs-list.h, ov-cx-diag.cc, ov-cx-diag.h, ov-cx-mat.cc, ov-cx-mat.h,
ov-cx-sparse.cc, ov-cx-sparse.h, ov-dld-fcn.cc, ov-dld-fcn.h, ov-fcn-handle.cc,
ov-fcn-handle.h, ov-fcn-inline.cc, ov-fcn-inline.h, ov-fcn.cc, ov-fcn.h,
ov-float.cc, ov-float.h, ov-flt-complex.cc, ov-flt-complex.h,
ov-flt-cx-diag.cc, ov-flt-cx-diag.h, ov-flt-cx-mat.cc, ov-flt-cx-mat.h,
ov-flt-re-diag.cc, ov-flt-re-diag.h, ov-flt-re-mat.cc, ov-flt-re-mat.h,
ov-int-traits.h, ov-int16.cc, ov-int16.h, ov-int32.cc, ov-int32.h, ov-int64.cc,
ov-int64.h, ov-int8.cc, ov-int8.h, ov-intx.h, ov-java.cc, ov-java.h,
ov-lazy-idx.cc, ov-lazy-idx.h, ov-mex-fcn.cc, ov-mex-fcn.h, ov-null-mat.cc,
ov-null-mat.h, ov-oncleanup.cc, ov-oncleanup.h, ov-perm.cc, ov-perm.h,
ov-range.cc, ov-range.h, ov-re-diag.cc, ov-re-diag.h, ov-re-mat.cc,
ov-re-mat.h, ov-re-sparse.cc, ov-re-sparse.h, ov-scalar.cc, ov-scalar.h,
ov-str-mat.cc, ov-str-mat.h, ov-struct.cc, ov-struct.h, ov-typeinfo.cc,
ov-typeinfo.h, ov-uint16.cc, ov-uint16.h, ov-uint32.cc, ov-uint32.h,
ov-uint64.cc, ov-uint64.h, ov-uint8.cc, ov-uint8.h, ov-usr-fcn.cc,
ov-usr-fcn.h, ov.cc, ov.h, ovl.cc, ovl.h, octave.cc, octave.h, op-kw-docs,
mk-ops.sh, op-b-b.cc, op-b-bm.cc, op-b-sbm.cc, op-bm-b.cc, op-bm-bm.cc,
op-bm-sbm.cc, op-cdm-cdm.cc, op-cdm-cm.cc, op-cdm-cs.cc, op-cdm-dm.cc,
op-cdm-m.cc, op-cdm-s.cc, op-cell.cc, op-chm.cc, op-class.cc, op-cm-cdm.cc,
op-cm-cm.cc, op-cm-cs.cc, op-cm-dm.cc, op-cm-m.cc, op-cm-pm.cc, op-cm-s.cc,
op-cm-scm.cc, op-cm-sm.cc, op-cs-cm.cc, op-cs-cs.cc, op-cs-m.cc, op-cs-s.cc,
op-cs-scm.cc, op-cs-sm.cc, op-dm-cdm.cc, op-dm-cm.cc, op-dm-cs.cc, op-dm-dm.cc,
op-dm-m.cc, op-dm-s.cc, op-dm-scm.cc, op-dm-sm.cc, op-dm-template.cc,
op-dms-template.cc, op-fcdm-fcdm.cc, op-fcdm-fcm.cc, op-fcdm-fcs.cc,
op-fcdm-fdm.cc, op-fcdm-fm.cc, op-fcdm-fs.cc, op-fcm-fcdm.cc, op-fcm-fcm.cc,
op-fcm-fcs.cc, op-fcm-fdm.cc, op-fcm-fm.cc, op-fcm-fs.cc, op-fcm-pm.cc,
op-fcn.cc, op-fcs-fcm.cc, op-fcs-fcs.cc, op-fcs-fm.cc, op-fcs-fs.cc,
op-fdm-fcdm.cc, op-fdm-fcm.cc, op-fdm-fcs.cc, op-fdm-fdm.cc, op-fdm-fm.cc,
op-fdm-fs.cc, op-fm-fcdm.cc, op-fm-fcm.cc, op-fm-fcs.cc, op-fm-fdm.cc,
op-fm-fm.cc, op-fm-fs.cc, op-fm-pm.cc, op-fs-fcm.cc, op-fs-fcs.cc, op-fs-fm.cc,
op-fs-fs.cc, op-i16-i16.cc, op-i32-i32.cc, op-i64-i64.cc, op-i8-i8.cc,
op-int-concat.cc, op-int.h, op-m-cdm.cc, op-m-cm.cc, op-m-cs.cc, op-m-dm.cc,
op-m-m.cc, op-m-pm.cc, op-m-s.cc, op-m-scm.cc, op-m-sm.cc, op-pm-cm.cc,
op-pm-fcm.cc, op-pm-fm.cc, op-pm-m.cc, op-pm-pm.cc, op-pm-scm.cc, op-pm-sm.cc,
op-pm-template.cc, op-range.cc, op-s-cm.cc, op-s-cs.cc, op-s-m.cc, op-s-s.cc,
op-s-scm.cc, op-s-sm.cc, op-sbm-b.cc, op-sbm-bm.cc, op-sbm-sbm.cc,
op-scm-cm.cc, op-scm-cs.cc, op-scm-m.cc, op-scm-s.cc, op-scm-scm.cc,
op-scm-sm.cc, op-sm-cm.cc, op-sm-cs.cc, op-sm-m.cc, op-sm-s.cc, op-sm-scm.cc,
op-sm-sm.cc, op-str-m.cc, op-str-s.cc, op-str-str.cc, op-struct.cc,
op-ui16-ui16.cc, op-ui32-ui32.cc, op-ui64-ui64.cc, op-ui8-ui8.cc, ops.h,
options-usage.h, bp-table.cc, bp-table.h, comment-list.cc, comment-list.h,
jit-ir.cc, jit-ir.h, jit-typeinfo.cc, jit-typeinfo.h, jit-util.cc, jit-util.h,
lex.h, lex.ll, oct-lvalue.cc, oct-lvalue.h, oct-parse.in.yy, octave.gperf,
parse.h, profiler.cc, profiler.h, pt-all.h, pt-arg-list.cc, pt-arg-list.h,
pt-array-list.cc, pt-array-list.h, pt-assign.cc, pt-assign.h, pt-binop.cc,
pt-binop.h, pt-bp.cc, pt-bp.h, pt-cbinop.cc, pt-cbinop.h, pt-cell.cc,
pt-cell.h, pt-check.cc, pt-check.h, pt-classdef.cc, pt-classdef.h, pt-cmd.h,
pt-colon.cc, pt-colon.h, pt-const.cc, pt-const.h, pt-decl.cc, pt-decl.h,
pt-eval.cc, pt-eval.h, pt-except.cc, pt-except.h, pt-exp.cc, pt-exp.h,
pt-fcn-handle.cc, pt-fcn-handle.h, pt-funcall.cc, pt-funcall.h, pt-id.cc,
pt-id.h, pt-idx.cc, pt-idx.h, pt-jit.cc, pt-jit.h, pt-jump.cc, pt-jump.h,
pt-loop.cc, pt-loop.h, pt-mat.cc, pt-mat.h, pt-misc.cc, pt-misc.h,
pt-pr-code.cc, pt-pr-code.h, pt-select.cc, pt-select.h, pt-stmt.cc, pt-stmt.h,
pt-tm-const.cc, pt-tm-const.h, pt-unop.cc, pt-unop.h, pt-walk.cc, pt-walk.h,
pt.cc, pt.h, token.cc, token.h, Array-jit.cc, Array-tc.cc, version.cc,
version.in.h, Array-C.cc, Array-b.cc, Array-ch.cc, Array-d.cc, Array-f.cc,
Array-fC.cc, Array-i.cc, Array-idx-vec.cc, Array-s.cc, Array-str.cc,
Array-util.cc, Array-util.h, Array-voidp.cc, Array.cc, Array.h, CColVector.cc,
CColVector.h, CDiagMatrix.cc, CDiagMatrix.h, CMatrix.cc, CMatrix.h,
CNDArray.cc, CNDArray.h, CRowVector.cc, CRowVector.h, CSparse.cc, CSparse.h,
DiagArray2.cc, DiagArray2.h, MArray-C.cc, MArray-d.cc, MArray-f.cc,
MArray-fC.cc, MArray-i.cc, MArray-s.cc, MArray.cc, MArray.h, MDiagArray2.cc,
MDiagArray2.h, MSparse-C.cc, MSparse-d.cc, MSparse.cc, MSparse.h, Matrix.h,
MatrixType.cc, MatrixType.h, PermMatrix.cc, PermMatrix.h, Range.cc, Range.h,
Sparse-C.cc, Sparse-b.cc, Sparse-d.cc, Sparse.cc, Sparse.h, boolMatrix.cc,
boolMatrix.h, boolNDArray.cc, boolNDArray.h, boolSparse.cc, boolSparse.h,
chMatrix.cc, chMatrix.h, chNDArray.cc, chNDArray.h, dColVector.cc,
dColVector.h, dDiagMatrix.cc, dDiagMatrix.h, dMatrix.cc, dMatrix.h,
dNDArray.cc, dNDArray.h, dRowVector.cc, dRowVector.h, dSparse.cc, dSparse.h,
dim-vector.cc, dim-vector.h, fCColVector.cc, fCColVector.h, fCDiagMatrix.cc,
fCDiagMatrix.h, fCMatrix.cc, fCMatrix.h, fCNDArray.cc, fCNDArray.h,
fCRowVector.cc, fCRowVector.h, fColVector.cc, fColVector.h, fDiagMatrix.cc,
fDiagMatrix.h, fMatrix.cc, fMatrix.h, fNDArray.cc, fNDArray.h, fRowVector.cc,
fRowVector.h, idx-vector.cc, idx-vector.h, int16NDArray.cc, int16NDArray.h,
int32NDArray.cc, int32NDArray.h, int64NDArray.cc, int64NDArray.h,
int8NDArray.cc, int8NDArray.h, intNDArray.cc, intNDArray.h, uint16NDArray.cc,
uint16NDArray.h, uint32NDArray.cc, uint32NDArray.h, uint64NDArray.cc,
uint64NDArray.h, uint8NDArray.cc, uint8NDArray.h, cconv2.f, cdotc3.f, cmatm3.f,
csconv2.f, dconv2.f, ddot3.f, dmatm3.f, sconv2.f, sdot3.f, smatm3.f, zconv2.f,
zdconv2.f, zdotc3.f, zmatm3.f, crsf2csf.f, zrsf2csf.f, mk-f77-def.in.sh,
liboctave-build-info.h, liboctave-build-info.in.cc, CollocWt.cc, CollocWt.h,
DAE.h, DAEFunc.h, DAERT.h, DAERTFunc.h, DASPK-opts.in, DASPK.cc, DASPK.h,
DASRT-opts.in, DASRT.cc, DASRT.h, DASSL-opts.in, DASSL.cc, DASSL.h, DET.h,
EIG.cc, EIG.h, LSODE-opts.in, LSODE.cc, LSODE.h, ODE.h, ODEFunc.h, ODES.cc,
ODES.h, ODESFunc.h, Quad-opts.in, Quad.cc, Quad.h, aepbalance.cc, aepbalance.h,
base-dae.h, base-de.h, base-min.h, bsxfun-decl.h, bsxfun-defs.cc, bsxfun.h,
chol.cc, chol.h, eigs-base.cc, eigs-base.h, fEIG.cc, fEIG.h, gepbalance.cc,
gepbalance.h, gsvd.cc, gsvd.h, hess.cc, hess.h, lo-amos-proto.h,
lo-arpack-proto.h, lo-blas-proto.h, lo-fftpack-proto.h, lo-lapack-proto.h,
lo-mappers.cc, lo-mappers.h, lo-qrupdate-proto.h, lo-ranlib-proto.h,
lo-slatec-proto.h, lo-specfun.cc, lo-specfun.h, lu.cc, lu.h, oct-convn.cc,
oct-convn.h, oct-fftw.cc, oct-fftw.h, oct-norm.cc, oct-norm.h, oct-rand.cc,
oct-rand.h, oct-spparms.cc, oct-spparms.h, qr.cc, qr.h, qrp.cc, qrp.h,
randgamma.cc, randgamma.h, randmtzig.cc, randmtzig.h, randpoisson.cc,
randpoisson.h, schur.cc, schur.h, sparse-chol.cc, sparse-chol.h,
sparse-dmsolve.cc, sparse-dmsolve.h, sparse-lu.cc, sparse-lu.h, sparse-qr.cc,
sparse-qr.h, svd.cc, svd.h, Sparse-diag-op-defs.h, Sparse-op-decls.h,
Sparse-op-defs.h, Sparse-perm-op-defs.h, config-ops.sh, mk-ops.awk, mx-base.h,
mx-defs.h, mx-ext.h, mx-inlines.cc, mx-op-decl.h, mx-op-defs.h, mx-ops,
smx-ops, vx-ops, child-list.cc, child-list.h, cmach-info.c, cmach-info.h,
dir-ops.cc, dir-ops.h, file-ops.cc, file-ops.h, file-stat.cc, file-stat.h,
lo-sysdep.cc, lo-sysdep.h, mach-info.cc, mach-info.h, oct-env.cc, oct-env.h,
oct-group.cc, oct-group.h, oct-passwd.cc, oct-passwd.h, oct-syscalls.cc,
oct-syscalls.h, oct-time.cc, oct-time.h, oct-uname.cc, oct-uname.h,
action-container.h, base-list.h, blaswrap.c, byte-swap.h, caseless-str.h,
cmd-edit.cc, cmd-edit.h, cmd-hist.cc, cmd-hist.h, cquit.c, data-conv.cc,
data-conv.h, f2c-main.c, f77-fcn.c, f77-fcn.h, file-info.cc, file-info.h,
functor.h, glob-match.cc, glob-match.h, kpse.cc, kpse.h, lo-array-errwarn.cc,
lo-array-errwarn.h, lo-array-gripes.cc, lo-array-gripes.h, lo-cutils.c,
lo-cutils.h, lo-error.c, lo-error.h, lo-hash.cc, lo-hash.h, lo-ieee.cc,
lo-ieee.h, lo-regexp.cc, lo-regexp.h, lo-traits.h, lo-utils.cc, lo-utils.h,
oct-base64.cc, oct-base64.h, oct-binmap.h, oct-cmplx.h, oct-glob.cc,
oct-glob.h, oct-inttypes-fwd.h, oct-inttypes.cc, oct-inttypes.h, oct-locbuf.h,
oct-mutex.cc, oct-mutex.h, oct-refcount.h, oct-rl-edit.c, oct-rl-edit.h,
oct-rl-hist.c, oct-rl-hist.h, oct-shlib.cc, oct-shlib.h, oct-sort.cc,
oct-sort.h, oct-sparse.cc, oct-sparse.h, oct-string.cc, oct-string.h,
octave-preserve-stream-state.h, pathsearch.cc, pathsearch.h, quit.cc, quit.h,
singleton-cleanup.cc, singleton-cleanup.h, sparse-sort.cc, sparse-sort.h,
sparse-util.cc, sparse-util.h, str-vec.cc, str-vec.h, sun-utils.h,
unwind-prot.cc, unwind-prot.h, url-transfer.cc, url-transfer.h,
areadlink-wrapper.c, areadlink-wrapper.h, async-system-wrapper.c,
async-system-wrapper.h, base64-wrappers.c, base64-wrappers.h,
canonicalize-file-name-wrapper.c, canonicalize-file-name-wrapper.h,
dirent-wrappers.c, dirent-wrappers.h, fcntl-wrappers.c, fcntl-wrappers.h,
filepos-wrappers.c, filepos-wrappers.h, fpucw-wrappers.c, fpucw-wrappers.h,
gen-tempname-wrapper.c, gen-tempname-wrapper.h, getopt-wrapper.c,
getopt-wrapper.h, glob-wrappers.c, glob-wrappers.h, hash-wrappers.c,
hash-wrappers.h, localcharset-wrapper.c, localcharset-wrapper.h,
math-wrappers.c, math-wrappers.h, mkostemp-wrapper.c, mkostemp-wrapper.h,
nanosleep-wrapper.c, nanosleep-wrapper.h, nproc-wrapper.c, nproc-wrapper.h,
octave-popen2.c, octave-popen2.h, putenv-wrapper.c, putenv-wrapper.h,
set-program-name-wrapper.c, set-program-name-wrapper.h, signal-wrappers.c,
signal-wrappers.h, stat-wrappers.c, stat-wrappers.h, strdup-wrapper.c,
strdup-wrapper.h, strftime-wrapper.c, strftime-wrapper.h, strmode-wrapper.c,
strmode-wrapper.h, strptime-wrapper.c, strptime-wrapper.h, time-wrappers.c,
time-wrappers.h, tmpfile-wrapper.c, tmpfile-wrapper.h, uname-wrapper.c,
uname-wrapper.h, uniconv-wrappers.c, uniconv-wrappers.h, unistd-wrappers.c,
unistd-wrappers.h, unsetenv-wrapper.c, unsetenv-wrapper.h, vasprintf-wrapper.c,
vasprintf-wrapper.h, wait-for-input.c, wait-for-input.h, wait-wrappers.c,
wait-wrappers.h, acinclude.m4, ax_blas.m4, ax_lapack.m4, ax_openmp.m4,
ax_pthread.m4, octave_blas_f77_func.m4, pkg.m4, oct-conf-post.in.h,
run-octave.in, Map.m, ascii.m, binary.m, cd.m, close.m, delete.m,
dir.m, disp.m, ftp.m, loadobj.m, mget.m, mkdir.m, mput.m, rename.m, rmdir.m,
saveobj.m, __get_properties__.m, audioplayer.m, disp.m, get.m, isplaying.m,
pause.m, play.m, playblocking.m, resume.m, set.m, stop.m, subsasgn.m,
subsref.m, __get_properties__.m, audiorecorder.m, disp.m, get.m,
getaudiodata.m, getplayer.m, isrecording.m, pause.m, play.m, record.m,
recordblocking.m, resume.m, set.m, stop.m, subsasgn.m, subsref.m, lin2mu.m,
mu2lin.m, record.m, sound.m, soundsc.m, bitmax.m, chop.m, comma.m, isstr.m,
mahalanobis.m, md5sum.m, octave_config_info.m, onenormest.m, paren.m,
semicolon.m, sleep.m, usleep.m, wavread.m, wavwrite.m, acosd.m, acot.m,
acotd.m, acoth.m, acsc.m, acscd.m, acsch.m, asec.m, asecd.m, asech.m, asind.m,
atan2d.m, atand.m, cosd.m, cot.m, cotd.m, coth.m, csc.m, cscd.m, csch.m, sec.m,
secd.m, sech.m, sind.m, tand.m, accumarray.m, accumdim.m, bincoeff.m, bitcmp.m,
bitget.m, bitset.m, blkdiag.m, cart2pol.m, cart2sph.m, cell2mat.m, celldisp.m,
circshift.m, common_size.m, cplxpair.m, cumtrapz.m, curl.m, dblquad.m, deal.m,
deg2rad.m, del2.m, divergence.m, flip.m, flipdim.m, fliplr.m, flipud.m,
gradient.m, idivide.m, int2str.m, integral.m, integral2.m, integral3.m,
interp1.m, interp2.m, interp3.m, interpft.m, interpn.m, isequal.m, isequaln.m,
logspace.m, nextpow2.m, num2str.m, pol2cart.m, polyarea.m, postpad.m, prepad.m,
__splinen__.m, quad2d.m, quadgk.m, quadl.m, quadv.m, rad2deg.m, randi.m, rat.m,
repelem.m, repmat.m, rot90.m, rotdim.m, shift.m, shiftdim.m, sortrows.m,
sph2cart.m, structfun.m, subsindex.m, trapz.m, triplequad.m, xor.m, convhull.m,
delaunay.m, delaunayn.m, dsearch.m, dsearchn.m, griddata.m, griddata3.m,
griddatan.m, inpolygon.m, rectint.m, tsearchn.m, voronoi.m, voronoin.m,
dialog.m, errordlg.m, getappdata.m, guidata.m, guihandles.m, helpdlg.m,
inputdlg.m, isappdata.m, listdlg.m, msgbox.m, __file_filter__.m,
__fltk_file_filter__.m, __get_funcname__.m, __is_function__.m,
__uigetdir_fltk__.m, __uigetfile_fltk__.m, __uiobject_split_args__.m,
__uiputfile_fltk__.m, questdlg.m, rmappdata.m, setappdata.m, uibuttongroup.m,
uicontextmenu.m, uicontrol.m, uigetdir.m, uigetfile.m, uimenu.m, uipanel.m,
uipushtool.m, uiputfile.m, uiresume.m, uitoggletool.m, uitoolbar.m, uiwait.m,
waitbar.m, waitforbuttonpress.m, warndlg.m, __gripe_missing_component__.m,
__makeinfo__.m, __unimplemented__.m, ans.m, debug.m, doc.m, doc_cache_create.m,
error_ids.m, get_first_help_sentence.m, help.m, lookfor.m, print_usage.m,
__additional_help_message__.m, __strip_html_tags__.m, slash.m, type.m,
warning_ids.m, which.m, autumn.m, bone.m, brighten.m, cmpermute.m, cmunique.m,
colorcube.m, colormap.m, contrast.m, cool.m, copper.m, cubehelix.m, flag.m,
frame2im.m, getframe.m, gray.m, gray2ind.m, hot.m, hsv.m, hsv2rgb.m,
im2double.m, im2frame.m, image.m, imagesc.m, imfinfo.m, imformats.m, imread.m,
imshow.m, imwrite.m, ind2gray.m, ind2rgb.m, iscolormap.m, jet.m, lines.m,
ntsc2rgb.m, ocean.m, pink.m, prism.m, __imfinfo__.m, __imread__.m,
__imwrite__.m, colorspace_conversion_input_check.m,
colorspace_conversion_revert.m, imageIO.m, imwrite_filename.m, ind2x.m,
rainbow.m, rgb2hsv.m, rgb2ind.m, rgb2ntsc.m, rgbplot.m, spinmap.m, spring.m,
summer.m, viridis.m, white.m, winter.m, beep.m, csvread.m, csvwrite.m,
dlmwrite.m, fileread.m, importdata.m, is_valid_file_id.m, strread.m,
textread.m, javaArray.m, java_get.m, java_set.m, javaaddpath.m, javachk.m,
javaclasspath.m, javamem.m, javarmpath.m, ClassHelper.java, Matrix.java,
OctClassLoader.java, Octave.java, OctaveReference.java, usejava.m, bandwidth.m,
commutation_matrix.m, cond.m, condeig.m, condest.m, cross.m,
duplication_matrix.m, expm.m, gls.m, housh.m, isbanded.m, isdefinite.m,
isdiag.m, ishermitian.m, issymmetric.m, istril.m, istriu.m, krylov.m,
linsolve.m, logm.m, lscov.m, normest.m, normest1.m, null.m, ols.m, orth.m,
planerot.m, qzhess.m, rank.m, rref.m, subspace.m, trace.m, vech.m, vecnorm.m,
bug_report.m, bunzip2.m, cast.m, citation.m, compare_versions.m, computer.m,
copyfile.m, delete.m, desktop.m, dir.m, dos.m, edit.m, fact.m, fieldnames.m,
fileattrib.m, fileparts.m, fullfile.m, genvarname.m, getfield.m, grabcode.m,
gunzip.m, info.m, inputParser.m, inputname.m, isdeployed.m, isdir.m, ismac.m,
ispc.m, isunix.m, license.m, list_primes.m, loadobj.m, ls.m, ls_command.m,
menu.m, methods.m, mex.m, mexext.m, mkdir.m, mkoctfile.m, movefile.m,
namelengthmax.m, nargchk.m, narginchk.m, nargoutchk.m, news.m, nthargout.m,
open.m, orderfields.m, pack.m, parseparams.m, perl.m,
__publish_html_output__.m, __publish_latex_output__.m, __w2mpth__.m,
display_info_file.m, publish.m, python.m, recycle.m, run.m, saveobj.m,
setfield.m, substruct.m, swapbytes.m, symvar.m, tar.m, tempdir.m, tmpnam.m,
unix.m, unpack.m, untar.m, unzip.m, validateattributes.m, ver.m, version.m,
what.m, zip.m, mk-doc.pl, mk-pkg-add.sh, decic.m, ode15i.m, ode15s.m, ode23.m,
ode45.m, odeget.m, odeplot.m, odeset.m, AbsRel_norm.m, check_default_input.m,
integrate_adaptive.m, kahan.m, ode_event_handler.m, odedefaults.m,
odemergeopts.m, runge_kutta_23.m, runge_kutta_45_dorpri.m,
runge_kutta_interpolate.m, starting_stepsize.m, __all_opts__.m, fminbnd.m,
fminsearch.m, fminunc.m, fsolve.m, fzero.m, glpk.m, humps.m, lsqnonneg.m,
optimget.m, optimset.m, pqpnonneg.m, __fdjac__.m, qp.m, sqp.m, import.m,
matlabroot.m, pathdef.m, getsavepath.m, savepath.m, pkg.m, build.m,
configure_make.m, default_prefix.m, describe.m, dirempty.m, get_description.m,
get_forge_download.m, get_forge_pkg.m, get_unsatisfied_deps.m, getarch.m,
getarchdir.m, install.m, installed_packages.m, list_forge_packages.m,
load_packages.m, load_packages_and_dependencies.m, rebuild.m, save_order.m,
uninstall.m, unload_packages.m, __clabel__.m, __getlegenddata__.m,
__rotate_around_axis__.m, annotation.m, axis.m, box.m, camlookat.m, camorbit.m,
campos.m, camroll.m, camtarget.m, camup.m, camva.m, camzoom.m, caxis.m,
clabel.m, daspect.m, datetick.m, diffuse.m, grid.m, gtext.m, hidden.m,
legend.m, lighting.m, material.m, orient.m, pbaspect.m, __axis_label__.m,
__axis_limits__.m, rticks.m, shading.m, specular.m, text.m, thetaticks.m,
title.m, view.m, whitebg.m, xlabel.m, xlim.m, xticklabels.m, xticks.m,
ylabel.m, ylim.m, yticklabels.m, yticks.m, zlabel.m, zlim.m, zticklabels.m,
zticks.m, area.m, bar.m, barh.m, camlight.m, colorbar.m, comet.m, comet3.m,
compass.m, contour.m, contour3.m, contourc.m, contourf.m, cylinder.m,
ellipsoid.m, errorbar.m, ezcontour.m, ezcontourf.m, ezmesh.m, ezmeshc.m,
ezplot.m, ezplot3.m, ezpolar.m, ezsurf.m, ezsurfc.m, feather.m, fill.m,
fplot.m, hist.m, isocaps.m, isocolors.m, isonormals.m, isosurface.m, light.m,
line.m, loglog.m, loglogerr.m, mesh.m, meshc.m, meshz.m, pareto.m, patch.m,
pcolor.m, peaks.m, pie.m, pie3.m, plot.m, plot3.m, plotmatrix.m, plotyy.m,
polar.m, __add_datasource__.m, __bar__.m, __calc_isovalue_from_data__.m,
__contour__.m, __errplot__.m, __ezplot__.m, __interp_cube__.m, __line__.m,
__marching_cube__.m, __patch__.m, __pie__.m, __plt__.m, __quiver__.m,
__scatter__.m, __stem__.m, __unite_shared_vertices__.m, quiver.m, quiver3.m,
rectangle.m, reducepatch.m, reducevolume.m, ribbon.m, rose.m, scatter.m,
scatter3.m, semilogx.m, semilogxerr.m, semilogy.m, semilogyerr.m,
shrinkfaces.m, slice.m, smooth3.m, sombrero.m, sphere.m, stairs.m, stem.m,
stem3.m, stemleaf.m, surf.m, surface.m, surfc.m, surfl.m, surfnorm.m,
tetramesh.m, trimesh.m, triplot.m, trisurf.m, waterfall.m,
__actual_axis_position__.m, __default_plot_options__.m, __gnuplot_drawnow__.m,
__next_line_color__.m, __next_line_style__.m, __opengl_info__.m,
__plt_get_axis_arg__.m, __pltopt__.m, allchild.m, ancestor.m, axes.m, cla.m,
clf.m, close.m, closereq.m, colstyle.m, copyobj.m, figure.m, findall.m,
findfigs.m, findobj.m, gca.m, gcbf.m, gcbo.m, gcf.m, gco.m, ginput.m,
gnuplot_binary.in.m, graphics_toolkit.m, groot.m, hdl2struct.m, hggroup.m,
hgload.m, hgsave.m, hgtransform.m, hold.m, isaxes.m, isfigure.m, isgraphics.m,
ishandle.m, ishold.m, isprop.m, linkaxes.m, linkprop.m, meshgrid.m, ndgrid.m,
newplot.m, pan.m, print.m, printd.m, __add_default_menu__.m, __ghostscript__.m,
__gnuplot_draw_axes__.m, __gnuplot_draw_figure__.m, __gnuplot_get_var__.m,
__gnuplot_ginput__.m, __gnuplot_has_feature__.m, __gnuplot_has_terminal__.m,
__gnuplot_open_stream__.m, __gnuplot_print__.m, __gnuplot_version__.m,
__opengl_print__.m, __print_parse_opts__.m, __set_default_mouse_modes__.m,
refresh.m, refreshdata.m, rotate.m, rotate3d.m, saveas.m, shg.m, struct2hdl.m,
subplot.m, zoom.m, compan.m, conv.m, deconv.m, mkpp.m, mpoles.m, padecoef.m,
pchip.m, poly.m, polyaffine.m, polyder.m, polyeig.m, polyfit.m, polygcd.m,
polyint.m, polyout.m, polyreduce.m, polyval.m, polyvalm.m, ppder.m, ppint.m,
ppjumps.m, ppval.m, residue.m, roots.m, spline.m, splinefit.m, unmkpp.m,
addpref.m, getpref.m, ispref.m, prefdir.m, preferences.m, loadprefs.m,
prefsfile.m, saveprefs.m, rmpref.m, setpref.m, style.css, profexplore.m,
profexport.m, profile.m, profshow.m, intersect.m, ismember.m, powerset.m,
validsetargs.m, setdiff.m, setxor.m, union.m, unique.m, arch_fit.m, arch_rnd.m,
arch_test.m, arma_rnd.m, autoreg_matrix.m, bartlett.m, blackman.m, detrend.m,
diffpara.m, durbinlevinson.m, fftconv.m, fftfilt.m, fftshift.m, filter2.m,
fractdiff.m, freqz.m, freqz_plot.m, hamming.m, hanning.m, hurst.m, ifftshift.m,
periodogram.m, rectangle_lw.m, rectangle_sw.m, triangle_lw.m, triangle_sw.m,
sinc.m, sinetone.m, sinewave.m, spectral_adf.m, spectral_xdf.m, spencer.m,
stft.m, synthesis.m, unwrap.m, yulewalker.m, bicg.m, bicgstab.m, cgs.m,
colperm.m, eigs.m, etreeplot.m, gmres.m, gplot.m, ichol.m, ilu.m, nonzeros.m,
pcg.m, pcr.m, __sprand__.m, qmr.m, spaugment.m, spconvert.m, spdiags.m,
speye.m, spfun.m, spones.m, sprand.m, sprandn.m, sprandsym.m, spstats.m, spy.m,
svds.m, treelayout.m, treeplot.m, bessel.m, beta.m, betaln.m, ellipke.m,
expint.m, factor.m, factorial.m, isprime.m, lcm.m, legendre.m, nchoosek.m,
nthroot.m, perms.m, pow2.m, primes.m, reallog.m, realpow.m, realsqrt.m,
gallery.m, hadamard.m, hankel.m, hilb.m, invhilb.m, magic.m, pascal.m,
rosser.m, toeplitz.m, vander.m, wilkinson.m, __finish__.m, center.m, cloglog.m,
corr.m, corrcoef.m, cov.m, crosstab.m, histc.m, iqr.m, kendall.m, kurtosis.m,
logit.m, mean.m, meansq.m, median.m, mode.m, moment.m, ppplot.m, prctile.m,
probit.m, qqplot.m, quantile.m, range.m, ranks.m, run_count.m, runlength.m,
skewness.m, spearman.m, statistics.m, std.m, var.m, zscore.m, betacdf.m,
betainv.m, betapdf.m, betarnd.m, binocdf.m, binoinv.m, binopdf.m, binornd.m,
cauchy_cdf.m, cauchy_inv.m, cauchy_pdf.m, cauchy_rnd.m, chi2cdf.m, chi2inv.m,
chi2pdf.m, chi2rnd.m, discrete_cdf.m, discrete_inv.m, discrete_pdf.m,
discrete_rnd.m, empirical_cdf.m, empirical_inv.m, empirical_pdf.m,
empirical_rnd.m, expcdf.m, expinv.m, exppdf.m, exprnd.m, fcdf.m, finv.m,
fpdf.m, frnd.m, gamcdf.m, gaminv.m, gampdf.m, gamrnd.m, geocdf.m, geoinv.m,
geopdf.m, geornd.m, hygecdf.m, hygeinv.m, hygepdf.m, hygernd.m,
kolmogorov_smirnov_cdf.m, laplace_cdf.m, laplace_inv.m, laplace_pdf.m,
laplace_rnd.m, logistic_cdf.m, logistic_inv.m, logistic_pdf.m, logistic_rnd.m,
logncdf.m, logninv.m, lognpdf.m, lognrnd.m, nbincdf.m, nbininv.m, nbinpdf.m,
nbinrnd.m, normcdf.m, norminv.m, normpdf.m, normrnd.m, poisscdf.m, poissinv.m,
poisspdf.m, poissrnd.m, stdnormal_cdf.m, stdnormal_inv.m, stdnormal_pdf.m,
stdnormal_rnd.m, tcdf.m, tinv.m, tpdf.m, trnd.m, unidcdf.m, unidinv.m,
unidpdf.m, unidrnd.m, unifcdf.m, unifinv.m, unifpdf.m, unifrnd.m, wblcdf.m,
wblinv.m, wblpdf.m, wblrnd.m, wienrnd.m, logistic_regression.m,
logistic_regression_derivatives.m, logistic_regression_likelihood.m, anova.m,
bartlett_test.m, chisquare_test_homogeneity.m, chisquare_test_independence.m,
cor_test.m, f_test_regression.m, hotelling_test.m, hotelling_test_2.m,
kolmogorov_smirnov_test.m, kolmogorov_smirnov_test_2.m, kruskal_wallis_test.m,
manova.m, mcnemar_test.m, prop_test_2.m, run_test.m, sign_test.m, t_test.m,
t_test_2.m, t_test_regression.m, u_test.m, var_test.m, welch_test.m,
wilcoxon_test.m, z_test.m, z_test_2.m, base2dec.m, bin2dec.m, blanks.m,
cstrcat.m, deblank.m, dec2base.m, dec2bin.m, dec2hex.m, erase.m, findstr.m,
hex2dec.m, index.m, isletter.m, isstring.m, isstrprop.m, mat2str.m,
native2unicode.m, ostrsplit.m, regexptranslate.m, rindex.m, str2num.m,
strcat.m, strchr.m, strjoin.m, strjust.m, strmatch.m, strsplit.m, strtok.m,
strtrim.m, strtrunc.m, substr.m, unicode2native.m, untabify.m,
validatestring.m, __have_feature__.m, __printf_assert__.m,
__prog_output_assert__.m, __run_test_suite__.m, assert.m, demo.m, example.m,
fail.m, compare_plot_demos.m, dump_demos.m, html_compare_plot_demos.m,
rundemos.m, runtests.m, speed.m, test.m, addtodate.m, asctime.m, calendar.m,
clock.m, ctime.m, date.m, datenum.m, datestr.m, datevec.m, eomday.m, etime.m,
is_leap_year.m, now.m, weekday.m, display-available.c, display-available.h,
main-cli.cc, main-gui.cc, main.in.cc, mkoctfile.in.cc, octave-build-info.h,
octave-build-info.in.cc, octave-config.in.cc, shared-fcns.h, args.tst,
bug-31371.tst, bug-35448.tst, bug-35881.tst, bug-36025.tst, bug-38236.tst,
bug-38565.tst, bug-38576.tst, bug-38691.tst, bug-41723.tst, bug-44940.tst,
bug-46330.tst, bug-46660.tst, bug-50014.tst, bug-50035.tst, bug-50716.tst,
bug-51192.tst, bug-51532.tst, bug-51534.tst, bug-51599.tst, bug-52075.tst,
class-concat.tst, classdef-multiple-inheritance.tst, classdef.tst, classes.tst,
colormaps.tst, command.tst, complex.tst, ctor-vs-method.tst,
deprecate-props.tst, diag-perm.tst, error.tst, eval-catch.tst,
fcn-handle-derived-resolution.tst, fntests.m, for.tst, func.tst, global.tst,
if.tst, index.tst, io.tst, jit.tst, leftdiv.tst, line-continue.tst,
logical-index.tst, mk-bc-overloads-tst.sh, mk-conv-tst.sh, mk-sparse-tst.sh,
nest.tst, null-assign.tst, parser.tst, prefer.tst, publish.tst, range.tst,
recursion.tst, return.tst, show-failures.awk, single-index.tst, slice.tst,
struct.tst, switch.tst, system.tst, transpose.tst, try.tst, unwind.tst,
while.tst:
Changed punctuation of GPL license text to match that suggested by FSF.
author | Rik <rik@octave.org> |
---|---|
date | Sat, 06 Jan 2018 07:57:19 -0800 |
parents | fe54e9633815 |
children | 7c88cf242111 |
rev | line source |
---|---|
1994 | 1 /* |
1 | 2 |
23219
3ac9f9ecfae5
maint: Update copyright dates.
John W. Eaton <jwe@octave.org>
parents:
23211
diff
changeset
|
3 Copyright (C) 1993-2017 John W. Eaton |
1 | 4 |
5 This file is part of Octave. | |
6 | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24445
diff
changeset
|
7 Octave is free software: you can redistribute it and/or modify it |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
8 under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24445
diff
changeset
|
9 the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
10 (at your option) any later version. |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
11 |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
13 WITHOUT ANY WARRANTY; without even the implied warranty of |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
15 GNU General Public License for more details. |
1 | 16 |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24445
diff
changeset
|
19 <https://www.gnu.org/licenses/>. |
1 | 20 |
21 */ | |
22 | |
16150
891a2a4df71f
* lex.ll: Use C-style comments in preamble.
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
23 /* |
891a2a4df71f
* lex.ll: Use C-style comments in preamble.
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
24 We are using the pure parser interface and the reentrant lexer |
891a2a4df71f
* lex.ll: Use C-style comments in preamble.
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
25 interface but the Octave parser and lexer are NOT properly |
891a2a4df71f
* lex.ll: Use C-style comments in preamble.
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
26 reentrant because both still use many global variables. It should be |
20812
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
27 safe to create a parser object and call it while another parser |
16150
891a2a4df71f
* lex.ll: Use C-style comments in preamble.
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
28 object is active (to parse a callback function while the main |
891a2a4df71f
* lex.ll: Use C-style comments in preamble.
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
29 interactive parser is waiting for input, for example) if you take |
891a2a4df71f
* lex.ll: Use C-style comments in preamble.
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
30 care to properly save and restore (typically with an unwind_protect |
891a2a4df71f
* lex.ll: Use C-style comments in preamble.
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
31 object) relevant global values before and after the nested call. |
891a2a4df71f
* lex.ll: Use C-style comments in preamble.
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
32 */ |
16149
49dfba4fd3c5
use pure parser and reentrant lexer interfaces
John W. Eaton <jwe@octave.org>
parents:
16148
diff
changeset
|
33 |
21023
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
34 %top { |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21722
diff
changeset
|
35 #if defined (HAVE_CONFIG_H) |
22003
2d3972b802ff
use consistent style for including config.h in source files
John W. Eaton <jwe@octave.org>
parents:
21987
diff
changeset
|
36 # include "config.h" |
21023
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
37 #endif |
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
38 |
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
39 #if defined (HAVE_PRAGMA_GCC_DIAGNOSTIC) |
24444
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
40 // This one needs to be global. |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
41 # pragma GCC diagnostic ignored "-Wunused-function" |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
42 // Disable these warnings for code that is generated by flex, |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
43 // including pattern rules. Push the current state so we can |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
44 // restore the warning state prior to functions we define at |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
45 // the bottom of the file. |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
46 # pragma GCC diagnostic push |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
47 # pragma GCC diagnostic ignored "-Wold-style-cast" |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
48 # pragma GCC diagnostic ignored "-Wsign-compare" |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
49 # pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" |
24445
fe54e9633815
lex.ll: Fix macro for implicit fallthrough warning.
John W. Eaton <jwe@octave.org>
parents:
24444
diff
changeset
|
50 # if defined (HAVE_WARN_IMPLICIT_FALLTHROUGH) |
24444
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
51 # pragma GCC diagnostic ignored "-Wimplicit-fallthrough" |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
52 # endif |
21023
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
53 #endif |
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
54 |
21332
db574711df78
eliminate deprecated register storage class specifier
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
55 // Define away the deprecated register storage class specifier to avoid |
db574711df78
eliminate deprecated register storage class specifier
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
56 // potential warnings about it. |
db574711df78
eliminate deprecated register storage class specifier
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
57 #if ! defined (register) |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21722
diff
changeset
|
58 # define register |
21332
db574711df78
eliminate deprecated register storage class specifier
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
59 #endif |
db574711df78
eliminate deprecated register storage class specifier
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
60 |
21023
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
61 } |
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
62 |
4753 | 63 %option prefix = "octave_" |
16146 | 64 %option noyywrap |
16149
49dfba4fd3c5
use pure parser and reentrant lexer interfaces
John W. Eaton <jwe@octave.org>
parents:
16148
diff
changeset
|
65 %option reentrant |
49dfba4fd3c5
use pure parser and reentrant lexer interfaces
John W. Eaton <jwe@octave.org>
parents:
16148
diff
changeset
|
66 %option bison-bridge |
4753 | 67 |
19784
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
68 %option noyyalloc |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
69 %option noyyrealloc |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
70 %option noyyfree |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
71 |
18234 | 72 %x COMMAND_START |
4208 | 73 %s MATRIX_START |
4240 | 74 |
16224
4a848eb52de2
use stack for tracking lexer start states
John W. Eaton <jwe@octave.org>
parents:
16209
diff
changeset
|
75 %x INPUT_FILE_START |
1 | 76 |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
77 %x BLOCK_COMMENT_START |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
78 %x LINE_COMMENT_START |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
79 |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
80 %x DQ_STRING_START |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
81 %x SQ_STRING_START |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
82 |
18520
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
83 %x FQ_IDENT_START |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
84 |
1 | 85 %{ |
240 | 86 |
1341 | 87 #include <cctype> |
88 #include <cstring> | |
89 | |
8950
d865363208d6
include <iosfwd> instead of <iostream> in header files
John W. Eaton <jwe@octave.org>
parents:
8920
diff
changeset
|
90 #include <iostream> |
8001
ff9e7873f8ea
improve handling of command-style names in matrix_or_assign_lhs context
John W. Eaton <jwe@octave.org>
parents:
7898
diff
changeset
|
91 #include <set> |
5765 | 92 #include <sstream> |
1823 | 93 #include <string> |
4214 | 94 #include <stack> |
1823 | 95 |
2926 | 96 #include "cmd-edit.h" |
21910
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21814
diff
changeset
|
97 #include "lo-mappers.h" |
4153 | 98 #include "quit.h" |
21910
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21814
diff
changeset
|
99 #include "unistd-wrappers.h" |
2926 | 100 |
16154
aa5e1e8dce66
* lex.ll: Change y.tab.h to oct-parse.h in comment.
John W. Eaton <jwe@octave.org>
parents:
16150
diff
changeset
|
101 // These would be alphabetical, but oct-parse.h must be included before |
aa5e1e8dce66
* lex.ll: Change y.tab.h to oct-parse.h in comment.
John W. Eaton <jwe@octave.org>
parents:
16150
diff
changeset
|
102 // oct-gperf.h and oct-parse.h must be included after token.h and the tree |
aa5e1e8dce66
* lex.ll: Change y.tab.h to oct-parse.h in comment.
John W. Eaton <jwe@octave.org>
parents:
16150
diff
changeset
|
103 // class declarations. We can't include oct-parse.h in oct-gperf.h |
1497 | 104 // because it may not be protected to allow it to be included multiple |
105 // times. | |
106 | |
4264 | 107 #include "Cell.h" |
2181 | 108 #include "defun.h" |
1355 | 109 #include "error.h" |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21074
diff
changeset
|
110 #include "errwarn.h" |
1351 | 111 #include "input.h" |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
112 #include "interpreter-private.h" |
22094
9203833cab7d
move new interpreter class to separate file
John W. Eaton <jwe@octave.org>
parents:
22089
diff
changeset
|
113 #include "interpreter.h" |
1355 | 114 #include "lex.h" |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22003
diff
changeset
|
115 #include "octave.h" |
2891 | 116 #include "ov.h" |
1355 | 117 #include "parse.h" |
2987 | 118 #include "pt-all.h" |
2891 | 119 #include "symtab.h" |
120 #include "token.h" | |
1355 | 121 #include "utils.h" |
122 #include "variables.h" | |
23479
06bf3a0b08bf
maint: Use "" instead of <> for our own include files.
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
123 #include "oct-parse.h" |
06bf3a0b08bf
maint: Use "" instead of <> for our own include files.
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
124 #include "oct-gperf.h" |
1 | 125 |
18974
d8abf813c69f
handle changes in bison 3.x
John W. Eaton <jwe@octave.org>
parents:
18774
diff
changeset
|
126 // FIXME: with bison 3.x, OCTAVE_STYPE appears in the generated |
d8abf813c69f
handle changes in bison 3.x
John W. Eaton <jwe@octave.org>
parents:
18774
diff
changeset
|
127 // oct-parse.h file, but there is no definition for YYSTYPE, which is |
d8abf813c69f
handle changes in bison 3.x
John W. Eaton <jwe@octave.org>
parents:
18774
diff
changeset
|
128 // needed by the code that is generated by flex. I can't seem to find a |
d8abf813c69f
handle changes in bison 3.x
John W. Eaton <jwe@octave.org>
parents:
18774
diff
changeset
|
129 // way to tell flex to use OCTAVE_STYPE instead of YYSTYPE in the code |
d8abf813c69f
handle changes in bison 3.x
John W. Eaton <jwe@octave.org>
parents:
18774
diff
changeset
|
130 // it generates, or to tell bison to provide the definition of YYSTYPE |
d8abf813c69f
handle changes in bison 3.x
John W. Eaton <jwe@octave.org>
parents:
18774
diff
changeset
|
131 // in the generated oct-parse.h file. |
d8abf813c69f
handle changes in bison 3.x
John W. Eaton <jwe@octave.org>
parents:
18774
diff
changeset
|
132 |
d8abf813c69f
handle changes in bison 3.x
John W. Eaton <jwe@octave.org>
parents:
18774
diff
changeset
|
133 #if defined (OCTAVE_STYPE_IS_DECLARED) && ! defined YYSTYPE |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21722
diff
changeset
|
134 # define YYSTYPE OCTAVE_STYPE |
18974
d8abf813c69f
handle changes in bison 3.x
John W. Eaton <jwe@octave.org>
parents:
18774
diff
changeset
|
135 #endif |
d8abf813c69f
handle changes in bison 3.x
John W. Eaton <jwe@octave.org>
parents:
18774
diff
changeset
|
136 |
21910
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21814
diff
changeset
|
137 #define YY_NO_UNISTD_H 1 |
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21814
diff
changeset
|
138 #define isatty octave_isatty_wrapper |
4d723ba06b4a
provide wrappers for some unistd.h functions
John W. Eaton <jwe@octave.org>
parents:
21814
diff
changeset
|
139 |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
140 #if ! (defined (FLEX_SCANNER) \ |
2716 | 141 && defined (YY_FLEX_MAJOR_VERSION) && YY_FLEX_MAJOR_VERSION >= 2 \ |
142 && defined (YY_FLEX_MINOR_VERSION) && YY_FLEX_MINOR_VERSION >= 5) | |
143 #error lex.l requires flex version 2.5.4 or later | |
144 #endif | |
145 | |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
146 #define YY_EXTRA_TYPE octave::base_lexer * |
16149
49dfba4fd3c5
use pure parser and reentrant lexer interfaces
John W. Eaton <jwe@octave.org>
parents:
16148
diff
changeset
|
147 #define curr_lexer yyextra |
4753 | 148 |
149 // Arrange to get input via readline. | |
150 | |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21722
diff
changeset
|
151 #if defined (YY_INPUT) |
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21722
diff
changeset
|
152 # undef YY_INPUT |
4753 | 153 #endif |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
154 #define YY_INPUT(buf, result, max_size) \ |
16293
57e87ddfee14
create base class for lexer
John W. Eaton <jwe@octave.org>
parents:
16292
diff
changeset
|
155 result = curr_lexer->fill_flex_buffer (buf, max_size) |
4753 | 156 |
157 // Try to avoid crashing out completely on fatal scanner errors. | |
158 | |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21722
diff
changeset
|
159 #if defined (YY_FATAL_ERROR) |
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21722
diff
changeset
|
160 # undef YY_FATAL_ERROR |
4753 | 161 #endif |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
162 #define YY_FATAL_ERROR(msg) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
163 (yyget_extra (yyscanner))->fatal_error (msg) |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
164 |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
165 #define CMD_OR_OP(PATTERN, TOK, COMPAT) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
166 do \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
167 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
168 curr_lexer->lexer_debug (PATTERN); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
169 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
170 if (curr_lexer->looks_like_command_arg ()) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
171 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
172 yyless (0); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
173 curr_lexer->push_start_state (COMMAND_START); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
174 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
175 else \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
176 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
177 return curr_lexer->handle_op_internal (TOK, false, COMPAT); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
178 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
179 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
180 while (0) |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
181 |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
182 #define CMD_OR_COMPUTED_ASSIGN_OP(PATTERN, TOK) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
183 do \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
184 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
185 curr_lexer->lexer_debug (PATTERN); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
186 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
187 if (curr_lexer->previous_token_may_be_command () \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
188 && curr_lexer->space_follows_previous_token ()) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
189 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
190 yyless (0); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
191 curr_lexer->push_start_state (COMMAND_START); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
192 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
193 else \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
194 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
195 return curr_lexer->handle_language_extension_op (PATTERN, TOK, \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
196 false); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
197 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
198 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
199 while (0) |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
200 |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
201 #define CMD_OR_UNARY_OP(PATTERN, TOK, COMPAT) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
202 do \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
203 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
204 curr_lexer->lexer_debug (PATTERN); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
205 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
206 if (curr_lexer->previous_token_may_be_command ()) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
207 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
208 if (curr_lexer->looks_like_command_arg ()) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
209 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
210 yyless (0); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
211 curr_lexer->push_start_state (COMMAND_START); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
212 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
213 else \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
214 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
215 return curr_lexer->handle_op_internal (TOK, false, COMPAT); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
216 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
217 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
218 else \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
219 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
220 int tok \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
221 = (COMPAT \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
222 ? curr_lexer->handle_unary_op (TOK) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
223 : curr_lexer->handle_language_extension_unary_op (TOK)); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
224 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
225 if (tok < 0) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
226 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
227 yyless (0); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
228 curr_lexer->xunput (','); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
229 /* Adjust for comma that was not really in the input stream. */ \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
230 curr_lexer->current_input_column--; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
231 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
232 else \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
233 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
234 return tok; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
235 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
236 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
237 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
238 while (0) |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
239 |
16914
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
240 // We can't rely on the trick used elsewhere of sticking ASCII 1 in |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
241 // the input buffer and recognizing it as a special case because ASCII |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
242 // 1 is a valid character for a character string. If we are at the |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
243 // end of the buffer, ask for more input. If we are at the end of the |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
244 // file, deal with it. Otherwise, just keep going with the text from |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
245 // the current buffer. |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
246 #define HANDLE_STRING_CONTINUATION \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
247 do \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
248 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
249 curr_lexer->decrement_promptflag (); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
250 curr_lexer->input_line_number++; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
251 curr_lexer->current_input_column = 1; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
252 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
253 if (curr_lexer->is_push_lexer ()) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
254 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
255 if (curr_lexer->at_end_of_buffer ()) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
256 return -1; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
257 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
258 if (curr_lexer->at_end_of_file ()) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
259 return curr_lexer->handle_end_of_input (); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
260 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
261 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
262 while (0) |
16914
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
263 |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
264 // When a command argument boundary is detected, push out the |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
265 // current argument being built. This one seems like a good |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
266 // candidate for a function call. |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
267 |
22197
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
268 #define COMMAND_ARG_FINISH \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
269 do \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
270 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
271 if (curr_lexer->string_text.empty ()) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
272 break; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
273 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
274 int retval = curr_lexer->handle_token (curr_lexer->string_text, \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
275 SQ_STRING); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
276 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
277 curr_lexer->string_text = ""; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
278 curr_lexer->command_arg_paren_count = 0; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
279 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
280 yyless (0); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
281 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
282 return retval; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
283 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
284 while (0) |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
285 |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
286 #define HANDLE_IDENTIFIER(pattern, get_set) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
287 do \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
288 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
289 curr_lexer->lexer_debug (pattern); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
290 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
291 int tok = curr_lexer->previous_token_value (); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
292 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
293 if (curr_lexer->whitespace_is_significant () \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
294 && curr_lexer->space_follows_previous_token () \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
295 && ! (tok == '[' || tok == '{' \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
296 || curr_lexer->previous_token_is_binop ())) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
297 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
298 yyless (0); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
299 unput (','); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
300 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
301 else \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
302 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
303 if (! curr_lexer->looking_at_decl_list \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
304 && curr_lexer->previous_token_may_be_command ()) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
305 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
306 yyless (0); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
307 curr_lexer->push_start_state (COMMAND_START); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
308 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
309 else \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
310 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
311 if (get_set) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
312 { \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
313 yyless (3); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
314 curr_lexer->maybe_classdef_get_set_method = false; \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
315 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
316 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
317 int id_tok = curr_lexer->handle_identifier (); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
318 \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
319 if (id_tok >= 0) \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
320 return curr_lexer->count_token_internal (id_tok); \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
321 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
322 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
323 } \ |
e43d83253e28
refill multi-line macro definitions
John W. Eaton <jwe@octave.org>
parents:
22196
diff
changeset
|
324 while (0) |
16914
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
325 |
7722
c3bb0b7a4261
lex.l: allow tokens to be displayed when parsed
John W. Eaton <jwe@octave.org>
parents:
7720
diff
changeset
|
326 static bool Vdisplay_tokens = false; |
c3bb0b7a4261
lex.l: allow tokens to be displayed when parsed
John W. Eaton <jwe@octave.org>
parents:
7720
diff
changeset
|
327 |
4910 | 328 static unsigned int Vtoken_count = 0; |
329 | |
8535 | 330 // Internal variable for lexer debugging state. |
331 static bool lexer_debug_flag = false; | |
332 | |
1 | 333 %} |
334 | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
335 D [0-9] |
20588
e34692daf663
Extend parser to accept '_' in numbers.
Rik <rik@octave.org>
parents:
20547
diff
changeset
|
336 D_ [0-9_] |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
337 S [ \t] |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
338 NL ((\n)|(\r)|(\r\n)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
339 Im [iIjJ] |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
340 CCHAR [#%] |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
341 IDENT ([_$a-zA-Z][_$a-zA-Z0-9]*) |
18520
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
342 FQIDENT ({IDENT}(\.{IDENT})*) |
20588
e34692daf663
Extend parser to accept '_' in numbers.
Rik <rik@octave.org>
parents:
20547
diff
changeset
|
343 EXPON ([DdEe][+-]?{D}{D_}*) |
20589
7c0e10f035bd
Extend parser to accept binary constants that begin with '0b' or '0B'.
Rik <rik@octave.org>
parents:
20588
diff
changeset
|
344 NUMBIN (0[bB][01_]+) |
20588
e34692daf663
Extend parser to accept '_' in numbers.
Rik <rik@octave.org>
parents:
20547
diff
changeset
|
345 NUMHEX (0[xX][0-9a-fA-F][0-9a-fA-F_]*) |
20589
7c0e10f035bd
Extend parser to accept binary constants that begin with '0b' or '0B'.
Rik <rik@octave.org>
parents:
20588
diff
changeset
|
346 NUMREAL (({D}{D_}*\.?{D_}*{EXPON}?)|(\.{D}{D_}*{EXPON}?)) |
7c0e10f035bd
Extend parser to accept binary constants that begin with '0b' or '0B'.
Rik <rik@octave.org>
parents:
20588
diff
changeset
|
347 NUMBER ({NUMREAL}|{NUMHEX}|{NUMBIN}) |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
348 |
18311
b14cdae65abd
prevent lexer from matching patterns across CR line endings (bug #41281)
John W. Eaton <jwe@octave.org>
parents:
18246
diff
changeset
|
349 ANY_EXCEPT_NL [^\r\n] |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
350 ANY_INCLUDING_NL (.|{NL}) |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
351 |
1 | 352 %% |
353 | |
9474
25ed2d6aacf6
Parse nested functions more accurately.
David Grundberg <individ@acc.umu.se>
parents:
9324
diff
changeset
|
354 %{ |
20835
14cd86258b3d
use 'invalid' instead of 'bogus' in source files
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
355 // Make script and function files start with an invalid token. This makes |
9474
25ed2d6aacf6
Parse nested functions more accurately.
David Grundberg <individ@acc.umu.se>
parents:
9324
diff
changeset
|
356 // the parser go down a special path. |
25ed2d6aacf6
Parse nested functions more accurately.
David Grundberg <individ@acc.umu.se>
parents:
9324
diff
changeset
|
357 %} |
25ed2d6aacf6
Parse nested functions more accurately.
David Grundberg <individ@acc.umu.se>
parents:
9324
diff
changeset
|
358 |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
359 <INPUT_FILE_START>{ANY_INCLUDING_NL} { |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
360 curr_lexer->lexer_debug ("<INPUT_FILE_START>{ANY_INCLUDING_NL}"); |
16224
4a848eb52de2
use stack for tracking lexer start states
John W. Eaton <jwe@octave.org>
parents:
16209
diff
changeset
|
361 |
16125
96a58f197f93
allow xunput to be called without buffer argument
John W. Eaton <jwe@octave.org>
parents:
16124
diff
changeset
|
362 curr_lexer->xunput (yytext[0]); |
16203
127cccb037bf
move more global parser and lexer variables to classes
John W. Eaton <jwe@octave.org>
parents:
16199
diff
changeset
|
363 |
127cccb037bf
move more global parser and lexer variables to classes
John W. Eaton <jwe@octave.org>
parents:
16199
diff
changeset
|
364 // May be reset later if we see "function" or "classdef" appears |
127cccb037bf
move more global parser and lexer variables to classes
John W. Eaton <jwe@octave.org>
parents:
16199
diff
changeset
|
365 // as the first token. |
127cccb037bf
move more global parser and lexer variables to classes
John W. Eaton <jwe@octave.org>
parents:
16199
diff
changeset
|
366 curr_lexer->reading_script_file = true; |
127cccb037bf
move more global parser and lexer variables to classes
John W. Eaton <jwe@octave.org>
parents:
16199
diff
changeset
|
367 |
16224
4a848eb52de2
use stack for tracking lexer start states
John W. Eaton <jwe@octave.org>
parents:
16209
diff
changeset
|
368 curr_lexer->pop_start_state (); |
4a848eb52de2
use stack for tracking lexer start states
John W. Eaton <jwe@octave.org>
parents:
16209
diff
changeset
|
369 |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
370 return curr_lexer->show_token (INPUT_FILE); |
4238 | 371 } |
372 | |
18774
4293f49795d9
don't crash on empty script files (bug #42064)
John W. Eaton <jwe@octave.org>
parents:
18531
diff
changeset
|
373 <INPUT_FILE_START><<EOF>> { |
4293f49795d9
don't crash on empty script files (bug #42064)
John W. Eaton <jwe@octave.org>
parents:
18531
diff
changeset
|
374 curr_lexer->lexer_debug ("<INPUT_FILE_START><<EOF>>"); |
4293f49795d9
don't crash on empty script files (bug #42064)
John W. Eaton <jwe@octave.org>
parents:
18531
diff
changeset
|
375 |
4293f49795d9
don't crash on empty script files (bug #42064)
John W. Eaton <jwe@octave.org>
parents:
18531
diff
changeset
|
376 // May be reset later if we see "function" or "classdef" appears |
4293f49795d9
don't crash on empty script files (bug #42064)
John W. Eaton <jwe@octave.org>
parents:
18531
diff
changeset
|
377 // as the first token. |
4293f49795d9
don't crash on empty script files (bug #42064)
John W. Eaton <jwe@octave.org>
parents:
18531
diff
changeset
|
378 curr_lexer->reading_script_file = true; |
4293f49795d9
don't crash on empty script files (bug #42064)
John W. Eaton <jwe@octave.org>
parents:
18531
diff
changeset
|
379 |
4293f49795d9
don't crash on empty script files (bug #42064)
John W. Eaton <jwe@octave.org>
parents:
18531
diff
changeset
|
380 curr_lexer->pop_start_state (); |
4293f49795d9
don't crash on empty script files (bug #42064)
John W. Eaton <jwe@octave.org>
parents:
18531
diff
changeset
|
381 |
4293f49795d9
don't crash on empty script files (bug #42064)
John W. Eaton <jwe@octave.org>
parents:
18531
diff
changeset
|
382 return curr_lexer->show_token (INPUT_FILE); |
4293f49795d9
don't crash on empty script files (bug #42064)
John W. Eaton <jwe@octave.org>
parents:
18531
diff
changeset
|
383 } |
4293f49795d9
don't crash on empty script files (bug #42064)
John W. Eaton <jwe@octave.org>
parents:
18531
diff
changeset
|
384 |
968 | 385 %{ |
8746
5dd06f19e9be
handle commands in the lexer
John W. Eaton <jwe@octave.org>
parents:
8745
diff
changeset
|
386 // Help and other command-style functions. |
968 | 387 %} |
388 | |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
389 %{ |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
390 // Commands can be continued on a second line using the ellipsis. |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
391 // If an argument is in construction, it is completed. |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
392 %} |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
393 |
18312
7ac2a8b758fc
maint: Periodic merge of stable to gui-release.
John W. Eaton <jwe@octave.org>
diff
changeset
|
394 <COMMAND_START>(\.\.\.){ANY_EXCEPT_NL}*{NL} { |
7ac2a8b758fc
maint: Periodic merge of stable to gui-release.
John W. Eaton <jwe@octave.org>
diff
changeset
|
395 curr_lexer->lexer_debug ("<COMMAND_START>(\\.\\.\\.){ANY_EXCEPT_NL}*{NL}"); |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
396 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
397 COMMAND_ARG_FINISH; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
398 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
399 curr_lexer->input_line_number++; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
400 curr_lexer->current_input_column = 1; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
401 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
402 HANDLE_STRING_CONTINUATION; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
403 } |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
404 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
405 %{ |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
406 // Commands normally end at the end of a line or a semicolon. |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
407 %} |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
408 |
18312
7ac2a8b758fc
maint: Periodic merge of stable to gui-release.
John W. Eaton <jwe@octave.org>
diff
changeset
|
409 <COMMAND_START>({CCHAR}{ANY_EXCEPT_NL}*)?{NL} { |
7ac2a8b758fc
maint: Periodic merge of stable to gui-release.
John W. Eaton <jwe@octave.org>
diff
changeset
|
410 curr_lexer->lexer_debug ("<COMMAND_START>({CCHAR}{ANY_EXCEPT_NL}*)?{NL}"); |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
411 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
412 COMMAND_ARG_FINISH; |
8535 | 413 |
16110
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
414 curr_lexer->input_line_number++; |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
415 curr_lexer->current_input_column = 1; |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
416 curr_lexer->looking_for_object_index = false; |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
417 curr_lexer->at_beginning_of_statement = true; |
16224
4a848eb52de2
use stack for tracking lexer start states
John W. Eaton <jwe@octave.org>
parents:
16209
diff
changeset
|
418 curr_lexer->pop_start_state (); |
4a848eb52de2
use stack for tracking lexer start states
John W. Eaton <jwe@octave.org>
parents:
16209
diff
changeset
|
419 |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
420 return curr_lexer->handle_token ('\n'); |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
421 } |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
422 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
423 <COMMAND_START>[\,\;] { |
18234 | 424 curr_lexer->lexer_debug ("<COMMAND_START>[\\,\\;]"); |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
425 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
426 if (yytext[0] != ',' || curr_lexer->command_arg_paren_count == 0) |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
427 { |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
428 COMMAND_ARG_FINISH; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
429 curr_lexer->looking_for_object_index = false; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
430 curr_lexer->at_beginning_of_statement = true; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
431 curr_lexer->pop_start_state (); |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
432 return curr_lexer->handle_token (yytext[0]); |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
433 } |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
434 else |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
435 curr_lexer->string_text += yytext; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
436 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
437 curr_lexer->current_input_column += yyleng; |
967 | 438 } |
1 | 439 |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
440 %{ |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
441 // Unbalanced parentheses serve as pseudo-quotes: they are included in |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
442 // the final argument string, but they cause parentheses and quotes to |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
443 // be slurped into that argument as well. |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
444 %} |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
445 |
18234 | 446 <COMMAND_START>[\(\[\{]* { |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
447 curr_lexer->lexer_debug ("<COMMAND_START>[\\(\\[\\{]+"); |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
448 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
449 curr_lexer->command_arg_paren_count += yyleng; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
450 curr_lexer->string_text += yytext; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
451 curr_lexer->current_input_column += yyleng; |
967 | 452 } |
1 | 453 |
18234 | 454 <COMMAND_START>[\)\]\}]* { |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
455 curr_lexer->lexer_debug ("<COMMAND_START>[\\)\\]\\}]+"); |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
456 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
457 curr_lexer->command_arg_paren_count -= yyleng; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
458 curr_lexer->string_text += yytext; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
459 curr_lexer->current_input_column += yyleng; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
460 } |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
461 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
462 %{ |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
463 // Handle quoted strings. Quoted strings that are not separated by |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
464 // whitespace from other argument text are combined with that previous |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
465 // text. For instance, |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
466 // |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
467 // command 'text1'"text2" |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
468 // |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
469 // has a single argument text1text2, not two separate arguments. |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
470 // That's why we must test to see if we are in command argument mode |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
471 // when processing the end of a string. |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
472 %} |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
473 |
4208 | 474 <COMMAND_START>[\"\'] { |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
475 curr_lexer->lexer_debug ("<COMMAND_START>[\\\"\\']"); |
8535 | 476 |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
477 if (curr_lexer->command_arg_paren_count == 0) |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
478 curr_lexer->begin_string (yytext[0] == '"' |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
479 ? DQ_STRING_START : SQ_STRING_START); |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
480 else |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
481 curr_lexer->string_text += yytext; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
482 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
483 curr_lexer->current_input_column += yyleng; |
975 | 484 } |
485 | |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
486 %{ |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
487 // In standard command argument processing, whitespace separates |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
488 // arguments. In the presence of unbalanced parentheses, it is |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
489 // incorporated into the argument. |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
490 %} |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
491 |
18234 | 492 <COMMAND_START>{S}* { |
493 curr_lexer->lexer_debug ("<COMMAND_START>{S}*"); | |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
494 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
495 if (curr_lexer->command_arg_paren_count == 0) |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
496 COMMAND_ARG_FINISH; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
497 else |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
498 curr_lexer->string_text += yytext; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
499 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
500 curr_lexer->current_input_column += yyleng; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
501 } |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
502 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
503 %{ |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
504 // Everything else is slurped into the command arguments. |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
505 %} |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
506 |
18234 | 507 <COMMAND_START>([\.]|[^#% \t\r\n\.\,\;\"\'\(\[\{\}\]\)]*) { |
18458
ebb878596bcf
Restore escaped backslashes accidentally deleted by cset af8a70d6885c
Mike Miller <mtmiller@ieee.org>
parents:
18437
diff
changeset
|
508 curr_lexer->lexer_debug ("<COMMAND_START>([\\.]|[^#% \\t\\r\\n\\.\\,\\;\\\"\\'\\(\\[\\{\\}\\]\\)]*"); |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
509 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
510 curr_lexer->string_text += yytext; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
511 curr_lexer->current_input_column += yyleng; |
967 | 512 } |
1 | 513 |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
514 <MATRIX_START>{S}* { |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
515 curr_lexer->lexer_debug ("<MATRIX_START>{S}*"); |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
516 |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
517 curr_lexer->mark_previous_token_trailing_space (); |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
518 } |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
519 |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
520 <MATRIX_START>{NL} { |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
521 curr_lexer->lexer_debug ("<MATRIX_START>{NL}"); |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
522 |
16281
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
523 curr_lexer->input_line_number++; |
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
524 curr_lexer->current_input_column = 1; |
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
525 |
16267
15f55df088e7
6/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16265
diff
changeset
|
526 if (curr_lexer->nesting_level.is_paren ()) |
21102
dfcb9d74b253
Rename local gripe_XXX functions to err_XXX or warn_XXX.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
527 curr_lexer->warn_language_extension ("bare newline inside parentheses"); |
16267
15f55df088e7
6/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16265
diff
changeset
|
528 else |
15f55df088e7
6/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16265
diff
changeset
|
529 { |
15f55df088e7
6/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16265
diff
changeset
|
530 int tok = curr_lexer->previous_token_value (); |
15f55df088e7
6/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16265
diff
changeset
|
531 |
15f55df088e7
6/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16265
diff
changeset
|
532 if (! (tok == ';' || tok == '[' || tok == '{')) |
16281
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
533 { |
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
534 curr_lexer->xunput (';'); |
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
535 // Adjust for semicolon that was not really in the input stream. |
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
536 curr_lexer->current_input_column--; |
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
537 } |
16267
15f55df088e7
6/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16265
diff
changeset
|
538 } |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
539 } |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
540 |
968 | 541 %{ |
1 | 542 // For this and the next two rules, we're looking at ']', and we |
15466
d174210ce1ec
use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents:
14161
diff
changeset
|
543 // need to know if the next token is '=' or '=='. |
1 | 544 // |
545 // It would have been so much easier if the delimiters were simply | |
546 // different for the expression on the left hand side of the equals | |
547 // operator. | |
971 | 548 // |
549 // It's also a pain in the ass to decide whether to insert a comma | |
550 // after seeing a ']' character... | |
7723
74f5e0c7de9e
first pass at handling block comments
John W. Eaton <jwe@octave.org>
parents:
7722
diff
changeset
|
551 |
17861
870f3e12e163
maint: Use phrase "FIXME:" for problem areas in code.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
552 // FIXME: we need to handle block comments here. |
968 | 553 %} |
554 | |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
555 <MATRIX_START>\] { |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
556 curr_lexer->lexer_debug ("<MATRIX_START>\\]"); |
8535 | 557 |
16110
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
558 curr_lexer->looking_at_object_index.pop_front (); |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
559 |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
560 curr_lexer->looking_for_object_index = true; |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
561 curr_lexer->at_beginning_of_statement = false; |
8745
6dc61981d18b
better handling of object indexing in lexer
John W. Eaton <jwe@octave.org>
parents:
8701
diff
changeset
|
562 |
16299
c40a8873c2e7
eliminate some unused variables
John W. Eaton <jwe@octave.org>
parents:
16294
diff
changeset
|
563 curr_lexer->handle_close_bracket (']'); |
8745
6dc61981d18b
better handling of object indexing in lexer
John W. Eaton <jwe@octave.org>
parents:
8701
diff
changeset
|
564 |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
565 return curr_lexer->count_token (']'); |
4608 | 566 } |
567 | |
7723
74f5e0c7de9e
first pass at handling block comments
John W. Eaton <jwe@octave.org>
parents:
7722
diff
changeset
|
568 %{ |
17861
870f3e12e163
maint: Use phrase "FIXME:" for problem areas in code.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
569 // FIXME: we need to handle block comments here. |
7723
74f5e0c7de9e
first pass at handling block comments
John W. Eaton <jwe@octave.org>
parents:
7722
diff
changeset
|
570 %} |
74f5e0c7de9e
first pass at handling block comments
John W. Eaton <jwe@octave.org>
parents:
7722
diff
changeset
|
571 |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
572 <MATRIX_START>\} { |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
573 curr_lexer->lexer_debug ("<MATRIX_START>\\}*"); |
8535 | 574 |
16110
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
575 curr_lexer->looking_at_object_index.pop_front (); |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
576 |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
577 curr_lexer->looking_for_object_index = true; |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
578 curr_lexer->at_beginning_of_statement = false; |
8745
6dc61981d18b
better handling of object indexing in lexer
John W. Eaton <jwe@octave.org>
parents:
8701
diff
changeset
|
579 |
16299
c40a8873c2e7
eliminate some unused variables
John W. Eaton <jwe@octave.org>
parents:
16294
diff
changeset
|
580 curr_lexer->handle_close_bracket ('}'); |
8745
6dc61981d18b
better handling of object indexing in lexer
John W. Eaton <jwe@octave.org>
parents:
8701
diff
changeset
|
581 |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
582 return curr_lexer->count_token ('}'); |
967 | 583 } |
1 | 584 |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
585 \[ { |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
586 curr_lexer->lexer_debug ("\\["); |
8535 | 587 |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
588 bool unput_comma = false; |
16263
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
589 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
590 if (curr_lexer->whitespace_is_significant () |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
591 && curr_lexer->space_follows_previous_token ()) |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
592 { |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
593 int tok = curr_lexer->previous_token_value (); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
594 |
16267
15f55df088e7
6/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16265
diff
changeset
|
595 if (! (tok == '[' || tok == '{' |
16263
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
596 || curr_lexer->previous_token_is_binop ())) |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
597 unput_comma = true; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
598 } |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
599 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
600 if (unput_comma) |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
601 { |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
602 yyless (0); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
603 curr_lexer->xunput (','); |
16281
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
604 // Adjust for comma that was not really in the input stream. |
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
605 curr_lexer->current_input_column--; |
16263
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
606 } |
5615 | 607 else |
16263
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
608 { |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
609 curr_lexer->nesting_level.bracket (); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
610 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
611 curr_lexer->looking_at_object_index.push_front (false); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
612 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
613 curr_lexer->current_input_column += yyleng; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
614 curr_lexer->looking_for_object_index = false; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
615 curr_lexer->at_beginning_of_statement = false; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
616 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
617 if (curr_lexer->defining_func |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
618 && ! curr_lexer->parsed_function_name.top ()) |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
619 curr_lexer->looking_at_return_list = true; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
620 else |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
621 curr_lexer->looking_at_matrix_or_assign_lhs = true; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
622 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
623 curr_lexer->decrement_promptflag (); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
624 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
625 curr_lexer->bracketflag++; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
626 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
627 curr_lexer->push_start_state (MATRIX_START); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
628 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
629 return curr_lexer->count_token ('['); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
630 } |
967 | 631 } |
1 | 632 |
968 | 633 \] { |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
634 curr_lexer->lexer_debug ("\\]"); |
8535 | 635 |
16110
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
636 curr_lexer->nesting_level.remove (); |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
637 |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
638 curr_lexer->looking_at_object_index.pop_front (); |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
639 |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
640 curr_lexer->looking_for_object_index = true; |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
641 curr_lexer->at_beginning_of_statement = false; |
8745
6dc61981d18b
better handling of object indexing in lexer
John W. Eaton <jwe@octave.org>
parents:
8701
diff
changeset
|
642 |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
643 return curr_lexer->handle_token (']'); |
968 | 644 } |
645 | |
646 %{ | |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
647 // Gobble comments. |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
648 %} |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
649 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
650 %{ |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
651 // Start of a block comment. If the comment marker appears immediately |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
652 // after a block of full-line comments, finish the full line comment |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
653 // block. |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
654 %} |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
655 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
656 ^{S}*{CCHAR}\{{S}*{NL} { |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
657 curr_lexer->lexer_debug ("^{S}*{CCHAR}\\{{S}*{NL}"); |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
658 |
16253
a89cf57ba3a5
partial cleanup of continuation handling in lexer
John W. Eaton <jwe@octave.org>
parents:
16231
diff
changeset
|
659 yyless (0); |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
660 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
661 if (curr_lexer->start_state () == LINE_COMMENT_START) |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
662 { |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
663 if (! curr_lexer->comment_text.empty ()) |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23730
diff
changeset
|
664 curr_lexer->finish_comment (octave::comment_elt::full_line); |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
665 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
666 curr_lexer->pop_start_state (); |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
667 } |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
668 |
16365
8097a052ec57
use secondary prompt when reading block comments
John W. Eaton <jwe@octave.org>
parents:
16364
diff
changeset
|
669 curr_lexer->decrement_promptflag (); |
8097a052ec57
use secondary prompt when reading block comments
John W. Eaton <jwe@octave.org>
parents:
16364
diff
changeset
|
670 |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
671 curr_lexer->push_start_state (BLOCK_COMMENT_START); |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
672 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
673 } |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
674 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
675 <BLOCK_COMMENT_START>^{S}*{CCHAR}\{{S}*{NL} { |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
676 curr_lexer->lexer_debug ("<BLOCK_COMMENT_START>^{S}*{CCHAR}\\{{S}*{NL}"); |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
677 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
678 curr_lexer->input_line_number++; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
679 curr_lexer->current_input_column = 1; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
680 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
681 if (curr_lexer->block_comment_nesting_level) |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
682 curr_lexer->comment_text = "\n"; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
683 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
684 curr_lexer->block_comment_nesting_level++; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
685 } |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
686 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
687 %{ |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
688 // End of a block comment. If this block comment is nested inside |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
689 // another, wait for the outermost block comment block to be closed |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
690 // before storing the comment. |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
691 %} |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
692 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
693 <BLOCK_COMMENT_START>^{S}*{CCHAR}\}{S}*{NL} { |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
694 curr_lexer->lexer_debug ("<BLOCK_COMMENT_START>^{S}*{CCHAR}\\}{S}*{NL}"); |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
695 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
696 curr_lexer->input_line_number++; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
697 curr_lexer->current_input_column = 1; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
698 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
699 if (curr_lexer->block_comment_nesting_level > 1) |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
700 curr_lexer->comment_text = "\n"; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
701 else |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23730
diff
changeset
|
702 curr_lexer->finish_comment (octave::comment_elt::block); |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
703 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
704 curr_lexer->block_comment_nesting_level--; |
16364
1e064963c90a
properly recognize nested block comments
John W. Eaton <jwe@octave.org>
parents:
16363
diff
changeset
|
705 |
1e064963c90a
properly recognize nested block comments
John W. Eaton <jwe@octave.org>
parents:
16363
diff
changeset
|
706 if (curr_lexer->block_comment_nesting_level == 0) |
16365
8097a052ec57
use secondary prompt when reading block comments
John W. Eaton <jwe@octave.org>
parents:
16364
diff
changeset
|
707 { |
8097a052ec57
use secondary prompt when reading block comments
John W. Eaton <jwe@octave.org>
parents:
16364
diff
changeset
|
708 curr_lexer->increment_promptflag (); |
8097a052ec57
use secondary prompt when reading block comments
John W. Eaton <jwe@octave.org>
parents:
16364
diff
changeset
|
709 |
8097a052ec57
use secondary prompt when reading block comments
John W. Eaton <jwe@octave.org>
parents:
16364
diff
changeset
|
710 curr_lexer->pop_start_state (); |
8097a052ec57
use secondary prompt when reading block comments
John W. Eaton <jwe@octave.org>
parents:
16364
diff
changeset
|
711 } |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
712 } |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
713 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
714 %{ |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
715 // Body of a block comment. |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
716 %} |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
717 |
18311
b14cdae65abd
prevent lexer from matching patterns across CR line endings (bug #41281)
John W. Eaton <jwe@octave.org>
parents:
18246
diff
changeset
|
718 <BLOCK_COMMENT_START>{ANY_EXCEPT_NL}*{NL} { |
b14cdae65abd
prevent lexer from matching patterns across CR line endings (bug #41281)
John W. Eaton <jwe@octave.org>
parents:
18246
diff
changeset
|
719 curr_lexer->lexer_debug ("<BLOCK_COMMENT_START>{ANY_EXCEPT_NL}*{NL}"); |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
720 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
721 curr_lexer->input_line_number++; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
722 curr_lexer->current_input_column = 1; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
723 curr_lexer->comment_text += yytext; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
724 } |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
725 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
726 %{ |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
727 // Full-line or end-of-line comment. |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
728 %} |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
729 |
18311
b14cdae65abd
prevent lexer from matching patterns across CR line endings (bug #41281)
John W. Eaton <jwe@octave.org>
parents:
18246
diff
changeset
|
730 {S}*{CCHAR}{ANY_EXCEPT_NL}*{NL} { |
b14cdae65abd
prevent lexer from matching patterns across CR line endings (bug #41281)
John W. Eaton <jwe@octave.org>
parents:
18246
diff
changeset
|
731 curr_lexer->lexer_debug ("{S}*{CCHAR}{ANY_EXCEPT_NL}*{NL}"); |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
732 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
733 curr_lexer->push_start_state (LINE_COMMENT_START); |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
734 yyless (0); |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
735 } |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
736 |
18311
b14cdae65abd
prevent lexer from matching patterns across CR line endings (bug #41281)
John W. Eaton <jwe@octave.org>
parents:
18246
diff
changeset
|
737 <LINE_COMMENT_START>{S}*{CCHAR}{ANY_EXCEPT_NL}*{NL} { |
b14cdae65abd
prevent lexer from matching patterns across CR line endings (bug #41281)
John W. Eaton <jwe@octave.org>
parents:
18246
diff
changeset
|
738 curr_lexer->lexer_debug ("<LINE_COMMENT_START>{S}*{CCHAR}{ANY_EXCEPT_NL}*{NL}"); |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
739 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
740 bool full_line_comment = curr_lexer->current_input_column == 1; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
741 curr_lexer->input_line_number++; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
742 curr_lexer->current_input_column = 1; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
743 |
16255
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
744 bool have_space = false; |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
745 size_t len = yyleng; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
746 size_t i = 0; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
747 while (i < len) |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
748 { |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
749 char c = yytext[i]; |
16255
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
750 if (c == ' ' || c == '\t') |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
751 { |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
752 have_space = true; |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
753 i++; |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
754 } |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
755 else |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
756 break; |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
757 } |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
758 |
16363
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
759 size_t num_comment_chars = 0; |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
760 |
16255
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
761 while (i < len) |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
762 { |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
763 char c = yytext[i]; |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
764 if (c == '#' || c == '%') |
16363
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
765 { |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
766 num_comment_chars++; |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
767 i++; |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
768 } |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
769 else |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
770 break; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
771 } |
16363
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
772 |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
773 curr_lexer->comment_text += &yytext[i]; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
774 |
16363
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
775 if (full_line_comment) |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
776 { |
17882
cf3f828f401c
only allow [%#]{ as block comment start (bug #40513)
John W. Eaton <jwe@octave.org>
parents:
17861
diff
changeset
|
777 if (num_comment_chars == 1 && yytext[i++] == '{') |
16363
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
778 { |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
779 bool looks_like_block_comment = true; |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
780 |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
781 while (i < len) |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
782 { |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
783 char c = yytext[i++]; |
18135
7af19113ec43
Fix block comments for files with CRLF line endings (bug #40894)
John Donoghue <john.donoghue@ieee.org>
parents:
17882
diff
changeset
|
784 if (! (c == ' ' || c == '\t' || c == '\n' || c == '\r')) |
16363
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
785 { |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
786 looks_like_block_comment = false; |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
787 break; |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
788 } |
19593
446c46af4b42
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
18974
diff
changeset
|
789 } |
16363
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
790 |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
791 if (looks_like_block_comment) |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
792 { |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
793 yyless (0); |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
794 |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23730
diff
changeset
|
795 curr_lexer->finish_comment (octave::comment_elt::full_line); |
16363
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
796 |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
797 curr_lexer->pop_start_state (); |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
798 } |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
799 } |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
800 } |
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
801 else |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
802 { |
16255
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
803 if (have_space) |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
804 curr_lexer->mark_previous_token_trailing_space (); |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
805 |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23730
diff
changeset
|
806 curr_lexer->finish_comment (octave::comment_elt::end_of_line); |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
807 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
808 curr_lexer->pop_start_state (); |
16337
6bfd8dbd7d3c
don't swallow statements that follow comment lines (bug #38549)
John W. Eaton <jwe@octave.org>
parents:
16334
diff
changeset
|
809 |
6bfd8dbd7d3c
don't swallow statements that follow comment lines (bug #38549)
John W. Eaton <jwe@octave.org>
parents:
16334
diff
changeset
|
810 curr_lexer->xunput ('\n'); |
6bfd8dbd7d3c
don't swallow statements that follow comment lines (bug #38549)
John W. Eaton <jwe@octave.org>
parents:
16334
diff
changeset
|
811 curr_lexer->input_line_number--; |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
812 } |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
813 } |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
814 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
815 %{ |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
816 // End of a block of full-line comments. |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
817 %} |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
818 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
819 <LINE_COMMENT_START>{ANY_INCLUDING_NL} { |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
820 curr_lexer->lexer_debug ("<LINE_COMMENT_START>{ANY_INCLUDING_NL}"); |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
821 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
822 curr_lexer->xunput (yytext[0]); |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
823 |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23730
diff
changeset
|
824 curr_lexer->finish_comment (octave::comment_elt::full_line); |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
825 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
826 curr_lexer->pop_start_state (); |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
827 } |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
828 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
829 %{ |
17722
5b0036d89d4a
allow "help dir-name" to work when comment block ends at EOF (bug #40342)
John W. Eaton <jwe@octave.org>
parents:
17693
diff
changeset
|
830 // End of a block of full-line comments. |
5b0036d89d4a
allow "help dir-name" to work when comment block ends at EOF (bug #40342)
John W. Eaton <jwe@octave.org>
parents:
17693
diff
changeset
|
831 %} |
5b0036d89d4a
allow "help dir-name" to work when comment block ends at EOF (bug #40342)
John W. Eaton <jwe@octave.org>
parents:
17693
diff
changeset
|
832 |
5b0036d89d4a
allow "help dir-name" to work when comment block ends at EOF (bug #40342)
John W. Eaton <jwe@octave.org>
parents:
17693
diff
changeset
|
833 <LINE_COMMENT_START><<EOF>> { |
5b0036d89d4a
allow "help dir-name" to work when comment block ends at EOF (bug #40342)
John W. Eaton <jwe@octave.org>
parents:
17693
diff
changeset
|
834 curr_lexer->lexer_debug ("<LINE_COMMENT_START><<EOF>>"); |
5b0036d89d4a
allow "help dir-name" to work when comment block ends at EOF (bug #40342)
John W. Eaton <jwe@octave.org>
parents:
17693
diff
changeset
|
835 |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23730
diff
changeset
|
836 curr_lexer->finish_comment (octave::comment_elt::full_line); |
17722
5b0036d89d4a
allow "help dir-name" to work when comment block ends at EOF (bug #40342)
John W. Eaton <jwe@octave.org>
parents:
17693
diff
changeset
|
837 |
5b0036d89d4a
allow "help dir-name" to work when comment block ends at EOF (bug #40342)
John W. Eaton <jwe@octave.org>
parents:
17693
diff
changeset
|
838 curr_lexer->pop_start_state (); |
5b0036d89d4a
allow "help dir-name" to work when comment block ends at EOF (bug #40342)
John W. Eaton <jwe@octave.org>
parents:
17693
diff
changeset
|
839 } |
5b0036d89d4a
allow "help dir-name" to work when comment block ends at EOF (bug #40342)
John W. Eaton <jwe@octave.org>
parents:
17693
diff
changeset
|
840 |
5b0036d89d4a
allow "help dir-name" to work when comment block ends at EOF (bug #40342)
John W. Eaton <jwe@octave.org>
parents:
17693
diff
changeset
|
841 %{ |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
842 // Double-quoted character strings. |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
843 %} |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
844 |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
845 <DQ_STRING_START>\"\" { |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
846 curr_lexer->lexer_debug ("<DQ_STRING_START>\\\"\\\""); |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
847 |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
848 curr_lexer->current_input_column += yyleng; |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
849 curr_lexer->string_text += '"'; |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
850 } |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
851 |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
852 <DQ_STRING_START>\" { |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
853 curr_lexer->lexer_debug ("<DQ_STRING_START>\\\""); |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
854 |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
855 curr_lexer->current_input_column++; |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
856 |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
857 curr_lexer->pop_start_state (); |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
858 |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
859 if (curr_lexer->start_state() != COMMAND_START) |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
860 { |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
861 curr_lexer->looking_for_object_index = true; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
862 curr_lexer->at_beginning_of_statement = false; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
863 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
864 curr_lexer->push_token (new octave::token (DQ_STRING, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
865 curr_lexer->string_text, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
866 curr_lexer->string_line, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
867 curr_lexer->string_column)); |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
868 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
869 curr_lexer->string_text = ""; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
870 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
871 return curr_lexer->count_token_internal (DQ_STRING); |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
872 } |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
873 } |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
874 |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
875 <DQ_STRING_START>\\[0-7]{1,3} { |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
876 curr_lexer->lexer_debug ("<DQ_STRING_START>\\\\[0-7]{1,3}"); |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
877 |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
878 curr_lexer->current_input_column += yyleng; |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
879 |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
880 int result; |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
881 sscanf (yytext+1, "%o", &result); |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
882 |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
883 if (result > 0xff) |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
884 { |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
885 octave::token *tok |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
886 = new octave::token (LEXICAL_ERROR, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
887 "invalid octal escape sequence in character string", |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
888 curr_lexer->input_line_number, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
889 curr_lexer->current_input_column); |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
890 |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
891 curr_lexer->push_token (tok); |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
892 |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
893 return curr_lexer->count_token_internal (LEXICAL_ERROR); |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
894 } |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
895 else |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
896 curr_lexer->string_text += static_cast<unsigned char> (result); |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
897 } |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
898 |
17244
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
899 <DQ_STRING_START>\\x[0-9a-fA-F]+ { |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
900 curr_lexer->lexer_debug ("<DQ_STRING_START>\\\\x[0-9a-fA-F]+"); |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
901 |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
902 curr_lexer->current_input_column += yyleng; |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
903 |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
904 int result; |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
905 sscanf (yytext+2, "%x", &result); |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
906 |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
907 // Truncate the value silently instead of checking the range like |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
908 // we do for octal above. This is to match C/C++ where any number |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
909 // of digits is allowed but the value is implementation-defined if |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
910 // it exceeds the range of the character type. |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
911 curr_lexer->string_text += static_cast<unsigned char> (result); |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
912 } |
9de751a10910
Add support for hexadecimal escape sequences in double-quoted strings (bug #39775)
Mike Miller <mtmiller@ieee.org>
parents:
16914
diff
changeset
|
913 |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
914 <DQ_STRING_START>"\\a" { |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
915 curr_lexer->lexer_debug ("<DQ_STRING_START>\"\\\\a\""); |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
916 |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
917 curr_lexer->current_input_column += yyleng; |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
918 curr_lexer->string_text += '\a'; |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
919 } |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
920 |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
921 <DQ_STRING_START>"\\b" { |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
922 curr_lexer->lexer_debug ("<DQ_STRING_START>\"\\\\b\""); |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
923 |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
924 curr_lexer->current_input_column += yyleng; |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
925 curr_lexer->string_text += '\b'; |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
926 } |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
927 |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
928 <DQ_STRING_START>"\\f" { |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
929 curr_lexer->lexer_debug ("<DQ_STRING_START>\"\\\\f\""); |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
930 |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
931 curr_lexer->current_input_column += yyleng; |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
932 curr_lexer->string_text += '\f'; |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
933 } |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
934 |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
935 <DQ_STRING_START>"\\n" { |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
936 curr_lexer->lexer_debug ("<DQ_STRING_START>\"\\\\n\""); |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
937 |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
938 curr_lexer->current_input_column += yyleng; |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
939 curr_lexer->string_text += '\n'; |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
940 } |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
941 |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
942 <DQ_STRING_START>"\\r" { |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
943 curr_lexer->lexer_debug ("<DQ_STRING_START>\"\\\\r\""); |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
944 |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
945 curr_lexer->current_input_column += yyleng; |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
946 curr_lexer->string_text += '\r'; |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
947 } |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
948 |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
949 <DQ_STRING_START>"\\t" { |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
950 curr_lexer->lexer_debug ("<DQ_STRING_START>\"\\\\t\""); |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
951 |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
952 curr_lexer->current_input_column += yyleng; |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
953 curr_lexer->string_text += '\t'; |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
954 } |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
955 |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
956 <DQ_STRING_START>"\\v" { |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
957 curr_lexer->lexer_debug ("<DQ_STRING_START>\"\\\\v\""); |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
958 |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
959 curr_lexer->current_input_column += yyleng; |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
960 curr_lexer->string_text += '\v'; |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
961 } |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
962 |
18428
4d2e15abe5e7
Disallow comments after continuation in double-quoted strings (bug #41415).
Stefan Mahr <dac922@gmx.de>
parents:
18319
diff
changeset
|
963 <DQ_STRING_START>(\.\.\.){S}*{NL} { |
4d2e15abe5e7
Disallow comments after continuation in double-quoted strings (bug #41415).
Stefan Mahr <dac922@gmx.de>
parents:
18319
diff
changeset
|
964 curr_lexer->lexer_debug ("<DQ_STRING_START>(\\.\\.\\.){S}*{NL}"); |
16914
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
965 |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
966 static const char *msg = "'...' continuations in double-quoted character strings are obsolete and will not be allowed in a future version of Octave; please use '\\' instead"; |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
967 |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
968 std::string nm = curr_lexer->fcn_file_full_name; |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
969 |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
970 if (nm.empty ()) |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
971 warning_with_id ("Octave:deprecated-syntax", "%s", msg); |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
972 else |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
973 warning_with_id ("Octave:deprecated-syntax", |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
974 "%s; near line %d of file '%s'", msg, |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
975 curr_lexer->input_line_number, nm.c_str ()); |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
976 |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
977 HANDLE_STRING_CONTINUATION; |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
978 } |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
979 |
18428
4d2e15abe5e7
Disallow comments after continuation in double-quoted strings (bug #41415).
Stefan Mahr <dac922@gmx.de>
parents:
18319
diff
changeset
|
980 <DQ_STRING_START>\\{S}+{NL} { |
4d2e15abe5e7
Disallow comments after continuation in double-quoted strings (bug #41415).
Stefan Mahr <dac922@gmx.de>
parents:
18319
diff
changeset
|
981 curr_lexer->lexer_debug ("<DQ_STRING_START>\\\\{S}+{NL}"); |
16914
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
982 |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
983 static const char *msg = "white space and comments after continuation markers in double-quoted character strings are obsolete and will not be allowed in a future version of Octave"; |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
984 |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
985 std::string nm = curr_lexer->fcn_file_full_name; |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
986 |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
987 if (nm.empty ()) |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
988 warning_with_id ("Octave:deprecated-syntax", "%s", msg); |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
989 else |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
990 warning_with_id ("Octave:deprecated-syntax", |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
991 "%s; near line %d of file '%s'", msg, |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
992 curr_lexer->input_line_number, nm.c_str ()); |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
993 |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
994 HANDLE_STRING_CONTINUATION; |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
995 } |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
996 |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
997 <DQ_STRING_START>\\{NL} { |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
998 curr_lexer->lexer_debug ("<DQ_STRING_START>\\\\{NL}"); |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
999 |
16914
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
1000 HANDLE_STRING_CONTINUATION; |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1001 } |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1002 |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1003 <DQ_STRING_START>\\. { |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1004 curr_lexer->lexer_debug ("<DQ_STRING_START>\\\\."); |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1005 |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1006 curr_lexer->current_input_column += yyleng; |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1007 curr_lexer->string_text += yytext[1]; |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1008 } |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1009 |
16914
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
1010 <DQ_STRING_START>\. { |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
1011 curr_lexer->lexer_debug ("<DQ_STRING_START>\\."); |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
1012 |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
1013 curr_lexer->current_input_column++; |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
1014 curr_lexer->string_text += yytext[0]; |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
1015 } |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
1016 |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
1017 <DQ_STRING_START>[^\.\\\r\n\"]+ { |
bc12849bb6cc
deprecate ... and whitespace/comments after continuation markers in strings
John W. Eaton <jwe@octave.org>
parents:
16904
diff
changeset
|
1018 curr_lexer->lexer_debug ("<DQ_STRING_START>[^\\.\\\\\\r\\n\\\"]+"); |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1019 |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1020 curr_lexer->current_input_column += yyleng; |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1021 curr_lexer->string_text += yytext; |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1022 } |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1023 |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1024 <DQ_STRING_START>{NL} { |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1025 curr_lexer->lexer_debug ("<DQ_STRING_START>{NL}"); |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1026 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1027 octave::token *tok |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1028 = new octave::token (LEXICAL_ERROR, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1029 "unterminated character string constant", |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1030 curr_lexer->input_line_number, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1031 curr_lexer->current_input_column); |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1032 |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1033 curr_lexer->push_token (tok); |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1034 |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1035 curr_lexer->input_line_number++; |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1036 curr_lexer->current_input_column = 1; |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1037 |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1038 return curr_lexer->count_token_internal (LEXICAL_ERROR); |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1039 } |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1040 |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1041 %{ |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1042 // Single-quoted character strings. |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1043 %} |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1044 |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1045 <SQ_STRING_START>\'\' { |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1046 curr_lexer->lexer_debug ("<SQ_STRING_START>\\'\\'"); |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1047 |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1048 curr_lexer->current_input_column += yyleng; |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1049 curr_lexer->string_text += '\''; |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1050 } |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1051 |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1052 <SQ_STRING_START>\' { |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1053 curr_lexer->lexer_debug ("<SQ_STRING_START>\\'"); |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1054 |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1055 curr_lexer->current_input_column++; |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1056 |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1057 curr_lexer->pop_start_state (); |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1058 |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
1059 if (curr_lexer->start_state() != COMMAND_START) |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
1060 { |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
1061 curr_lexer->looking_for_object_index = true; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
1062 curr_lexer->at_beginning_of_statement = false; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
1063 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1064 curr_lexer->push_token (new octave::token (SQ_STRING, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1065 curr_lexer->string_text, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1066 curr_lexer->string_line, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1067 curr_lexer->string_column)); |
18224
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
1068 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
1069 curr_lexer->string_text = ""; |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
1070 |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
1071 return curr_lexer->count_token_internal (SQ_STRING); |
615fdd2238c1
improve compatibility of command syntax parsing (bug #41032)
Michael C. Grant <mcg@cvxr.com>
parents:
18139
diff
changeset
|
1072 } |
16904
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1073 } |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1074 |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1075 <SQ_STRING_START>[^\'\n\r]+ { |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1076 curr_lexer->lexer_debug ("<SQ_STRING_START>[^\\'\\n\\r]+"); |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1077 |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1078 curr_lexer->current_input_column += yyleng; |
f29dd5a7591d
more tweaks for parsing character strings
John W. Eaton <jwe@octave.org>
parents:
16903
diff
changeset
|
1079 curr_lexer->string_text += yytext; |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1080 } |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1081 |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1082 <SQ_STRING_START>{NL} { |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1083 curr_lexer->lexer_debug ("<SQ_STRING_START>{NL}"); |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1084 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1085 octave::token *tok |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1086 = new octave::token (LEXICAL_ERROR, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1087 "unterminated character string constant", |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1088 curr_lexer->input_line_number, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1089 curr_lexer->current_input_column); |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1090 |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1091 curr_lexer->push_token (tok); |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1092 |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1093 curr_lexer->input_line_number++; |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1094 curr_lexer->current_input_column = 1; |
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1095 |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1096 return curr_lexer->count_token_internal (LEXICAL_ERROR); |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1097 } |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1098 |
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1099 %{ |
18520
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1100 // Fully-qualified identifiers (used for classdef). |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1101 %} |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1102 |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1103 <FQ_IDENT_START>{FQIDENT} { |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1104 curr_lexer->lexer_debug ("<FQ_IDENT_START>{FQIDENT}"); |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1105 curr_lexer->pop_start_state (); |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1106 |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1107 int id_tok = curr_lexer->handle_fq_identifier (); |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1108 |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1109 if (id_tok >= 0) |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1110 { |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1111 curr_lexer->looking_for_object_index = true; |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1112 |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1113 return curr_lexer->count_token_internal (id_tok); |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1114 } |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1115 } |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1116 |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1117 <FQ_IDENT_START>{S}+ { |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1118 curr_lexer->current_input_column += yyleng; |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1119 |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1120 curr_lexer->mark_previous_token_trailing_space (); |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1121 } |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1122 |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1123 <FQ_IDENT_START>. { |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1124 yyless (0); |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1125 curr_lexer->pop_start_state (); |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1126 } |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1127 |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1128 %{ |
968 | 1129 // Imaginary numbers. |
1130 %} | |
1131 | |
1132 {NUMBER}{Im} { | |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1133 curr_lexer->lexer_debug ("{NUMBER}{Im}"); |
8535 | 1134 |
16361
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1135 if (curr_lexer->previous_token_may_be_command () |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1136 && curr_lexer->space_follows_previous_token ()) |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1137 { |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1138 yyless (0); |
16361
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1139 curr_lexer->push_start_state (COMMAND_START); |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1140 } |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1141 else |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1142 { |
16361
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1143 int tok = curr_lexer->previous_token_value (); |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1144 |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1145 if (curr_lexer->whitespace_is_significant () |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1146 && curr_lexer->space_follows_previous_token () |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1147 && ! (tok == '[' || tok == '{' |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1148 || curr_lexer->previous_token_is_binop ())) |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1149 { |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1150 yyless (0); |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1151 unput (','); |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1152 } |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1153 else |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1154 { |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1155 curr_lexer->handle_number (); |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1156 return curr_lexer->count_token_internal (IMAG_NUM); |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1157 } |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1158 } |
968 | 1159 } |
1160 | |
1161 %{ | |
15466
d174210ce1ec
use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents:
14161
diff
changeset
|
1162 // Real numbers. Don't grab the '.' part of a dot operator as part of |
968 | 1163 // the constant. |
1164 %} | |
1165 | |
20588
e34692daf663
Extend parser to accept '_' in numbers.
Rik <rik@octave.org>
parents:
20547
diff
changeset
|
1166 {D}{D_}*/\.[\*/\\^\'] | |
968 | 1167 {NUMBER} { |
20588
e34692daf663
Extend parser to accept '_' in numbers.
Rik <rik@octave.org>
parents:
20547
diff
changeset
|
1168 curr_lexer->lexer_debug ("{D}{D_}*/\\.[\\*/\\\\^\\']|{NUMBER}"); |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1169 |
16361
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1170 if (curr_lexer->previous_token_may_be_command () |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1171 && curr_lexer->space_follows_previous_token ()) |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1172 { |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1173 yyless (0); |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1174 curr_lexer->push_start_state (COMMAND_START); |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1175 } |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1176 else |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1177 { |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1178 int tok = curr_lexer->previous_token_value (); |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1179 |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1180 if (curr_lexer->whitespace_is_significant () |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1181 && curr_lexer->space_follows_previous_token () |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1182 && ! (tok == '[' || tok == '{' |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1183 || curr_lexer->previous_token_is_binop ())) |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1184 { |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1185 yyless (0); |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1186 unput (','); |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1187 } |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1188 else |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1189 { |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1190 curr_lexer->handle_number (); |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1191 return curr_lexer->count_token_internal (NUM); |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1192 } |
e1dcd834751f
and foo NUMBER as command syntax (bug #38565)
John W. Eaton <jwe@octave.org>
parents:
16360
diff
changeset
|
1193 } |
968 | 1194 } |
1195 | |
1196 %{ | |
1197 // Eat whitespace. Whitespace inside matrix constants is handled by | |
4208 | 1198 // the <MATRIX_START> start state code above. |
968 | 1199 %} |
1200 | |
16363
d16c255299c0
recognize block comment begin while processing line comments (bug #38559)
John W. Eaton <jwe@octave.org>
parents:
16361
diff
changeset
|
1201 {S}+ { |
16110
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1202 curr_lexer->current_input_column += yyleng; |
16255
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
1203 |
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
1204 curr_lexer->mark_previous_token_trailing_space (); |
967 | 1205 } |
1206 | |
968 | 1207 %{ |
17247
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1208 // Continuation lines. Allow arbitrary text after continuations. |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1209 %} |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1210 |
18311
b14cdae65abd
prevent lexer from matching patterns across CR line endings (bug #41281)
John W. Eaton <jwe@octave.org>
parents:
18246
diff
changeset
|
1211 \.\.\.{ANY_EXCEPT_NL}*{NL} { |
b14cdae65abd
prevent lexer from matching patterns across CR line endings (bug #41281)
John W. Eaton <jwe@octave.org>
parents:
18246
diff
changeset
|
1212 curr_lexer->lexer_debug ("\\.\\.\\.{ANY_EXCEPT_NL}*{NL}"); |
17247
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1213 |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1214 curr_lexer->handle_continuation (); |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1215 } |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1216 |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1217 %{ |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1218 // Deprecated C preprocessor style continuation markers. |
968 | 1219 %} |
1220 | |
17246
8be8a65d3ca8
Ignore anything after the continuation marker '...' (bug #38653)
Stefan Mahr <dac922@gmx.de>
parents:
17244
diff
changeset
|
1221 \\{S}*{NL} | |
18311
b14cdae65abd
prevent lexer from matching patterns across CR line endings (bug #41281)
John W. Eaton <jwe@octave.org>
parents:
18246
diff
changeset
|
1222 \\{S}*{CCHAR}{ANY_EXCEPT_NL}*{NL} { |
b14cdae65abd
prevent lexer from matching patterns across CR line endings (bug #41281)
John W. Eaton <jwe@octave.org>
parents:
18246
diff
changeset
|
1223 curr_lexer->lexer_debug ("\\\\{S}*{NL}|\\\\{S}*{CCHAR}{ANY_EXCEPT_NL}*{NL}"); |
17247
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1224 |
22505
7bdc80232cdc
Expand warning for '\' continuation marker to recommend "..." (bug #48810).
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
1225 static const char *msg = "using continuation marker \\ outside of double quoted strings is deprecated and will be removed from a future version of Octave, use ... instead"; |
17247
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1226 |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1227 std::string nm = curr_lexer->fcn_file_full_name; |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1228 |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1229 if (nm.empty ()) |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1230 warning_with_id ("Octave:deprecated-syntax", "%s", msg); |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1231 else |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1232 warning_with_id ("Octave:deprecated-syntax", |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1233 "%s; near line %d of file '%s'", msg, |
e993fa124b46
Deprecate \ as continuation marker outside of double-quoted character strings.
John W. Eaton <jwe@octave.org>
parents:
17246
diff
changeset
|
1234 curr_lexer->input_line_number, nm.c_str ()); |
17343
6470a113eae2
correctly handle deprecated \ continuation markers
John W. Eaton <jwe@octave.org>
parents:
17247
diff
changeset
|
1235 |
6470a113eae2
correctly handle deprecated \ continuation markers
John W. Eaton <jwe@octave.org>
parents:
17247
diff
changeset
|
1236 curr_lexer->handle_continuation (); |
967 | 1237 } |
1 | 1238 |
968 | 1239 %{ |
1240 // End of file. | |
1241 %} | |
1242 | |
967 | 1243 <<EOF>> { |
16164
c5bfdc4c0963
move end_of_input flag from octve_parser class to octave_lexer class
John W. Eaton <jwe@octave.org>
parents:
16158
diff
changeset
|
1244 return curr_lexer->handle_end_of_input (); |
967 | 1245 } |
1 | 1246 |
968 | 1247 %{ |
16259
0b5ab09dfce4
2/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16257
diff
changeset
|
1248 // Identifiers. |
18394
fc0ce9eb9d82
don't allow get and set followed by "(" to be recognized as keywords.
John W. Eaton <jwe@octave.org>
parents:
18341
diff
changeset
|
1249 |
fc0ce9eb9d82
don't allow get and set followed by "(" to be recognized as keywords.
John W. Eaton <jwe@octave.org>
parents:
18341
diff
changeset
|
1250 // Don't allow get and set to be recognized as keywords if they are |
fc0ce9eb9d82
don't allow get and set followed by "(" to be recognized as keywords.
John W. Eaton <jwe@octave.org>
parents:
18341
diff
changeset
|
1251 // followed by "(". |
968 | 1252 %} |
1253 | |
21705
764e586dca4b
Avoid use of REJECT in parser (bug #45947).
Rik <rik@octave.org>
parents:
21635
diff
changeset
|
1254 (set|get){S}*\( { |
21722
fb5dd9f7d697
* oct-parse.in.yy: Correct pattern string in call to HANDLE_IDENTIFIER.
John W. Eaton <jwe@octave.org>
parents:
21705
diff
changeset
|
1255 HANDLE_IDENTIFIER ("(set|get){S}*\\(", true); |
18394
fc0ce9eb9d82
don't allow get and set followed by "(" to be recognized as keywords.
John W. Eaton <jwe@octave.org>
parents:
18341
diff
changeset
|
1256 } |
fc0ce9eb9d82
don't allow get and set followed by "(" to be recognized as keywords.
John W. Eaton <jwe@octave.org>
parents:
18341
diff
changeset
|
1257 |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1258 {IDENT} { |
18394
fc0ce9eb9d82
don't allow get and set followed by "(" to be recognized as keywords.
John W. Eaton <jwe@octave.org>
parents:
18341
diff
changeset
|
1259 HANDLE_IDENTIFIER ("{IDENT}", false); |
967 | 1260 } |
1 | 1261 |
968 | 1262 %{ |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
1263 // Superclass method identifiers. |
9476 | 1264 %} |
1265 | |
18520
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1266 {IDENT}@{FQIDENT} { |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1267 curr_lexer->lexer_debug ("{IDENT}@{FQIDENT}"); |
9476 | 1268 |
16680
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1269 if (curr_lexer->previous_token_may_be_command ()) |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1270 { |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1271 yyless (0); |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1272 curr_lexer->push_start_state (COMMAND_START); |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1273 } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1274 else |
9476 | 1275 { |
16680
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1276 int id_tok = curr_lexer->handle_superclass_identifier (); |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1277 |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1278 if (id_tok >= 0) |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1279 { |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1280 curr_lexer->looking_for_object_index = true; |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1281 |
16683
e1c6ad54259f
maint: periodic merge of default to classdef
John W. Eaton <jwe@octave.org>
diff
changeset
|
1282 return curr_lexer->count_token_internal (id_tok); |
16680
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1283 } |
9476 | 1284 } |
1285 } | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
1286 |
9476 | 1287 %{ |
1288 // Metaclass query | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
1289 %} |
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
1290 |
18520
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1291 \?{FQIDENT} { |
932aca9a7c57
Allow multi-level classdef package.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
18497
diff
changeset
|
1292 curr_lexer->lexer_debug ("\\?{FQIDENT}"); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
1293 |
16680
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1294 if (curr_lexer->previous_token_may_be_command () |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1295 && curr_lexer->space_follows_previous_token ()) |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1296 { |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1297 yyless (0); |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1298 curr_lexer->push_start_state (COMMAND_START); |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1299 } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1300 else |
9476 | 1301 { |
16680
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1302 int id_tok = curr_lexer->handle_meta_identifier (); |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1303 |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1304 if (id_tok >= 0) |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1305 { |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1306 curr_lexer->looking_for_object_index = true; |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1307 |
16683
e1c6ad54259f
maint: periodic merge of default to classdef
John W. Eaton <jwe@octave.org>
diff
changeset
|
1308 return curr_lexer->count_token_internal (id_tok); |
16680
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1309 } |
9476 | 1310 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
1311 } |
9476 | 1312 |
4930 | 1313 "@" { |
18492
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1314 curr_lexer->lexer_debug ("@"); |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1315 |
16334
06aa4c0f2018
handle foo @... as command syntax
John W. Eaton <jwe@octave.org>
parents:
16325
diff
changeset
|
1316 if (curr_lexer->previous_token_may_be_command () |
06aa4c0f2018
handle foo @... as command syntax
John W. Eaton <jwe@octave.org>
parents:
16325
diff
changeset
|
1317 && curr_lexer->space_follows_previous_token ()) |
06aa4c0f2018
handle foo @... as command syntax
John W. Eaton <jwe@octave.org>
parents:
16325
diff
changeset
|
1318 { |
06aa4c0f2018
handle foo @... as command syntax
John W. Eaton <jwe@octave.org>
parents:
16325
diff
changeset
|
1319 yyless (0); |
06aa4c0f2018
handle foo @... as command syntax
John W. Eaton <jwe@octave.org>
parents:
16325
diff
changeset
|
1320 curr_lexer->push_start_state (COMMAND_START); |
06aa4c0f2018
handle foo @... as command syntax
John W. Eaton <jwe@octave.org>
parents:
16325
diff
changeset
|
1321 } |
06aa4c0f2018
handle foo @... as command syntax
John W. Eaton <jwe@octave.org>
parents:
16325
diff
changeset
|
1322 else |
06aa4c0f2018
handle foo @... as command syntax
John W. Eaton <jwe@octave.org>
parents:
16325
diff
changeset
|
1323 { |
18492
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1324 int tok = curr_lexer->previous_token_value (); |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1325 |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1326 if (curr_lexer->whitespace_is_significant () |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1327 && curr_lexer->space_follows_previous_token () |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1328 && ! (tok == '[' || tok == '{' |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1329 || curr_lexer->previous_token_is_binop ())) |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1330 { |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1331 yyless (0); |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1332 unput (','); |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1333 } |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1334 else |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1335 { |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1336 curr_lexer->current_input_column++; |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1337 |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1338 curr_lexer->looking_at_function_handle++; |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1339 curr_lexer->looking_for_object_index = false; |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1340 curr_lexer->at_beginning_of_statement = false; |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1341 |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1342 return curr_lexer->count_token ('@'); |
e4c319ed2414
Fix regression, allow space-separated cell array of function handles (bug #41569)
Mike Miller <mtmiller@ieee.org>
parents:
18428
diff
changeset
|
1343 } |
16334
06aa4c0f2018
handle foo @... as command syntax
John W. Eaton <jwe@octave.org>
parents:
16325
diff
changeset
|
1344 } |
4342 | 1345 } |
1346 | |
1347 %{ | |
968 | 1348 // A new line character. New line characters inside matrix constants |
4208 | 1349 // are handled by the <MATRIX_START> start state code above. If closest |
985 | 1350 // nesting is inside parentheses, don't return a row separator. |
968 | 1351 %} |
1352 | |
967 | 1353 {NL} { |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1354 curr_lexer->lexer_debug ("{NL}"); |
8535 | 1355 |
16309
e608de76742c
allow newline to terminate anonymous function definition
John W. Eaton <jwe@octave.org>
parents:
16299
diff
changeset
|
1356 if (curr_lexer->nesting_level.is_paren ()) |
e608de76742c
allow newline to terminate anonymous function definition
John W. Eaton <jwe@octave.org>
parents:
16299
diff
changeset
|
1357 { |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1358 curr_lexer->input_line_number++; |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1359 curr_lexer->current_input_column = 1; |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1360 |
16309
e608de76742c
allow newline to terminate anonymous function definition
John W. Eaton <jwe@octave.org>
parents:
16299
diff
changeset
|
1361 curr_lexer->at_beginning_of_statement = false; |
21102
dfcb9d74b253
Rename local gripe_XXX functions to err_XXX or warn_XXX.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
1362 curr_lexer->warn_language_extension |
16309
e608de76742c
allow newline to terminate anonymous function definition
John W. Eaton <jwe@octave.org>
parents:
16299
diff
changeset
|
1363 ("bare newline inside parentheses"); |
e608de76742c
allow newline to terminate anonymous function definition
John W. Eaton <jwe@octave.org>
parents:
16299
diff
changeset
|
1364 } |
e608de76742c
allow newline to terminate anonymous function definition
John W. Eaton <jwe@octave.org>
parents:
16299
diff
changeset
|
1365 else if (curr_lexer->nesting_level.none () |
e608de76742c
allow newline to terminate anonymous function definition
John W. Eaton <jwe@octave.org>
parents:
16299
diff
changeset
|
1366 || curr_lexer->nesting_level.is_anon_fcn_body ()) |
8746
5dd06f19e9be
handle commands in the lexer
John W. Eaton <jwe@octave.org>
parents:
8745
diff
changeset
|
1367 { |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1368 curr_lexer->input_line_number++; |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1369 curr_lexer->current_input_column = 1; |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1370 |
16110
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1371 curr_lexer->at_beginning_of_statement = true; |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1372 |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1373 return curr_lexer->count_token ('\n'); |
8746
5dd06f19e9be
handle commands in the lexer
John W. Eaton <jwe@octave.org>
parents:
8745
diff
changeset
|
1374 } |
16110
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1375 else if (curr_lexer->nesting_level.is_bracket_or_brace ()) |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1376 { |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1377 octave::token *tok |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1378 = new octave::token (LEXICAL_ERROR, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1379 "unexpected internal lexer error", |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1380 curr_lexer->input_line_number, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1381 curr_lexer->current_input_column); |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1382 |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1383 curr_lexer->push_token (tok); |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1384 |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1385 curr_lexer->input_line_number++; |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1386 curr_lexer->current_input_column = 1; |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1387 |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1388 return curr_lexer->count_token_internal (LEXICAL_ERROR); |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1389 } |
967 | 1390 } |
1 | 1391 |
968 | 1392 %{ |
1393 // Single quote can either be the beginning of a string or a transpose | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
1394 // operator. |
968 | 1395 %} |
1396 | |
967 | 1397 "'" { |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1398 curr_lexer->lexer_debug ("'"); |
8535 | 1399 |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1400 if (curr_lexer->previous_token_may_be_command () |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1401 && curr_lexer->space_follows_previous_token ()) |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1402 { |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1403 curr_lexer->current_input_column++; |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1404 curr_lexer->push_start_state (COMMAND_START); |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1405 curr_lexer->begin_string (SQ_STRING_START); |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1406 } |
16681
d3619d4d267c
recognize character string at beginning of statement (bug #38926, #38958)
John W. Eaton <jwe@octave.org>
parents:
16680
diff
changeset
|
1407 else if (curr_lexer->at_beginning_of_statement) |
d3619d4d267c
recognize character string at beginning of statement (bug #38926, #38958)
John W. Eaton <jwe@octave.org>
parents:
16680
diff
changeset
|
1408 { |
d3619d4d267c
recognize character string at beginning of statement (bug #38926, #38958)
John W. Eaton <jwe@octave.org>
parents:
16680
diff
changeset
|
1409 curr_lexer->current_input_column++; |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1410 curr_lexer->begin_string (SQ_STRING_START); |
16681
d3619d4d267c
recognize character string at beginning of statement (bug #38926, #38958)
John W. Eaton <jwe@octave.org>
parents:
16680
diff
changeset
|
1411 } |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1412 else |
967 | 1413 { |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1414 int tok = curr_lexer->previous_token_value (); |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1415 |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1416 if (curr_lexer->whitespace_is_significant ()) |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1417 { |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1418 if (curr_lexer->space_follows_previous_token ()) |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1419 { |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1420 if (tok == '[' || tok == '{' |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1421 || curr_lexer->previous_token_is_binop ()) |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1422 { |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1423 curr_lexer->current_input_column++; |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1424 curr_lexer->begin_string (SQ_STRING_START); |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1425 } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1426 else |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1427 { |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1428 yyless (0); |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1429 curr_lexer->xunput (','); |
16281
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
1430 // Adjust for comma that was not really in the input stream. |
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
1431 curr_lexer->current_input_column--; |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1432 } |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1433 } |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1434 else |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1435 { |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1436 if (tok == '[' || tok == '{' |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1437 || curr_lexer->previous_token_is_binop () |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1438 || curr_lexer->previous_token_is_keyword ()) |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1439 { |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1440 curr_lexer->current_input_column++; |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1441 curr_lexer->begin_string (SQ_STRING_START); |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1442 } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1443 else |
16284
09881dab3aaf
* lex.ll, oct-parse.in.yy (HERMITIAN): Rename token from QUOTE.
John W. Eaton <jwe@octave.org>
parents:
16283
diff
changeset
|
1444 return curr_lexer->count_token (HERMITIAN); |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1445 } |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1446 } |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1447 else |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1448 { |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1449 if (! tok || tok == '[' || tok == '{' || tok == '(' |
16267
15f55df088e7
6/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16265
diff
changeset
|
1450 || curr_lexer->previous_token_is_binop () |
15f55df088e7
6/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16265
diff
changeset
|
1451 || curr_lexer->previous_token_is_keyword ()) |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1452 { |
16261
b45a90cdb0ae
3/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16259
diff
changeset
|
1453 curr_lexer->current_input_column++; |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1454 curr_lexer->begin_string (SQ_STRING_START); |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1455 } |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1456 else |
16284
09881dab3aaf
* lex.ll, oct-parse.in.yy (HERMITIAN): Rename token from QUOTE.
John W. Eaton <jwe@octave.org>
parents:
16283
diff
changeset
|
1457 return curr_lexer->count_token (HERMITIAN); |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1458 } |
967 | 1459 } |
1460 } | |
1 | 1461 |
968 | 1462 %{ |
971 | 1463 // Double quotes always begin strings. |
1464 %} | |
1465 | |
973 | 1466 \" { |
16903
f21194531877
improve character string handling in the lexer
John W. Eaton <jwe@octave.org>
parents:
16898
diff
changeset
|
1467 curr_lexer->lexer_debug ("\\\""); |
8535 | 1468 |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1469 if (curr_lexer->previous_token_may_be_command () |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1470 && curr_lexer->space_follows_previous_token ()) |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1471 { |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1472 curr_lexer->current_input_column++; |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1473 curr_lexer->push_start_state (COMMAND_START); |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1474 curr_lexer->begin_string (DQ_STRING_START); |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1475 } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1476 else |
16261
b45a90cdb0ae
3/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16259
diff
changeset
|
1477 { |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1478 int tok = curr_lexer->previous_token_value (); |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1479 |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1480 if (curr_lexer->whitespace_is_significant ()) |
16261
b45a90cdb0ae
3/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16259
diff
changeset
|
1481 { |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1482 if (curr_lexer->space_follows_previous_token ()) |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1483 { |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1484 if (tok == '[' || tok == '{' |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1485 || curr_lexer->previous_token_is_binop ()) |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1486 { |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1487 curr_lexer->current_input_column++; |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1488 curr_lexer->begin_string (DQ_STRING_START); |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1489 } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1490 else |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1491 { |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1492 yyless (0); |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1493 curr_lexer->xunput (','); |
16281
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
1494 // Adjust for comma that was not really in the input stream. |
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
1495 curr_lexer->current_input_column--; |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1496 } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1497 } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1498 else |
16261
b45a90cdb0ae
3/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16259
diff
changeset
|
1499 { |
b45a90cdb0ae
3/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16259
diff
changeset
|
1500 curr_lexer->current_input_column++; |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1501 curr_lexer->begin_string (DQ_STRING_START); |
16261
b45a90cdb0ae
3/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16259
diff
changeset
|
1502 } |
b45a90cdb0ae
3/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16259
diff
changeset
|
1503 } |
b45a90cdb0ae
3/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16259
diff
changeset
|
1504 else |
b45a90cdb0ae
3/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16259
diff
changeset
|
1505 { |
b45a90cdb0ae
3/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16259
diff
changeset
|
1506 curr_lexer->current_input_column++; |
16898
531473481084
rewrite string parsing to avoid unlimited lookahead
John W. Eaton <jwe@octave.org>
parents:
16788
diff
changeset
|
1507 curr_lexer->begin_string (DQ_STRING_START); |
16261
b45a90cdb0ae
3/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16259
diff
changeset
|
1508 } |
b45a90cdb0ae
3/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16259
diff
changeset
|
1509 } |
b45a90cdb0ae
3/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16259
diff
changeset
|
1510 } |
971 | 1511 |
1512 %{ | |
968 | 1513 // Other operators. |
1514 %} | |
1515 | |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1516 ":" { CMD_OR_OP (":", ':', true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1517 ".+" { CMD_OR_OP (".+", EPLUS, false); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1518 ".-" { CMD_OR_OP (".-", EMINUS, false); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1519 ".*" { CMD_OR_OP (".*", EMUL, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1520 "./" { CMD_OR_OP ("./", EDIV, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1521 ".\\" { CMD_OR_OP (".\\", ELEFTDIV, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1522 ".^" { CMD_OR_OP (".^", EPOW, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1523 ".**" { CMD_OR_OP (".**", EPOW, false); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1524 "<=" { CMD_OR_OP ("<=", EXPR_LE, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1525 "==" { CMD_OR_OP ("==", EXPR_EQ, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1526 "~=" { CMD_OR_OP ("~=", EXPR_NE, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1527 "!=" { CMD_OR_OP ("!=", EXPR_NE, false); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1528 ">=" { CMD_OR_OP (">=", EXPR_GE, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1529 "&" { CMD_OR_OP ("&", EXPR_AND, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1530 "|" { CMD_OR_OP ("|", EXPR_OR, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1531 "<" { CMD_OR_OP ("<", EXPR_LT, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1532 ">" { CMD_OR_OP (">", EXPR_GT, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1533 "*" { CMD_OR_OP ("*", '*', true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1534 "/" { CMD_OR_OP ("/", '/', true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1535 |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1536 %{ |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1537 // In Matlab, '\' may also trigger command syntax. |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1538 %} |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1539 |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1540 "\\" { return curr_lexer->handle_op ("\\", LEFTDIV); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1541 |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1542 "^" { CMD_OR_OP ("^", POW, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1543 "**" { CMD_OR_OP ("**", POW, false); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1544 "&&" { CMD_OR_OP ("&&", EXPR_AND_AND, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1545 "||" { CMD_OR_OP ("||", EXPR_OR_OR, true); } |
16265
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1546 |
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1547 ";" { |
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1548 bool at_beginning_of_statement |
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1549 = (! (curr_lexer->whitespace_is_significant () |
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1550 || curr_lexer->looking_at_object_index.front ())); |
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1551 |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1552 return curr_lexer->handle_op (";", ';', at_beginning_of_statement); |
16263
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1553 } |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1554 |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1555 "+" { CMD_OR_UNARY_OP ("+", '+', true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1556 "-" { CMD_OR_UNARY_OP ("-", '-', true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1557 |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1558 "~" { CMD_OR_UNARY_OP ("~", EXPR_NOT, true); } |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1559 "!" { CMD_OR_UNARY_OP ("!", EXPR_NOT, false); } |
16263
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1560 |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1561 "," { |
16265
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1562 bool at_beginning_of_statement |
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1563 = (! (curr_lexer->whitespace_is_significant () |
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1564 || curr_lexer->looking_at_object_index.front ())); |
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1565 |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1566 return curr_lexer->handle_op (",", ',', at_beginning_of_statement); |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1567 } |
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1568 |
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1569 ".'" { |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1570 return curr_lexer->handle_op (".'", TRANSPOSE, false); |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1571 } |
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1572 |
16680
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1573 "++" { CMD_OR_UNARY_OP ("++", PLUS_PLUS, false); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1574 "--" { CMD_OR_UNARY_OP ("--", MINUS_MINUS, false); } |
1 | 1575 |
967 | 1576 "(" { |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1577 curr_lexer->lexer_debug ("("); |
8535 | 1578 |
16263
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1579 bool unput_comma = false; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1580 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1581 if (curr_lexer->whitespace_is_significant () |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1582 && curr_lexer->space_follows_previous_token ()) |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1583 { |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1584 int tok = curr_lexer->previous_token_value (); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1585 |
16267
15f55df088e7
6/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16265
diff
changeset
|
1586 if (! (tok == '[' || tok == '{' |
16263
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1587 || curr_lexer->previous_token_is_binop ())) |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1588 unput_comma = true; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1589 } |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1590 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1591 if (unput_comma) |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1592 { |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1593 yyless (0); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1594 curr_lexer->xunput (','); |
16281
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
1595 // Adjust for comma that was not really in the input stream. |
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
1596 curr_lexer->current_input_column--; |
16263
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1597 } |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1598 else |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1599 { |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1600 // If we are looking for an object index, then push TRUE for |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1601 // looking_at_object_index. Otherwise, just push whatever state |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1602 // is current (so that we can pop it off the stack when we find |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1603 // the matching close paren). |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1604 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1605 curr_lexer->looking_at_object_index.push_front |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1606 (curr_lexer->looking_for_object_index); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1607 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1608 curr_lexer->looking_at_indirect_ref = false; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1609 curr_lexer->looking_for_object_index = false; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1610 curr_lexer->at_beginning_of_statement = false; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1611 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1612 curr_lexer->nesting_level.paren (); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1613 curr_lexer->decrement_promptflag (); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1614 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1615 return curr_lexer->handle_token ('('); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1616 } |
967 | 1617 } |
1618 | |
1619 ")" { | |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1620 curr_lexer->lexer_debug (")"); |
8535 | 1621 |
16110
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1622 curr_lexer->nesting_level.remove (); |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1623 curr_lexer->current_input_column++; |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1624 |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1625 curr_lexer->looking_at_object_index.pop_front (); |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1626 |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1627 curr_lexer->looking_for_object_index = true; |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1628 curr_lexer->at_beginning_of_statement = false; |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1629 |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1630 if (curr_lexer->looking_at_anon_fcn_args) |
16265
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1631 { |
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1632 curr_lexer->looking_at_anon_fcn_args = false; |
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1633 curr_lexer->nesting_level.anon_fcn_body (); |
71ee3afedb69
5/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16263
diff
changeset
|
1634 } |
13237
1bfca2bbea8b
fix parsing of anonymous functions inside cell array lists.
John W. Eaton <jwe@octave.org>
parents:
12801
diff
changeset
|
1635 |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1636 return curr_lexer->count_token (')'); |
967 | 1637 } |
1638 | |
8745
6dc61981d18b
better handling of object indexing in lexer
John W. Eaton <jwe@octave.org>
parents:
8701
diff
changeset
|
1639 "." { |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1640 curr_lexer->lexer_debug ("."); |
8745
6dc61981d18b
better handling of object indexing in lexer
John W. Eaton <jwe@octave.org>
parents:
8701
diff
changeset
|
1641 |
16325
fc565603ccbb
also accept "." as possibly beginning a command
John W. Eaton <jwe@octave.org>
parents:
16320
diff
changeset
|
1642 if (curr_lexer->previous_token_may_be_command () |
fc565603ccbb
also accept "." as possibly beginning a command
John W. Eaton <jwe@octave.org>
parents:
16320
diff
changeset
|
1643 && curr_lexer->space_follows_previous_token ()) |
fc565603ccbb
also accept "." as possibly beginning a command
John W. Eaton <jwe@octave.org>
parents:
16320
diff
changeset
|
1644 { |
fc565603ccbb
also accept "." as possibly beginning a command
John W. Eaton <jwe@octave.org>
parents:
16320
diff
changeset
|
1645 yyless (0); |
fc565603ccbb
also accept "." as possibly beginning a command
John W. Eaton <jwe@octave.org>
parents:
16320
diff
changeset
|
1646 curr_lexer->push_start_state (COMMAND_START); |
fc565603ccbb
also accept "." as possibly beginning a command
John W. Eaton <jwe@octave.org>
parents:
16320
diff
changeset
|
1647 } |
fc565603ccbb
also accept "." as possibly beginning a command
John W. Eaton <jwe@octave.org>
parents:
16320
diff
changeset
|
1648 else |
fc565603ccbb
also accept "." as possibly beginning a command
John W. Eaton <jwe@octave.org>
parents:
16320
diff
changeset
|
1649 { |
fc565603ccbb
also accept "." as possibly beginning a command
John W. Eaton <jwe@octave.org>
parents:
16320
diff
changeset
|
1650 curr_lexer->looking_for_object_index = false; |
fc565603ccbb
also accept "." as possibly beginning a command
John W. Eaton <jwe@octave.org>
parents:
16320
diff
changeset
|
1651 curr_lexer->at_beginning_of_statement = false; |
fc565603ccbb
also accept "." as possibly beginning a command
John W. Eaton <jwe@octave.org>
parents:
16320
diff
changeset
|
1652 |
fc565603ccbb
also accept "." as possibly beginning a command
John W. Eaton <jwe@octave.org>
parents:
16320
diff
changeset
|
1653 return curr_lexer->handle_token ('.'); |
fc565603ccbb
also accept "." as possibly beginning a command
John W. Eaton <jwe@octave.org>
parents:
16320
diff
changeset
|
1654 } |
8745
6dc61981d18b
better handling of object indexing in lexer
John W. Eaton <jwe@octave.org>
parents:
8701
diff
changeset
|
1655 } |
8535 | 1656 |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1657 %{ |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1658 // = and op= operators. |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1659 %} |
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1660 |
16360
11115c237231
recognize variables when parsing (bug #38576)
John W. Eaton <jwe@octave.org>
parents:
16337
diff
changeset
|
1661 "=" { |
11115c237231
recognize variables when parsing (bug #38576)
John W. Eaton <jwe@octave.org>
parents:
16337
diff
changeset
|
1662 curr_lexer->maybe_mark_previous_token_as_variable (); |
11115c237231
recognize variables when parsing (bug #38576)
John W. Eaton <jwe@octave.org>
parents:
16337
diff
changeset
|
1663 |
11115c237231
recognize variables when parsing (bug #38576)
John W. Eaton <jwe@octave.org>
parents:
16337
diff
changeset
|
1664 return curr_lexer->handle_op ("=", '='); |
11115c237231
recognize variables when parsing (bug #38576)
John W. Eaton <jwe@octave.org>
parents:
16337
diff
changeset
|
1665 } |
11115c237231
recognize variables when parsing (bug #38576)
John W. Eaton <jwe@octave.org>
parents:
16337
diff
changeset
|
1666 |
16680
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1667 "+=" { CMD_OR_COMPUTED_ASSIGN_OP ("+=", ADD_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1668 "-=" { CMD_OR_COMPUTED_ASSIGN_OP ("-=", SUB_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1669 "*=" { CMD_OR_COMPUTED_ASSIGN_OP ("*=", MUL_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1670 "/=" { CMD_OR_COMPUTED_ASSIGN_OP ("/=", DIV_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1671 "\\=" { CMD_OR_COMPUTED_ASSIGN_OP ("\\=", LEFTDIV_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1672 ".+=" { CMD_OR_COMPUTED_ASSIGN_OP (".+=", ADD_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1673 ".-=" { CMD_OR_COMPUTED_ASSIGN_OP (".-=", SUB_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1674 ".*=" { CMD_OR_COMPUTED_ASSIGN_OP (".*=", EMUL_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1675 "./=" { CMD_OR_COMPUTED_ASSIGN_OP ("./=", EDIV_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1676 ".\\=" { CMD_OR_COMPUTED_ASSIGN_OP (".\\=", ELEFTDIV_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1677 "^=" { CMD_OR_COMPUTED_ASSIGN_OP ("^=", POW_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1678 "**=" { CMD_OR_COMPUTED_ASSIGN_OP ("^=", POW_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1679 ".^=" { CMD_OR_COMPUTED_ASSIGN_OP (".^=", EPOW_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1680 ".**=" { CMD_OR_COMPUTED_ASSIGN_OP (".^=", EPOW_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1681 "&=" { CMD_OR_COMPUTED_ASSIGN_OP ("&=", AND_EQ); } |
de79cdbbdf7c
improve parsing of commands
John W. Eaton <jwe@octave.org>
parents:
16643
diff
changeset
|
1682 "|=" { CMD_OR_COMPUTED_ASSIGN_OP ("|=", OR_EQ); } |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1683 |
16275
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1684 %{ |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1685 // In Matlab, '{' may also trigger command syntax. |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1686 %} |
dd7de0345124
10/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
1687 |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1688 "{" { |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
1689 curr_lexer->lexer_debug ("{"); |
8535 | 1690 |
16263
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1691 bool unput_comma = false; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1692 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1693 if (curr_lexer->whitespace_is_significant () |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1694 && curr_lexer->space_follows_previous_token ()) |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1695 { |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1696 int tok = curr_lexer->previous_token_value (); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1697 |
16267
15f55df088e7
6/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16265
diff
changeset
|
1698 if (! (tok == '[' || tok == '{' |
16263
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1699 || curr_lexer->previous_token_is_binop ())) |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1700 unput_comma = true; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1701 } |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1702 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1703 if (unput_comma) |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1704 { |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1705 yyless (0); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1706 curr_lexer->xunput (','); |
16281
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
1707 // Adjust for comma that was not really in the input stream. |
1bbc2fc552cf
adjust line and column info when inserting new text in lexer input stream
John W. Eaton <jwe@octave.org>
parents:
16277
diff
changeset
|
1708 curr_lexer->current_input_column--; |
16263
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1709 } |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1710 else |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1711 { |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1712 curr_lexer->nesting_level.brace (); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1713 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1714 curr_lexer->looking_at_object_index.push_front |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1715 (curr_lexer->looking_for_object_index); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1716 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1717 curr_lexer->current_input_column += yyleng; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1718 curr_lexer->looking_for_object_index = false; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1719 curr_lexer->at_beginning_of_statement = false; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1720 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1721 curr_lexer->decrement_promptflag (); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1722 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1723 curr_lexer->braceflag++; |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1724 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1725 curr_lexer->push_start_state (MATRIX_START); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1726 |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1727 return curr_lexer->count_token ('{'); |
9acb86e6ac90
4/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16261
diff
changeset
|
1728 } |
3351 | 1729 } |
1730 | |
1731 "}" { | |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1732 curr_lexer->lexer_debug ("}"); |
8535 | 1733 |
16110
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1734 curr_lexer->looking_at_object_index.pop_front (); |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1735 |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1736 curr_lexer->looking_for_object_index = true; |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1737 curr_lexer->at_beginning_of_statement = false; |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1738 |
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1739 curr_lexer->nesting_level.remove (); |
3351 | 1740 |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1741 return curr_lexer->handle_token ('}'); |
3351 | 1742 } |
1743 | |
968 | 1744 %{ |
2066 | 1745 // Unrecognized input is a lexical error. |
968 | 1746 %} |
1 | 1747 |
2042 | 1748 . { |
16229
7b7b1e4968e8
use functions instead of token return macros in lexer
John W. Eaton <jwe@octave.org>
parents:
16228
diff
changeset
|
1749 curr_lexer->lexer_debug ("."); |
8535 | 1750 |
16125
96a58f197f93
allow xunput to be called without buffer argument
John W. Eaton <jwe@octave.org>
parents:
16124
diff
changeset
|
1751 curr_lexer->xunput (yytext[0]); |
16113
7c5e5e97a3bc
move static lexer helper functions to lexical_feedback class
John W. Eaton <jwe@octave.org>
parents:
16111
diff
changeset
|
1752 |
7c5e5e97a3bc
move static lexer helper functions to lexical_feedback class
John W. Eaton <jwe@octave.org>
parents:
16111
diff
changeset
|
1753 int c = curr_lexer->text_yyinput (); |
4248 | 1754 |
16294
0925d1f6875e
push parser/lexer interface
John W. Eaton <jwe@octave.org>
parents:
16293
diff
changeset
|
1755 if (c == 1) |
0925d1f6875e
push parser/lexer interface
John W. Eaton <jwe@octave.org>
parents:
16293
diff
changeset
|
1756 return -1; |
0925d1f6875e
push parser/lexer interface
John W. Eaton <jwe@octave.org>
parents:
16293
diff
changeset
|
1757 else if (c == EOF) |
0925d1f6875e
push parser/lexer interface
John W. Eaton <jwe@octave.org>
parents:
16293
diff
changeset
|
1758 return curr_lexer->handle_end_of_input (); |
0925d1f6875e
push parser/lexer interface
John W. Eaton <jwe@octave.org>
parents:
16293
diff
changeset
|
1759 else |
4240 | 1760 { |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1761 std::ostringstream buf; |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1762 |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1763 buf << "invalid character '" |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1764 << undo_string_escape (static_cast<char> (c)) |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1765 << "' (ASCII " << c << ")"; |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1766 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1767 octave::token *tok |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1768 = new octave::token (LEXICAL_ERROR, buf.str (), |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1769 curr_lexer->input_line_number, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23061
diff
changeset
|
1770 curr_lexer->current_input_column); |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1771 |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1772 curr_lexer->push_token (tok); |
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1773 |
16110
7302f8a4df83
use pointer for global lexical_feedback structure
John W. Eaton <jwe@octave.org>
parents:
16106
diff
changeset
|
1774 curr_lexer->current_input_column++; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1775 |
21064
a9f2c2d72892
handle lexical errors as parser errors (bug #46877)
John W. Eaton <jwe@octave.org>
parents:
21055
diff
changeset
|
1776 return curr_lexer->count_token_internal (LEXICAL_ERROR); |
4240 | 1777 } |
2066 | 1778 } |
1 | 1779 |
21023
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
1780 %{ |
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
1781 #if defined (HAVE_PRAGMA_GCC_DIAGNOSTIC) |
24444
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
1782 // Disable these warnings for flex code. |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
1783 # pragma GCC diagnostic ignored "-Wold-style-cast" |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
1784 # pragma GCC diagnostic ignored "-Wunused-parameter" |
21023
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
1785 #endif |
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
1786 %} |
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
1787 |
1 | 1788 %% |
1789 | |
21023
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
1790 #if defined (HAVE_PRAGMA_GCC_DIAGNOSTIC) |
24444
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
1791 // Restore prevailing warning state for remainder of the file. |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24387
diff
changeset
|
1792 # pragma GCC diagnostic pop |
21023
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
1793 #endif |
ec532a439c6f
rework method of disabling warnings from GCC
John W. Eaton <jwe@octave.org>
parents:
20957
diff
changeset
|
1794 |
19784
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1795 void * |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1796 octave_alloc (yy_size_t size, yyscan_t) |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1797 { |
21942
aab79a1885cc
limit gnulib headers to liboctave/wrappers directory
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
1798 return std::malloc (size); |
19784
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1799 } |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1800 |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1801 void * |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1802 octave_realloc (void *ptr, yy_size_t size, yyscan_t) |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1803 { |
21942
aab79a1885cc
limit gnulib headers to liboctave/wrappers directory
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
1804 return std::realloc (ptr, size); |
19784
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1805 } |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1806 |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1807 void |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1808 octave_free (void *ptr, yyscan_t) |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1809 { |
21942
aab79a1885cc
limit gnulib headers to liboctave/wrappers directory
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
1810 std::free (ptr); |
19784
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1811 } |
a3577622952c
avoid some GCC unused parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
1812 |
8447
adab48231a03
make input_line_number work again
John W. Eaton <jwe@octave.org>
parents:
8312
diff
changeset
|
1813 static void |
8535 | 1814 display_character (char c) |
1815 { | |
1816 if (isgraph (c)) | |
1817 std::cerr << c; | |
1818 else | |
1819 switch (c) | |
1820 { | |
1821 case 0: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1822 std::cerr << "NUL"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1823 break; |
8535 | 1824 |
1825 case 1: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1826 std::cerr << "SOH"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1827 break; |
8535 | 1828 |
1829 case 2: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1830 std::cerr << "STX"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1831 break; |
8535 | 1832 |
1833 case 3: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1834 std::cerr << "ETX"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1835 break; |
8535 | 1836 |
1837 case 4: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1838 std::cerr << "EOT"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1839 break; |
8535 | 1840 |
1841 case 5: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1842 std::cerr << "ENQ"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1843 break; |
8535 | 1844 |
1845 case 6: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1846 std::cerr << "ACK"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1847 break; |
8535 | 1848 |
1849 case 7: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1850 std::cerr << "\\a"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1851 break; |
8535 | 1852 |
1853 case 8: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1854 std::cerr << "\\b"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1855 break; |
8535 | 1856 |
1857 case 9: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1858 std::cerr << "\\t"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1859 break; |
8535 | 1860 |
1861 case 10: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1862 std::cerr << "\\n"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1863 break; |
8535 | 1864 |
1865 case 11: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1866 std::cerr << "\\v"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1867 break; |
8535 | 1868 |
1869 case 12: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1870 std::cerr << "\\f"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1871 break; |
8535 | 1872 |
1873 case 13: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1874 std::cerr << "\\r"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1875 break; |
8535 | 1876 |
1877 case 14: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1878 std::cerr << "SO"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1879 break; |
8535 | 1880 |
1881 case 15: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1882 std::cerr << "SI"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1883 break; |
8535 | 1884 |
1885 case 16: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1886 std::cerr << "DLE"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1887 break; |
8535 | 1888 |
1889 case 17: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1890 std::cerr << "DC1"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1891 break; |
8535 | 1892 |
1893 case 18: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1894 std::cerr << "DC2"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1895 break; |
8535 | 1896 |
1897 case 19: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1898 std::cerr << "DC3"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1899 break; |
8535 | 1900 |
1901 case 20: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1902 std::cerr << "DC4"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1903 break; |
8535 | 1904 |
1905 case 21: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1906 std::cerr << "NAK"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1907 break; |
8535 | 1908 |
1909 case 22: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1910 std::cerr << "SYN"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1911 break; |
8535 | 1912 |
1913 case 23: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1914 std::cerr << "ETB"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1915 break; |
8535 | 1916 |
1917 case 24: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1918 std::cerr << "CAN"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1919 break; |
8535 | 1920 |
1921 case 25: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1922 std::cerr << "EM"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1923 break; |
8535 | 1924 |
1925 case 26: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1926 std::cerr << "SUB"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1927 break; |
8535 | 1928 |
1929 case 27: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1930 std::cerr << "ESC"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1931 break; |
8535 | 1932 |
1933 case 28: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1934 std::cerr << "FS"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1935 break; |
8535 | 1936 |
1937 case 29: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1938 std::cerr << "GS"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1939 break; |
8535 | 1940 |
1941 case 30: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1942 std::cerr << "RS"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1943 break; |
8535 | 1944 |
1945 case 31: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1946 std::cerr << "US"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1947 break; |
8535 | 1948 |
1949 case 32: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1950 std::cerr << "SPACE"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1951 break; |
8535 | 1952 |
1953 case 127: | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1954 std::cerr << "DEL"; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
1955 break; |
8535 | 1956 } |
1957 } | |
8745
6dc61981d18b
better handling of object indexing in lexer
John W. Eaton <jwe@octave.org>
parents:
8701
diff
changeset
|
1958 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1959 namespace octave |
16114
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
1960 { |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1961 bool |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1962 is_keyword (const std::string& s) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1963 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1964 // Parsing function names like "set.property_name" inside |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1965 // classdef-style class definitions is simplified by handling the |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1966 // "set" and "get" portions of the names using the same mechanism |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1967 // as is used for keywords. However, they are not really keywords |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1968 // in the language, so omit them from the list of possible |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1969 // keywords. Likewise for "enumeration", "events", "methods", and |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1970 // "properties". |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1971 |
23796
4f12819a634f
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23787
diff
changeset
|
1972 return (octave_kw_hash::in_word_set (s.c_str (), s.length ()) != nullptr |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1973 && ! (s == "set" || s == "get" |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1974 || s == "enumeration" || s == "events" |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1975 || s == "methods" || s == "properties")); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
1976 } |
16114
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
1977 } |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
1978 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
1979 DEFUN (iskeyword, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
1980 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
1981 @deftypefn {} {} iskeyword () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
1982 @deftypefnx {} {} iskeyword (@var{name}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
1983 Return true if @var{name} is an Octave keyword. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
1984 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
1985 If @var{name} is omitted, return a list of keywords. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
1986 @seealso{isvarname, exist} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
1987 @end deftypefn */) |
16114
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
1988 { |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
1989 octave_value retval; |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
1990 |
20812
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
1991 int nargin = args.length (); |
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
1992 |
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
1993 if (nargin > 1) |
20798
bb585db6dee2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20773
diff
changeset
|
1994 print_usage (); |
bb585db6dee2
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20773
diff
changeset
|
1995 |
20812
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
1996 if (nargin == 0) |
16114
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
1997 { |
20812
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
1998 // Neither set nor get are keywords. See the note in the |
16114
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
1999 // is_keyword function for additional details. |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2000 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2001 string_vector lst (TOTAL_KEYWORDS); |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2002 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2003 int j = 0; |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2004 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2005 for (int i = 0; i < TOTAL_KEYWORDS; i++) |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2006 { |
20812
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
2007 std::string kword = wordlist[i].name; |
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
2008 |
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
2009 if (kword != "set" && kword != "get") |
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
2010 lst[j++] = kword; |
16114
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2011 } |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2012 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2013 lst.resize (j); |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2014 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2015 retval = Cell (lst.sort ()); |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2016 } |
20812
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
2017 else |
16114
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2018 { |
20812
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
2019 std::string name = args(0).xstring_value ("iskeyword: NAME must be a string"); |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2020 retval = octave::is_keyword (name); |
16114
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2021 } |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2022 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2023 return retval; |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2024 } |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2025 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2026 /* |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2027 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2028 %!assert (iskeyword ("for")) |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2029 %!assert (iskeyword ("fort"), false) |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2030 %!assert (iskeyword ("fft"), false) |
20812
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
2031 %!assert (iskeyword ("get"), false) |
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
2032 %!assert (iskeyword ("set"), false) |
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
2033 |
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
2034 %!error iskeyword ("A", "B") |
d9ca869ca124
maint: Clean-up more instances of print_usage().
Rik <rik@octave.org>
parents:
20798
diff
changeset
|
2035 %!error <NAME must be a string> iskeyword (1) |
16114
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2036 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2037 */ |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2038 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2039 DEFUN (__display_tokens__, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2040 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2041 @deftypefn {} {} __display_tokens__ () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2042 Query or set the internal variable that determines whether Octave's |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2043 lexer displays tokens as they are read. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2044 @seealso{__lexer_debug_flag__, __token_count__} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2045 @end deftypefn */) |
16114
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2046 { |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2047 return SET_INTERNAL_VARIABLE (display_tokens); |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2048 } |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2049 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2050 DEFUN (__token_count__, , , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2051 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2052 @deftypefn {} {} __token_count__ () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2053 Return the number of language tokens processed since Octave startup. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2054 @seealso{__lexer_debug_flag__, __display_tokens__} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2055 @end deftypefn */) |
16114
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2056 { |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2057 return octave_value (Vtoken_count); |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2058 } |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2059 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2060 DEFUN (__lexer_debug_flag__, args, nargout, |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2061 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2062 @deftypefn {} {@var{val} =} __lexer_debug_flag__ () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2063 @deftypefnx {} {@var{old_val} =} __lexer_debug_flag__ (@var{new_val}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2064 Query or set the internal flag that determines whether Octave's lexer prints |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2065 debug information as it processes an expression. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2066 @seealso{__display_tokens__, __token_count__, __parse_debug_flag__} |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21942
diff
changeset
|
2067 @end deftypefn */) |
16114
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2068 { |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2069 octave_value retval; |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2070 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2071 retval = set_internal_variable (lexer_debug_flag, args, nargout, |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2072 "__lexer_debug_flag__"); |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2073 |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2074 return retval; |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2075 } |
73a21ade0b6b
* lex.ll: Reorder function definitions.
John W. Eaton <jwe@octave.org>
parents:
16113
diff
changeset
|
2076 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2077 namespace octave |
16255
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16253
diff
changeset
|
2078 { |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2079 void |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2080 lexical_feedback::symbol_table_context::clear (void) |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2081 { |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2082 while (! frame_stack.empty ()) |
24361
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24356
diff
changeset
|
2083 frame_stack.pop_front (); |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2084 } |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2085 |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2086 void |
23602
214cb58ccc1c
use pointer to scope instead of scope id
John W. Eaton <jwe@octave.org>
parents:
23599
diff
changeset
|
2087 lexical_feedback::symbol_table_context::pop (void) |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2088 { |
23602
214cb58ccc1c
use pointer to scope instead of scope id
John W. Eaton <jwe@octave.org>
parents:
23599
diff
changeset
|
2089 if (empty ()) |
214cb58ccc1c
use pointer to scope instead of scope id
John W. Eaton <jwe@octave.org>
parents:
23599
diff
changeset
|
2090 panic_impossible (); |
214cb58ccc1c
use pointer to scope instead of scope id
John W. Eaton <jwe@octave.org>
parents:
23599
diff
changeset
|
2091 |
214cb58ccc1c
use pointer to scope instead of scope id
John W. Eaton <jwe@octave.org>
parents:
23599
diff
changeset
|
2092 frame_stack.pop_front (); |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2093 } |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2094 |
24361
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24356
diff
changeset
|
2095 symbol_scope |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2096 lexical_feedback::symbol_table_context::curr_scope (void) const |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2097 { |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2098 if (empty ()) |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2099 { |
24361
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24356
diff
changeset
|
2100 symbol_scope scope |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23667
diff
changeset
|
2101 = __get_current_scope__ ("lexical_feedback::symbol_table_context::curr_scope"); |
23611
91c8f006ed8b
remove additional functions from symbol_table class
John W. Eaton <jwe@octave.org>
parents:
23602
diff
changeset
|
2102 |
91c8f006ed8b
remove additional functions from symbol_table class
John W. Eaton <jwe@octave.org>
parents:
23602
diff
changeset
|
2103 return scope; |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2104 } |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2105 else |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2106 return frame_stack.front (); |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2107 } |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2108 |
24361
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24356
diff
changeset
|
2109 symbol_scope |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2110 lexical_feedback::symbol_table_context::parent_scope (void) const |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2111 { |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2112 size_t sz = size (); |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2113 |
24361
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24356
diff
changeset
|
2114 return sz > 1 ? frame_stack[1] : (sz == 1 ? frame_stack[0] : symbol_scope ()); |
23599
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2115 } |
5cb3a2bb5e1e
don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents:
23555
diff
changeset
|
2116 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2117 lexical_feedback::~lexical_feedback (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2118 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2119 tokens.clear (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2120 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2121 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2122 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2123 lexical_feedback::init (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2124 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2125 // The closest paren, brace, or bracket nesting is not an object |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2126 // index. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2127 looking_at_object_index.push_front (false); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2128 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2129 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2130 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2131 lexical_feedback::reset (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2132 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2133 end_of_input = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2134 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2135 looking_at_anon_fcn_args = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2136 looking_at_return_list = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2137 looking_at_parameter_list = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2138 looking_at_decl_list = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2139 looking_at_initializer_expression = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2140 looking_at_matrix_or_assign_lhs = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2141 looking_for_object_index = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2142 looking_at_indirect_ref = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2143 parsing_class_method = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2144 parsing_classdef = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2145 maybe_classdef_get_set_method = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2146 parsing_classdef_get_method = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2147 parsing_classdef_set_method = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2148 quote_is_transpose = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2149 force_script = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2150 reading_fcn_file = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2151 reading_script_file = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2152 reading_classdef_file = false; |
23730
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
2153 buffer_function_text = false; |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2154 input_line_number = 1; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2155 current_input_column = 1; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2156 bracketflag = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2157 braceflag = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2158 looping = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2159 defining_func = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2160 looking_at_function_handle = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2161 block_comment_nesting_level = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2162 command_arg_paren_count = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2163 token_count = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2164 current_input_line = ""; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2165 comment_text = ""; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2166 help_text = ""; |
23730
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
2167 function_text = ""; |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2168 string_text = ""; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2169 string_line = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2170 string_column = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2171 fcn_file_name = ""; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2172 fcn_file_full_name = ""; |
23667
2d4a7ae1f6cd
store directory and package names in function when function is parsed
John W. Eaton <jwe@octave.org>
parents:
23611
diff
changeset
|
2173 dir_name = ""; |
2d4a7ae1f6cd
store directory and package names in function when function is parsed
John W. Eaton <jwe@octave.org>
parents:
23611
diff
changeset
|
2174 package_name = ""; |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2175 looking_at_object_index.clear (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2176 looking_at_object_index.push_front (false); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2177 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2178 while (! parsed_function_name.empty ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2179 parsed_function_name.pop (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2180 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2181 pending_local_variables.clear (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2182 symtab_context.clear (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2183 nesting_level.reset (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2184 tokens.clear (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2185 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2186 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2187 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2188 lexical_feedback::previous_token_value (void) const |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2189 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2190 const token *tok = tokens.front (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2191 return tok ? tok->token_value () : 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2192 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2193 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2194 bool |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2195 lexical_feedback::previous_token_value_is (int tok_val) const |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2196 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2197 const token *tok = tokens.front (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2198 return tok ? tok->token_value_is (tok_val) : false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2199 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2200 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2201 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2202 lexical_feedback::mark_previous_token_trailing_space (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2203 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2204 token *tok = tokens.front (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2205 if (tok && ! previous_token_value_is ('\n')) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2206 tok->mark_trailing_space (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2207 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2208 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2209 bool |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2210 lexical_feedback::space_follows_previous_token (void) const |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2211 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2212 const token *tok = tokens.front (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2213 return tok ? tok->space_follows_token () : false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2214 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2215 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2216 bool |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2217 lexical_feedback::previous_token_is_binop (void) const |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2218 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2219 int tok = previous_token_value (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2220 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2221 return (tok == '+' || tok == '-' || tok == '@' |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2222 || tok == ',' || tok == ';' || tok == '*' || tok == '/' |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2223 || tok == ':' || tok == '=' || tok == ADD_EQ |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2224 || tok == AND_EQ || tok == DIV_EQ || tok == EDIV |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2225 || tok == EDIV_EQ || tok == ELEFTDIV || tok == ELEFTDIV_EQ |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2226 || tok == EMINUS || tok == EMUL || tok == EMUL_EQ |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2227 || tok == EPOW || tok == EPOW_EQ || tok == EXPR_AND |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2228 || tok == EXPR_AND_AND || tok == EXPR_EQ || tok == EXPR_GE |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2229 || tok == EXPR_GT || tok == EXPR_LE || tok == EXPR_LT |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2230 || tok == EXPR_NE || tok == EXPR_NOT || tok == EXPR_OR |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2231 || tok == EXPR_OR_OR || tok == LEFTDIV || tok == LEFTDIV_EQ |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2232 || tok == MUL_EQ || tok == OR_EQ || tok == POW |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2233 || tok == POW_EQ || tok == SUB_EQ); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2234 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2235 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2236 bool |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2237 lexical_feedback::previous_token_is_keyword (void) const |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2238 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2239 const token *tok = tokens.front (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2240 return tok ? tok->is_keyword () : false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2241 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2242 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2243 bool |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2244 lexical_feedback::previous_token_may_be_command (void) const |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2245 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2246 const token *tok = tokens.front (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2247 return tok ? tok->may_be_command () : false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2248 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2249 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2250 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2251 lexical_feedback::maybe_mark_previous_token_as_variable (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2252 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2253 token *tok = tokens.front (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2254 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2255 if (tok && tok->is_symbol ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2256 pending_local_variables.insert (tok->symbol_name ()); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2257 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2258 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2259 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2260 lexical_feedback::mark_as_variables (const std::list<std::string>& lst) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2261 { |
22872
551ac93c984c
maint: Use C++ range feature to simplify some for loops in libinterp/parse-tree
Rik <rik@octave.org>
parents:
22857
diff
changeset
|
2262 for (const auto& var : lst) |
551ac93c984c
maint: Use C++ range feature to simplify some for loops in libinterp/parse-tree
Rik <rik@octave.org>
parents:
22857
diff
changeset
|
2263 pending_local_variables.insert (var); |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2264 } |
16360
11115c237231
recognize variables when parsing (bug #38576)
John W. Eaton <jwe@octave.org>
parents:
16337
diff
changeset
|
2265 } |
11115c237231
recognize variables when parsing (bug #38576)
John W. Eaton <jwe@octave.org>
parents:
16337
diff
changeset
|
2266 |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2267 static bool |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2268 looks_like_copyright (const std::string& s) |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2269 { |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2270 bool retval = false; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2271 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2272 if (! s.empty ()) |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2273 { |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2274 size_t offset = s.find_first_not_of (" \t"); |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2275 |
23555
9151922777e2
Pick correct help text when shebang is present (bug #51191).
Rik <rik@octave.org>
parents:
23479
diff
changeset
|
2276 retval = (s.substr (offset, 9) == "Copyright" |
9151922777e2
Pick correct help text when shebang is present (bug #51191).
Rik <rik@octave.org>
parents:
23479
diff
changeset
|
2277 || s.substr (offset, 6) == "Author"); |
16228
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2278 } |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2279 |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2280 return retval; |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2281 } |
e19b1632d7c1
revamp most comment handling
John W. Eaton <jwe@octave.org>
parents:
16224
diff
changeset
|
2282 |
23555
9151922777e2
Pick correct help text when shebang is present (bug #51191).
Rik <rik@octave.org>
parents:
23479
diff
changeset
|
2283 static bool |
9151922777e2
Pick correct help text when shebang is present (bug #51191).
Rik <rik@octave.org>
parents:
23479
diff
changeset
|
2284 looks_like_shebang (const std::string& s) |
9151922777e2
Pick correct help text when shebang is present (bug #51191).
Rik <rik@octave.org>
parents:
23479
diff
changeset
|
2285 { |
9151922777e2
Pick correct help text when shebang is present (bug #51191).
Rik <rik@octave.org>
parents:
23479
diff
changeset
|
2286 return ((! s.empty ()) && (s[0] == '!')); |
9151922777e2
Pick correct help text when shebang is present (bug #51191).
Rik <rik@octave.org>
parents:
23479
diff
changeset
|
2287 } |
9151922777e2
Pick correct help text when shebang is present (bug #51191).
Rik <rik@octave.org>
parents:
23479
diff
changeset
|
2288 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2289 namespace octave |
1 | 2290 { |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2291 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2292 base_lexer::input_buffer::fill (const std::string& input, bool eof_arg) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2293 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2294 buffer = input; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2295 chars_left = buffer.length (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2296 pos = buffer.c_str (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2297 eof = eof_arg; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2298 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2299 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2300 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2301 base_lexer::input_buffer::copy_chunk (char *buf, size_t max_size) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2302 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2303 static const char * const eol = "\n"; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2304 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2305 size_t len = max_size > chars_left ? chars_left : max_size; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2306 assert (len > 0); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2307 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2308 memcpy (buf, pos, len); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2309 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2310 chars_left -= len; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2311 pos += len; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2312 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2313 // Make sure input ends with a new line character. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2314 if (chars_left == 0 && buf[len-1] != '\n') |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2315 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2316 if (len < max_size) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2317 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2318 // There is enough room to plug the newline character in |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2319 // the buffer. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2320 buf[len++] = '\n'; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2321 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2322 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2323 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2324 // There isn't enough room to plug the newline character |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2325 // in the buffer so arrange to have it returned on the next |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2326 // call to base_lexer::read. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2327 pos = eol; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2328 chars_left = 1; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2329 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2330 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2331 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2332 return len; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2333 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2334 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2335 base_lexer::~base_lexer (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2336 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2337 yylex_destroy (scanner); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2338 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2339 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2340 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2341 base_lexer::init (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2342 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2343 yylex_init (&scanner); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2344 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2345 // Make base_lexer object available through yyextra in |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2346 // flex-generated lexer. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2347 yyset_extra (this, scanner); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2348 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2349 clear_start_state (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2350 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2351 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2352 // Inside Flex-generated functions, yyg is the scanner cast to its real |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2353 // type. Some flex macros that we use in base_lexer member functions |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2354 // (for example, BEGIN) use yyg. If we could perform the actions of |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2355 // these macros with functions instead, we could eliminate the |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2356 // OCTAVE_YYG macro. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2357 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2358 #define OCTAVE_YYG \ |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2359 struct yyguts_t *yyg = static_cast<struct yyguts_t*> (scanner) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2360 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2361 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2362 base_lexer::reset (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2363 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2364 // Start off on the right foot. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2365 clear_start_state (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2366 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2367 symtab_context.clear (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2368 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2369 // We do want a prompt by default. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2370 promptflag (1); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2371 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2372 // Only ask for input from stdin if we are expecting interactive |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2373 // input. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2374 |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23667
diff
changeset
|
2375 if (application::interactive () |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2376 && ! (reading_fcn_file |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2377 || reading_classdef_file |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2378 || reading_script_file |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2379 || input_from_eval_string ())) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2380 yyrestart (stdin, scanner); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2381 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2382 lexical_feedback::reset (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2383 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2384 comment_buf.reset (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2385 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2386 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2387 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2388 base_lexer::prep_for_file (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2389 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2390 reading_script_file = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2391 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2392 push_start_state (INPUT_FILE_START); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2393 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2394 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2395 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2396 base_lexer::begin_string (int state) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2397 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2398 string_line = input_line_number; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2399 string_column = current_input_column; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2400 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2401 push_start_state (state); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2402 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2403 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2404 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2405 base_lexer::handle_end_of_input (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2406 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2407 lexer_debug ("<<EOF>>"); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2408 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2409 if (block_comment_nesting_level != 0) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2410 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2411 warning ("block comment open at end of input"); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2412 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2413 if ((reading_fcn_file || reading_script_file || reading_classdef_file) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2414 && ! fcn_file_name.empty ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2415 warning ("near line %d of file '%s.m'", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2416 input_line_number, fcn_file_name.c_str ()); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2417 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2418 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2419 return handle_token (END_OF_INPUT); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2420 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2421 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2422 char * |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2423 base_lexer::flex_yytext (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2424 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2425 return yyget_text (scanner); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2426 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2427 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2428 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2429 base_lexer::flex_yyleng (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2430 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2431 return yyget_leng (scanner); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2432 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2433 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2434 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2435 base_lexer::text_yyinput (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2436 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2437 int c = yyinput (scanner); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2438 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2439 if (lexer_debug_flag) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2440 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2441 std::cerr << "I: "; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2442 display_character (c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2443 std::cerr << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2444 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2445 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2446 // Convert CRLF into just LF and single CR into LF. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2447 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2448 if (c == '\r') |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2449 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2450 c = yyinput (scanner); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2451 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2452 if (lexer_debug_flag) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2453 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2454 std::cerr << "I: "; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2455 display_character (c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2456 std::cerr << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2457 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2458 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2459 if (c != '\n') |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2460 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2461 xunput (c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2462 c = '\n'; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2463 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2464 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2465 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2466 return c; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2467 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2468 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2469 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2470 base_lexer::xunput (char c, char *buf) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2471 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2472 if (c != EOF) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2473 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2474 if (lexer_debug_flag) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2475 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2476 std::cerr << "U: "; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2477 display_character (c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2478 std::cerr << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2479 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2480 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2481 yyunput (c, buf, scanner); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2482 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2483 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2484 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2485 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2486 base_lexer::xunput (char c) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2487 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2488 char *yytxt = flex_yytext (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2489 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2490 xunput (c, yytxt); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2491 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2492 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2493 bool |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2494 base_lexer::looking_at_space (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2495 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2496 int c = text_yyinput (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2497 xunput (c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2498 return (c == ' ' || c == '\t'); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2499 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2500 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2501 bool |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2502 base_lexer::inside_any_object_index (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2503 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2504 bool retval = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2505 |
22872
551ac93c984c
maint: Use C++ range feature to simplify some for loops in libinterp/parse-tree
Rik <rik@octave.org>
parents:
22857
diff
changeset
|
2506 for (const bool is_obj_idx : looking_at_object_index) |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2507 { |
22872
551ac93c984c
maint: Use C++ range feature to simplify some for loops in libinterp/parse-tree
Rik <rik@octave.org>
parents:
22857
diff
changeset
|
2508 if (is_obj_idx) |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2509 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2510 retval = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2511 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2512 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2513 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2514 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2515 return retval; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2516 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2517 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2518 bool |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2519 base_lexer::is_variable (const std::string& name, |
24361
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24356
diff
changeset
|
2520 const symbol_scope& scope) |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2521 { |
24361
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24356
diff
changeset
|
2522 return ((scope && scope.is_variable (name)) |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2523 || (pending_local_variables.find (name) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2524 != pending_local_variables.end ())); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2525 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2526 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2527 // Handle keywords. Return -1 if the keyword should be ignored. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2528 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2529 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2530 base_lexer::is_keyword_token (const std::string& s) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2531 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2532 int l = input_line_number; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2533 int c = current_input_column; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2534 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2535 int len = s.length (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2536 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2537 const octave_kw *kw = octave_kw_hash::in_word_set (s.c_str (), len); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2538 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2539 if (kw) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2540 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2541 bool previous_at_bos = at_beginning_of_statement; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2542 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2543 // May be reset to true for some token types. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2544 at_beginning_of_statement = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2545 |
23796
4f12819a634f
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23787
diff
changeset
|
2546 token *tok_val = nullptr; |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2547 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2548 switch (kw->kw_id) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2549 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2550 case break_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2551 case catch_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2552 case continue_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2553 case else_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2554 case otherwise_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2555 case return_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2556 case unwind_protect_cleanup_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2557 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2558 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2559 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2560 case persistent_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2561 case global_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2562 looking_at_decl_list = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2563 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2564 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2565 case case_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2566 case elseif_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2567 case until_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2568 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2569 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2570 case end_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2571 if (inside_any_object_index () |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2572 || (defining_func |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2573 && ! (looking_at_return_list |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2574 || parsed_function_name.top ()))) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2575 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2576 at_beginning_of_statement = previous_at_bos; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2577 return 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2578 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2579 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2580 tok_val = new token (end_kw, token::simple_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2581 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2582 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2583 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2584 case end_try_catch_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2585 tok_val = new token (end_try_catch_kw, token::try_catch_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2586 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2587 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2588 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2589 case end_unwind_protect_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2590 tok_val = new token (end_unwind_protect_kw, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2591 token::unwind_protect_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2592 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2593 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2594 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2595 case endfor_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2596 tok_val = new token (endfor_kw, token::for_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2597 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2598 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2599 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2600 case endfunction_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2601 tok_val = new token (endfunction_kw, token::function_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2602 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2603 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2604 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2605 case endif_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2606 tok_val = new token (endif_kw, token::if_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2607 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2608 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2609 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2610 case endparfor_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2611 tok_val = new token (endparfor_kw, token::parfor_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2612 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2613 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2614 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2615 case endswitch_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2616 tok_val = new token (endswitch_kw, token::switch_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2617 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2618 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2619 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2620 case endwhile_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2621 tok_val = new token (endwhile_kw, token::while_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2622 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2623 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2624 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2625 case endclassdef_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2626 tok_val = new token (endclassdef_kw, token::classdef_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2627 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2628 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2629 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2630 case endenumeration_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2631 tok_val = new token (endenumeration_kw, token::enumeration_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2632 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2633 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2634 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2635 case endevents_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2636 tok_val = new token (endevents_kw, token::events_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2637 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2638 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2639 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2640 case endmethods_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2641 tok_val = new token (endmethods_kw, token::methods_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2642 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2643 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2644 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2645 case endproperties_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2646 tok_val = new token (endproperties_kw, token::properties_end, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2647 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2648 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2649 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2650 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2651 case for_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2652 case parfor_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2653 case while_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2654 decrement_promptflag (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2655 looping++; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2656 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2657 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2658 case do_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2659 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2660 decrement_promptflag (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2661 looping++; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2662 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2663 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2664 case try_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2665 case unwind_protect_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2666 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2667 decrement_promptflag (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2668 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2669 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2670 case if_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2671 case switch_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2672 decrement_promptflag (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2673 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2674 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2675 case get_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2676 case set_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2677 // 'get' and 'set' are keywords in classdef method |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2678 // declarations. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2679 if (! maybe_classdef_get_set_method) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2680 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2681 at_beginning_of_statement = previous_at_bos; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2682 return 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2683 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2684 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2685 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2686 case enumeration_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2687 case events_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2688 case methods_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2689 case properties_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2690 // 'properties', 'methods' and 'events' are keywords for |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2691 // classdef blocks. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2692 if (! parsing_classdef) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2693 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2694 at_beginning_of_statement = previous_at_bos; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2695 return 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2696 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2697 // fall through ... |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2698 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2699 case classdef_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2700 // 'classdef' is always a keyword. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2701 decrement_promptflag (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2702 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2703 if (! force_script && token_count == 0 && input_from_file ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2704 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2705 reading_classdef_file = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2706 reading_script_file = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2707 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2708 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2709 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2710 case function_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2711 decrement_promptflag (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2712 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2713 defining_func++; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2714 parsed_function_name.push (false); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2715 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2716 if (! force_script && token_count == 0 && input_from_file ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2717 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2718 reading_fcn_file = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2719 reading_script_file = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2720 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2721 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2722 if (! (reading_fcn_file || reading_script_file |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2723 || reading_classdef_file)) |
23730
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
2724 { |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
2725 // Input must be coming from the terminal or stdin? |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
2726 buffer_function_text = true; |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
2727 function_text += (current_input_line + "\n"); |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
2728 |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
2729 input_line_number = 1; |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
2730 } |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2731 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2732 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2733 case magic_file_kw: |
18319
f59459404f55
allow "methods ftp" to work outside of classdef (bug #41227)
John W. Eaton <jwe@octave.org>
parents:
18311
diff
changeset
|
2734 { |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2735 if ((reading_fcn_file || reading_script_file |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2736 || reading_classdef_file) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2737 && ! fcn_file_full_name.empty ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2738 tok_val = new token (magic_file_kw, fcn_file_full_name, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2739 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2740 tok_val = new token (magic_file_kw, "stdin", l, c); |
18319
f59459404f55
allow "methods ftp" to work outside of classdef (bug #41227)
John W. Eaton <jwe@octave.org>
parents:
18311
diff
changeset
|
2741 } |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2742 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2743 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2744 case magic_line_kw: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2745 tok_val = new token (magic_line_kw, static_cast<double> (l), |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2746 "", l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2747 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2748 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2749 default: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2750 panic_impossible (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2751 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2752 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2753 if (! tok_val) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2754 tok_val = new token (kw->tok, true, l, c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2755 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2756 push_token (tok_val); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2757 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2758 return kw->tok; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2759 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2760 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2761 return 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2762 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2763 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2764 bool |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2765 base_lexer::fq_identifier_contains_keyword (const std::string& s) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2766 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2767 size_t p1 = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2768 size_t p2; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2769 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2770 std::string s_part; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2771 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2772 do |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2773 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2774 p2 = s.find ('.', p1); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2775 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2776 if (p2 != std::string::npos) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
2777 { |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2778 s_part = s.substr (p1, p2 - p1); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2779 p1 = p2 + 1; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10182
diff
changeset
|
2780 } |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2781 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2782 s_part = s.substr (p1); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2783 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2784 if (is_keyword_token (s_part)) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2785 return true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2786 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2787 while (p2 != std::string::npos); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2788 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2789 return false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2790 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2791 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2792 bool |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2793 base_lexer::whitespace_is_significant (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2794 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2795 return (nesting_level.is_bracket () |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2796 || (nesting_level.is_brace () |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2797 && ! looking_at_object_index.front ())); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2798 } |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
2799 } |
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
2800 |
3220 | 2801 static inline bool |
20589
7c0e10f035bd
Extend parser to accept binary constants that begin with '0b' or '0B'.
Rik <rik@octave.org>
parents:
20588
diff
changeset
|
2802 looks_like_bin (const char *s, int len) |
7c0e10f035bd
Extend parser to accept binary constants that begin with '0b' or '0B'.
Rik <rik@octave.org>
parents:
20588
diff
changeset
|
2803 { |
7c0e10f035bd
Extend parser to accept binary constants that begin with '0b' or '0B'.
Rik <rik@octave.org>
parents:
20588
diff
changeset
|
2804 return (len > 2 && s[0] == '0' && (s[1] == 'b' || s[1] == 'B')); |
7c0e10f035bd
Extend parser to accept binary constants that begin with '0b' or '0B'.
Rik <rik@octave.org>
parents:
20588
diff
changeset
|
2805 } |
7c0e10f035bd
Extend parser to accept binary constants that begin with '0b' or '0B'.
Rik <rik@octave.org>
parents:
20588
diff
changeset
|
2806 |
7c0e10f035bd
Extend parser to accept binary constants that begin with '0b' or '0B'.
Rik <rik@octave.org>
parents:
20588
diff
changeset
|
2807 static inline bool |
3220 | 2808 looks_like_hex (const char *s, int len) |
2809 { | |
2810 return (len > 2 && s[0] == '0' && (s[1] == 'x' || s[1] == 'X')); | |
2811 } | |
2812 | |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2813 namespace octave |
4037 | 2814 { |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2815 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2816 base_lexer::handle_number (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2817 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2818 double value = 0.0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2819 int nread = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2820 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2821 char *yytxt = flex_yytext (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2822 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2823 // Strip any underscores |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2824 char *tmptxt = strsave (yytxt); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2825 char *rptr = tmptxt; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2826 char *wptr = tmptxt; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2827 while (*rptr) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2828 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2829 *wptr = *rptr++; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2830 wptr += (*wptr != '_'); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2831 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2832 *wptr = '\0'; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2833 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2834 if (looks_like_hex (tmptxt, strlen (tmptxt))) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2835 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2836 uintmax_t long_int_value; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2837 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2838 nread = sscanf (tmptxt, "%jx", &long_int_value); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2839 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2840 value = static_cast<double> (long_int_value); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2841 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2842 else if (looks_like_bin (tmptxt, strlen (tmptxt))) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2843 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2844 uintmax_t long_int_value = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2845 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2846 for (size_t i = 0; i < strlen (tmptxt); i++) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2847 { |
23211
08042580fe93
Fix incorrect handling of 0b binary numbers in complex contstants.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
2848 if (tmptxt[i] == '0') |
08042580fe93
Fix incorrect handling of 0b binary numbers in complex contstants.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
2849 long_int_value <<= 1; |
08042580fe93
Fix incorrect handling of 0b binary numbers in complex contstants.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
2850 else if (tmptxt[i] == '1') |
08042580fe93
Fix incorrect handling of 0b binary numbers in complex contstants.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
2851 { |
08042580fe93
Fix incorrect handling of 0b binary numbers in complex contstants.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
2852 long_int_value <<= 1; |
08042580fe93
Fix incorrect handling of 0b binary numbers in complex contstants.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
2853 long_int_value += 1; |
08042580fe93
Fix incorrect handling of 0b binary numbers in complex contstants.
Rik <rik@octave.org>
parents:
22505
diff
changeset
|
2854 } |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2855 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2856 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2857 value = static_cast<double> (long_int_value); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2858 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2859 nread = 1; // Just to pass the assert stmt below |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2860 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2861 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2862 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2863 char *idx = strpbrk (tmptxt, "Dd"); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2864 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2865 if (idx) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2866 *idx = 'e'; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2867 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2868 nread = sscanf (tmptxt, "%lf", &value); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2869 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2870 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2871 delete [] tmptxt; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2872 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2873 // If yytext doesn't contain a valid number, we are in deep doo doo. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2874 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2875 assert (nread == 1); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2876 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2877 looking_for_object_index = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2878 at_beginning_of_statement = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2879 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2880 push_token (new token (NUM, value, yytxt, input_line_number, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2881 current_input_column)); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2882 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2883 current_input_column += flex_yyleng (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2884 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2885 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2886 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2887 base_lexer::handle_continuation (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2888 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2889 char *yytxt = flex_yytext (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2890 int yylng = flex_yyleng (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2891 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2892 int offset = 1; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2893 if (yytxt[0] == '\\') |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2894 warn_language_extension_continuation (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2895 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2896 offset = 3; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2897 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2898 bool have_space = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2899 while (offset < yylng) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2900 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2901 char c = yytxt[offset]; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2902 if (c == ' ' || c == '\t') |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2903 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2904 have_space = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2905 offset++; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2906 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2907 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2908 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2909 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2910 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2911 if (have_space) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2912 mark_previous_token_trailing_space (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2913 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2914 bool have_comment = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2915 while (offset < yylng) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2916 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2917 char c = yytxt[offset]; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2918 if (c == '#' || c == '%') |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2919 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2920 have_comment = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2921 offset++; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2922 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2923 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2924 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2925 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2926 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2927 if (have_comment) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2928 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2929 comment_text = &yytxt[offset]; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2930 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2931 // finish_comment sets at_beginning_of_statement to true but |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2932 // that's not be correct if we are handling a continued |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2933 // statement. Preserve the current state. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2934 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2935 bool saved_bos = at_beginning_of_statement; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2936 |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23730
diff
changeset
|
2937 finish_comment (comment_elt::end_of_line); |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2938 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2939 at_beginning_of_statement = saved_bos; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2940 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2941 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2942 decrement_promptflag (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2943 input_line_number++; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2944 current_input_column = 1; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2945 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2946 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2947 void |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23730
diff
changeset
|
2948 base_lexer::finish_comment (comment_elt::comment_type typ) |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2949 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2950 bool copyright = looks_like_copyright (comment_text); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2951 |
23555
9151922777e2
Pick correct help text when shebang is present (bug #51191).
Rik <rik@octave.org>
parents:
23479
diff
changeset
|
2952 if (nesting_level.none () && help_text.empty () && ! comment_text.empty () |
9151922777e2
Pick correct help text when shebang is present (bug #51191).
Rik <rik@octave.org>
parents:
23479
diff
changeset
|
2953 && ! copyright && ! looks_like_shebang (comment_text)) |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2954 help_text = comment_text; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2955 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2956 if (copyright) |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23730
diff
changeset
|
2957 typ = comment_elt::copyright; |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2958 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2959 comment_buf.append (comment_text, typ); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2960 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2961 comment_text = ""; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2962 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2963 at_beginning_of_statement = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2964 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2965 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2966 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2967 base_lexer::handle_close_bracket (int bracket_type) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2968 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2969 int retval = bracket_type; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2970 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2971 if (! nesting_level.none ()) |
16126
5c885c13bfa3
localize use of yylval.tok_val in lexical_feedback member functions
John W. Eaton <jwe@octave.org>
parents:
16125
diff
changeset
|
2972 { |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2973 nesting_level.remove (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2974 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2975 if (bracket_type == ']') |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2976 bracketflag--; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2977 else if (bracket_type == '}') |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2978 braceflag--; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2979 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2980 panic_impossible (); |
16126
5c885c13bfa3
localize use of yylval.tok_val in lexical_feedback member functions
John W. Eaton <jwe@octave.org>
parents:
16125
diff
changeset
|
2981 } |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2982 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2983 pop_start_state (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2984 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2985 return retval; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2986 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2987 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2988 bool |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2989 base_lexer::looks_like_command_arg (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2990 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2991 bool space_before = space_follows_previous_token (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2992 bool space_after = looking_at_space (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2993 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2994 return (space_before && ! space_after |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2995 && previous_token_may_be_command ()); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2996 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2997 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2998 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
2999 base_lexer::handle_superclass_identifier (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3000 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3001 std::string meth = flex_yytext (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3002 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3003 size_t pos = meth.find ("@"); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3004 std::string cls = meth.substr (pos + 1); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3005 meth = meth.substr (0, pos); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3006 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3007 bool kw_token = (is_keyword_token (meth) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3008 || fq_identifier_contains_keyword (cls)); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3009 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3010 if (kw_token) |
16126
5c885c13bfa3
localize use of yylval.tok_val in lexical_feedback member functions
John W. Eaton <jwe@octave.org>
parents:
16125
diff
changeset
|
3011 { |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3012 token *tok |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3013 = new token (LEXICAL_ERROR, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3014 "method, class, and package names may not be keywords", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3015 input_line_number, current_input_column); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3016 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3017 push_token (tok); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3018 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3019 return count_token_internal (LEXICAL_ERROR); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3020 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3021 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3022 push_token (new token (SUPERCLASSREF, meth, cls, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3023 input_line_number, current_input_column)); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3024 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3025 current_input_column += flex_yyleng (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3026 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3027 return SUPERCLASSREF; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3028 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3029 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3030 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3031 base_lexer::handle_meta_identifier (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3032 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3033 std::string cls = std::string(flex_yytext ()).substr (1); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3034 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3035 if (fq_identifier_contains_keyword (cls)) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3036 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3037 token *tok = new token (LEXICAL_ERROR, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3038 "class and package names may not be keywords", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3039 input_line_number, current_input_column); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3040 push_token (tok); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3041 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3042 return count_token_internal (LEXICAL_ERROR); |
16126
5c885c13bfa3
localize use of yylval.tok_val in lexical_feedback member functions
John W. Eaton <jwe@octave.org>
parents:
16125
diff
changeset
|
3043 } |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3044 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3045 push_token (new token (METAQUERY, cls, input_line_number, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3046 current_input_column)); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3047 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3048 current_input_column += flex_yyleng (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3049 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3050 return METAQUERY; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3051 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3052 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3053 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3054 base_lexer::handle_fq_identifier (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3055 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3056 std::string fq_id = flex_yytext (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3057 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3058 if (fq_identifier_contains_keyword (fq_id)) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3059 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3060 token *tok |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3061 = new token (LEXICAL_ERROR, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3062 "function, method, class, and package names may not be keywords", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3063 input_line_number, current_input_column); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3064 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3065 push_token (tok); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3066 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3067 return count_token_internal (LEXICAL_ERROR); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3068 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3069 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3070 push_token (new token (FQ_IDENT, fq_id, input_line_number, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3071 current_input_column)); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3072 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3073 current_input_column += flex_yyleng (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3074 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3075 return FQ_IDENT; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3076 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3077 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3078 // Figure out exactly what kind of token to return when we have seen |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3079 // an identifier. Handles keywords. Return -1 if the identifier |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3080 // should be ignored. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3081 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3082 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3083 base_lexer::handle_identifier (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3084 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3085 std::string ident = flex_yytext (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3086 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3087 // If we are expecting a structure element, avoid recognizing |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3088 // keywords and other special names and return STRUCT_ELT, which is |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3089 // a string that is also a valid identifier. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3090 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3091 if (looking_at_indirect_ref) |
16119
b31eb56f4d84
maint: reorder class definitions in lex.ll
John W. Eaton <jwe@octave.org>
parents:
16118
diff
changeset
|
3092 { |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3093 push_token (new token (STRUCT_ELT, ident, input_line_number, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3094 current_input_column)); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3095 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3096 looking_for_object_index = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3097 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3098 current_input_column += flex_yyleng (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3099 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3100 return STRUCT_ELT; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3101 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3102 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3103 // If ident is a keyword token, then is_keyword_token will set |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3104 // at_beginning_of_statement. For example, if tok is an IF |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3105 // token, then at_beginning_of_statement will be false. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3106 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3107 int kw_token = is_keyword_token (ident); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3108 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3109 if (looking_at_function_handle) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3110 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3111 if (kw_token) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3112 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3113 token *tok |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3114 = new token (LEXICAL_ERROR, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3115 "function handles may not refer to keywords", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3116 input_line_number, current_input_column); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3117 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3118 push_token (tok); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3119 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3120 return count_token_internal (LEXICAL_ERROR); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3121 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3122 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3123 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3124 push_token (new token (FCN_HANDLE, ident, input_line_number, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3125 current_input_column)); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3126 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3127 current_input_column += flex_yyleng (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3128 looking_for_object_index = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3129 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3130 at_beginning_of_statement = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3131 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3132 return FCN_HANDLE; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3133 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3134 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3135 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3136 // If we have a regular keyword, return it. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3137 // Keywords can be followed by identifiers. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3138 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3139 if (kw_token) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3140 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3141 if (kw_token >= 0) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3142 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3143 current_input_column += flex_yyleng (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3144 looking_for_object_index = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3145 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3146 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3147 // The call to is_keyword_token set at_beginning_of_statement. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3148 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3149 return kw_token; |
16119
b31eb56f4d84
maint: reorder class definitions in lex.ll
John W. Eaton <jwe@octave.org>
parents:
16118
diff
changeset
|
3150 } |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3151 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3152 // Find the token in the symbol table. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3153 |
24361
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24356
diff
changeset
|
3154 symbol_scope scope = symtab_context.curr_scope (); |
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24356
diff
changeset
|
3155 |
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24356
diff
changeset
|
3156 symbol_record sr = (scope ? scope.insert (ident) : symbol_record (ident)); |
23602
214cb58ccc1c
use pointer to scope instead of scope id
John W. Eaton <jwe@octave.org>
parents:
23599
diff
changeset
|
3157 |
214cb58ccc1c
use pointer to scope instead of scope id
John W. Eaton <jwe@octave.org>
parents:
23599
diff
changeset
|
3158 token *tok = new token (NAME, sr, input_line_number, current_input_column); |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3159 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3160 // The following symbols are handled specially so that things like |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3161 // |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3162 // pi +1 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3163 // |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3164 // are parsed as an addition expression instead of as a command-style |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3165 // function call with the argument "+1". |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3166 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3167 if (at_beginning_of_statement |
23602
214cb58ccc1c
use pointer to scope instead of scope id
John W. Eaton <jwe@octave.org>
parents:
23599
diff
changeset
|
3168 && (! (is_variable (ident, scope) |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3169 || ident == "e" || ident == "pi" |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3170 || ident == "I" || ident == "i" |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3171 || ident == "J" || ident == "j" |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3172 || ident == "Inf" || ident == "inf" |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3173 || ident == "NaN" || ident == "nan"))) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3174 tok->mark_may_be_command (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3175 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3176 push_token (tok); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3177 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3178 current_input_column += flex_yyleng (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3179 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3180 // The magic end index can't be indexed. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3181 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3182 if (ident != "end") |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3183 looking_for_object_index = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3184 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3185 at_beginning_of_statement = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3186 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3187 return NAME; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3188 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3189 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3190 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3191 base_lexer::maybe_warn_separator_insert (char sep) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3192 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3193 std::string nm = fcn_file_full_name; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3194 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3195 if (nm.empty ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3196 warning_with_id ("Octave:separator-insert", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3197 "potential auto-insertion of '%c' near line %d", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3198 sep, input_line_number); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3199 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3200 warning_with_id ("Octave:separator-insert", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3201 "potential auto-insertion of '%c' near line %d of file %s", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3202 sep, input_line_number, nm.c_str ()); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3203 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3204 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3205 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3206 base_lexer::warn_single_quote_string (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3207 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3208 std::string nm = fcn_file_full_name; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3209 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3210 if (nm.empty ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3211 warning_with_id ("Octave:single-quote-string", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3212 "single quote delimited string near line %d", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3213 input_line_number); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3214 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3215 warning_with_id ("Octave:single-quote-string", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3216 "single quote delimited string near line %d of file %s", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3217 input_line_number, nm.c_str ()); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3218 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3219 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3220 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3221 base_lexer::warn_language_extension (const std::string& msg) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3222 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3223 std::string nm = fcn_file_full_name; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3224 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3225 if (nm.empty ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3226 warning_with_id ("Octave:language-extension", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3227 "Octave language extension used: %s", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3228 msg.c_str ()); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3229 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3230 warning_with_id ("Octave:language-extension", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3231 "Octave language extension used: %s near line %d offile %s", |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3232 msg.c_str (), input_line_number, nm.c_str ()); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3233 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3234 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3235 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3236 base_lexer::maybe_warn_language_extension_comment (char c) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3237 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3238 if (c == '#') |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3239 warn_language_extension ("# used as comment character"); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3240 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3241 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3242 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3243 base_lexer::warn_language_extension_continuation (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3244 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3245 warn_language_extension ("\\ used as line continuation marker"); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3246 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3247 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3248 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3249 base_lexer::warn_language_extension_operator (const std::string& op) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3250 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3251 std::string t = op; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3252 int n = t.length (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3253 if (t[n-1] == '\n') |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3254 t.resize (n-1); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3255 warn_language_extension (t + " used as operator"); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3256 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3257 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3258 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3259 base_lexer::push_token (token *tok) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3260 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3261 YYSTYPE *lval = yyget_lval (scanner); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3262 lval->tok_val = tok; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3263 tokens.push (tok); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3264 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3265 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3266 token * |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3267 base_lexer::current_token (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3268 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3269 YYSTYPE *lval = yyget_lval (scanner); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3270 return lval->tok_val; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3271 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3272 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3273 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3274 base_lexer::display_token (int tok) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3275 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3276 switch (tok) |
16119
b31eb56f4d84
maint: reorder class definitions in lex.ll
John W. Eaton <jwe@octave.org>
parents:
16118
diff
changeset
|
3277 { |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3278 case '=': std::cerr << "'='\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3279 case ':': std::cerr << "':'\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3280 case '-': std::cerr << "'-'\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3281 case '+': std::cerr << "'+'\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3282 case '*': std::cerr << "'*'\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3283 case '/': std::cerr << "'/'\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3284 case ADD_EQ: std::cerr << "ADD_EQ\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3285 case SUB_EQ: std::cerr << "SUB_EQ\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3286 case MUL_EQ: std::cerr << "MUL_EQ\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3287 case DIV_EQ: std::cerr << "DIV_EQ\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3288 case LEFTDIV_EQ: std::cerr << "LEFTDIV_EQ\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3289 case POW_EQ: std::cerr << "POW_EQ\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3290 case EMUL_EQ: std::cerr << "EMUL_EQ\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3291 case EDIV_EQ: std::cerr << "EDIV_EQ\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3292 case ELEFTDIV_EQ: std::cerr << "ELEFTDIV_EQ\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3293 case EPOW_EQ: std::cerr << "EPOW_EQ\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3294 case AND_EQ: std::cerr << "AND_EQ\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3295 case OR_EQ: std::cerr << "OR_EQ\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3296 case EXPR_AND_AND: std::cerr << "EXPR_AND_AND\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3297 case EXPR_OR_OR: std::cerr << "EXPR_OR_OR\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3298 case EXPR_AND: std::cerr << "EXPR_AND\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3299 case EXPR_OR: std::cerr << "EXPR_OR\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3300 case EXPR_NOT: std::cerr << "EXPR_NOT\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3301 case EXPR_LT: std::cerr << "EXPR_LT\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3302 case EXPR_LE: std::cerr << "EXPR_LE\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3303 case EXPR_EQ: std::cerr << "EXPR_EQ\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3304 case EXPR_NE: std::cerr << "EXPR_NE\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3305 case EXPR_GE: std::cerr << "EXPR_GE\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3306 case EXPR_GT: std::cerr << "EXPR_GT\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3307 case LEFTDIV: std::cerr << "LEFTDIV\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3308 case EMUL: std::cerr << "EMUL\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3309 case EDIV: std::cerr << "EDIV\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3310 case ELEFTDIV: std::cerr << "ELEFTDIV\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3311 case EPLUS: std::cerr << "EPLUS\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3312 case EMINUS: std::cerr << "EMINUS\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3313 case HERMITIAN: std::cerr << "HERMITIAN\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3314 case TRANSPOSE: std::cerr << "TRANSPOSE\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3315 case PLUS_PLUS: std::cerr << "PLUS_PLUS\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3316 case MINUS_MINUS: std::cerr << "MINUS_MINUS\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3317 case POW: std::cerr << "POW\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3318 case EPOW: std::cerr << "EPOW\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3319 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3320 case NUM: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3321 case IMAG_NUM: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3322 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3323 token *tok_val = current_token (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3324 std::cerr << (tok == NUM ? "NUM" : "IMAG_NUM") |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3325 << " [" << tok_val->number () << "]\n"; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3326 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3327 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3328 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3329 case STRUCT_ELT: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3330 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3331 token *tok_val = current_token (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3332 std::cerr << "STRUCT_ELT [" << tok_val->text () << "]\n"; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3333 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3334 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3335 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3336 case NAME: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3337 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3338 token *tok_val = current_token (); |
24270
bc3819b7cca1
don't use symbol_table:: nesting for symbol_record, symbol_scope, or fcn_info
John W. Eaton <jwe@octave.org>
parents:
24092
diff
changeset
|
3339 symbol_record sr = tok_val->sym_rec (); |
23602
214cb58ccc1c
use pointer to scope instead of scope id
John W. Eaton <jwe@octave.org>
parents:
23599
diff
changeset
|
3340 std::cerr << "NAME [" << sr.name () << "]\n"; |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3341 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3342 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3343 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3344 case END: std::cerr << "END\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3345 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3346 case DQ_STRING: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3347 case SQ_STRING: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3348 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3349 token *tok_val = current_token (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3350 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3351 std::cerr << (tok == DQ_STRING ? "DQ_STRING" : "SQ_STRING") |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3352 << " [" << tok_val->text () << "]\n"; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3353 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3354 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3355 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3356 case FOR: std::cerr << "FOR\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3357 case WHILE: std::cerr << "WHILE\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3358 case DO: std::cerr << "DO\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3359 case UNTIL: std::cerr << "UNTIL\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3360 case IF: std::cerr << "IF\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3361 case ELSEIF: std::cerr << "ELSEIF\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3362 case ELSE: std::cerr << "ELSE\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3363 case SWITCH: std::cerr << "SWITCH\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3364 case CASE: std::cerr << "CASE\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3365 case OTHERWISE: std::cerr << "OTHERWISE\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3366 case BREAK: std::cerr << "BREAK\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3367 case CONTINUE: std::cerr << "CONTINUE\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3368 case FUNC_RET: std::cerr << "FUNC_RET\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3369 case UNWIND: std::cerr << "UNWIND\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3370 case CLEANUP: std::cerr << "CLEANUP\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3371 case TRY: std::cerr << "TRY\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3372 case CATCH: std::cerr << "CATCH\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3373 case GLOBAL: std::cerr << "GLOBAL\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3374 case PERSISTENT: std::cerr << "PERSISTENT\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3375 case FCN_HANDLE: std::cerr << "FCN_HANDLE\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3376 case END_OF_INPUT: std::cerr << "END_OF_INPUT\n\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3377 case LEXICAL_ERROR: std::cerr << "LEXICAL_ERROR\n\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3378 case FCN: std::cerr << "FCN\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3379 case INPUT_FILE: std::cerr << "INPUT_FILE\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3380 case SUPERCLASSREF: std::cerr << "SUPERCLASSREF\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3381 case METAQUERY: std::cerr << "METAQUERY\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3382 case GET: std::cerr << "GET\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3383 case SET: std::cerr << "SET\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3384 case PROPERTIES: std::cerr << "PROPERTIES\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3385 case METHODS: std::cerr << "METHODS\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3386 case EVENTS: std::cerr << "EVENTS\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3387 case CLASSDEF: std::cerr << "CLASSDEF\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3388 case '\n': std::cerr << "\\n\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3389 case '\r': std::cerr << "\\r\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3390 case '\t': std::cerr << "TAB\n"; break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3391 default: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3392 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3393 if (tok < 256 && tok > 31) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3394 std::cerr << static_cast<char> (tok) << "\n"; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3395 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3396 std::cerr << "UNKNOWN(" << tok << ")\n"; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3397 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3398 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3399 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3400 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3401 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3402 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3403 base_lexer::fatal_error (const char *msg) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3404 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3405 error ("fatal lexer error: %s", msg); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3406 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3407 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3408 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3409 base_lexer::lexer_debug (const char *pattern) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3410 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3411 if (lexer_debug_flag) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3412 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3413 std::cerr << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3414 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3415 display_start_state (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3416 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3417 std::cerr << "P: " << pattern << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3418 std::cerr << "T: " << flex_yytext () << std::endl; |
16119
b31eb56f4d84
maint: reorder class definitions in lex.ll
John W. Eaton <jwe@octave.org>
parents:
16118
diff
changeset
|
3419 } |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3420 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3421 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3422 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3423 base_lexer::push_start_state (int state) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3424 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3425 OCTAVE_YYG; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3426 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3427 start_state_stack.push (state); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3428 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3429 BEGIN (start_state ()); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3430 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3431 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3432 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3433 base_lexer::pop_start_state (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3434 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3435 OCTAVE_YYG; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3436 |
16224
4a848eb52de2
use stack for tracking lexer start states
John W. Eaton <jwe@octave.org>
parents:
16209
diff
changeset
|
3437 start_state_stack.pop (); |
4a848eb52de2
use stack for tracking lexer start states
John W. Eaton <jwe@octave.org>
parents:
16209
diff
changeset
|
3438 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3439 BEGIN (start_state ()); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3440 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3441 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3442 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3443 base_lexer::clear_start_state (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3444 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3445 while (! start_state_stack.empty ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3446 start_state_stack.pop (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3447 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3448 push_start_state (INITIAL); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3449 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3450 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3451 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3452 base_lexer::display_start_state (void) const |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3453 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3454 std::cerr << "S: "; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3455 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3456 switch (start_state ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3457 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3458 case INITIAL: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3459 std::cerr << "INITIAL" << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3460 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3461 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3462 case COMMAND_START: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3463 std::cerr << "COMMAND_START" << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3464 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3465 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3466 case MATRIX_START: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3467 std::cerr << "MATRIX_START" << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3468 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3469 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3470 case INPUT_FILE_START: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3471 std::cerr << "INPUT_FILE_BEGIN" << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3472 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3473 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3474 case BLOCK_COMMENT_START: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3475 std::cerr << "BLOCK_COMMENT_START" << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3476 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3477 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3478 case LINE_COMMENT_START: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3479 std::cerr << "LINE_COMMENT_START" << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3480 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3481 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3482 case DQ_STRING_START: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3483 std::cerr << "DQ_STRING_START" << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3484 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3485 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3486 case SQ_STRING_START: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3487 std::cerr << "SQ_STRING_START" << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3488 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3489 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3490 default: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3491 std::cerr << "UNKNOWN START STATE!" << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3492 break; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3493 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3494 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3495 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3496 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3497 base_lexer::handle_op (const char *pattern, int tok, bool bos) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3498 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3499 lexer_debug (pattern); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3500 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3501 return handle_op_internal (tok, bos, true); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3502 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3503 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3504 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3505 base_lexer::handle_language_extension_op (const char *pattern, int tok, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3506 bool bos) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3507 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3508 lexer_debug (pattern); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3509 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3510 return handle_op_internal (tok, bos, false); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3511 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3512 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3513 bool |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3514 base_lexer::maybe_unput_comma_before_unary_op (int tok) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3515 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3516 int prev_tok = previous_token_value (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3517 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3518 bool unput_comma = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3519 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3520 if (whitespace_is_significant () && space_follows_previous_token ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3521 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3522 int c = text_yyinput (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3523 xunput (c); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3524 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3525 bool space_after = (c == ' ' || c == '\t'); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3526 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3527 if (! (prev_tok == '[' || prev_tok == '{' |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3528 || previous_token_is_binop () |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3529 || ((tok == '+' || tok == '-') && space_after))) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3530 unput_comma = true; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3531 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3532 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3533 return unput_comma; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3534 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3535 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3536 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3537 base_lexer::handle_unary_op (int tok, bool bos) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3538 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3539 return maybe_unput_comma_before_unary_op (tok) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3540 ? -1 : handle_op_internal (tok, bos, true); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3541 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3542 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3543 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3544 base_lexer::handle_language_extension_unary_op (int tok, bool bos) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3545 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3546 return maybe_unput_comma_before_unary_op (tok) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3547 ? -1 : handle_op_internal (tok, bos, false); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3548 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3549 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3550 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3551 base_lexer::handle_op_internal (int tok, bool bos, bool compat) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3552 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3553 if (! compat) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3554 warn_language_extension_operator (flex_yytext ()); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3555 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3556 push_token (new token (tok, input_line_number, current_input_column)); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3557 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3558 current_input_column += flex_yyleng (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3559 looking_for_object_index = false; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3560 at_beginning_of_statement = bos; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3561 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3562 return count_token_internal (tok); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3563 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3564 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3565 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3566 base_lexer::handle_token (const std::string& name, int tok) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3567 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3568 token *tok_val = new token (tok, name, input_line_number, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3569 current_input_column); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3570 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3571 return handle_token (tok, tok_val); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3572 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3573 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3574 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3575 base_lexer::handle_token (int tok, token *tok_val) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3576 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3577 if (! tok_val) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3578 tok_val = new token (tok, input_line_number, current_input_column); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3579 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3580 push_token (tok_val); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3581 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3582 current_input_column += flex_yyleng (); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3583 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3584 return count_token_internal (tok); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3585 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3586 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3587 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3588 base_lexer::count_token (int tok) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3589 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3590 token *tok_val = new token (tok, input_line_number, current_input_column); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3591 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3592 push_token (tok_val); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3593 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3594 return count_token_internal (tok); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3595 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3596 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3597 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3598 base_lexer::count_token_internal (int tok) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3599 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3600 if (tok != '\n') |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3601 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3602 Vtoken_count++; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3603 token_count++; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3604 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3605 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3606 return show_token (tok); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3607 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3608 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3609 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3610 base_lexer::show_token (int tok) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3611 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3612 if (Vdisplay_tokens) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3613 display_token (tok); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3614 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3615 if (lexer_debug_flag) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3616 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3617 std::cerr << "R: "; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3618 display_token (tok); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3619 std::cerr << std::endl; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3620 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3621 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3622 return tok; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3623 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3624 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3625 void |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3626 base_lexer::enable_fq_identifier (void) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3627 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3628 push_start_state (FQ_IDENT_START); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3629 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3630 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3631 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3632 lexer::fill_flex_buffer (char *buf, unsigned max_size) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3633 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3634 int status = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3635 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3636 if (input_buf.empty ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3637 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3638 bool eof = false; |
23061
aedc662896a3
move input reader classes into octave namespace
John W. Eaton <jwe@octave.org>
parents:
22872
diff
changeset
|
3639 current_input_line = reader.get_input (eof); |
23730
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3640 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3641 input_buf.fill (current_input_line, eof); |
23730
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3642 |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3643 // Attempt to capture text for functions defined on the |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3644 // command line. |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3645 // |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3646 // FIXME: the handling of newline here seems a bit clumsy. |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3647 // |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3648 // See also comments in push_lexer::append_input. |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3649 |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3650 if (buffer_function_text) |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3651 { |
23786
10136bfd46a3
lex.ll: Fix heap-buffer-overflow (bug #51533).
Rik <rik@octave.org>
parents:
23750
diff
changeset
|
3652 if (! current_input_line.empty ()) |
10136bfd46a3
lex.ll: Fix heap-buffer-overflow (bug #51533).
Rik <rik@octave.org>
parents:
23750
diff
changeset
|
3653 { |
10136bfd46a3
lex.ll: Fix heap-buffer-overflow (bug #51533).
Rik <rik@octave.org>
parents:
23750
diff
changeset
|
3654 function_text += current_input_line; |
10136bfd46a3
lex.ll: Fix heap-buffer-overflow (bug #51533).
Rik <rik@octave.org>
parents:
23750
diff
changeset
|
3655 if (current_input_line.back () != '\n') |
23787
b481a9baeb61
Replace += "\n" with += '\n' which avoids string constructor for performance.
Rik <rik@octave.org>
parents:
23786
diff
changeset
|
3656 function_text += '\n'; |
23786
10136bfd46a3
lex.ll: Fix heap-buffer-overflow (bug #51533).
Rik <rik@octave.org>
parents:
23750
diff
changeset
|
3657 } |
23730
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3658 } |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3659 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3660 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3661 if (! input_buf.empty ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3662 status = input_buf.copy_chunk (buf, max_size); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3663 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3664 status = YY_NULL; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3665 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3666 return status; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3667 } |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3668 |
23730
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3669 void |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3670 push_lexer::append_input (const std::string& input, bool eof) |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3671 { |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3672 // FIXME: input may contain more than one line, so how can we |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3673 // properly start buffering input for command-line functions? |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3674 // |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3675 // Currently, base_lexer::is_keyword_token starts buffering text |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3676 // for command-line functions by setting the initial value of |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3677 // function_text to current_input_line when function_kw is |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3678 // recognized. To make that work, we need to do something like |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3679 // maintain a queue of input strings and pass them to the flex |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3680 // buffer one line at a time, while also setting |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3681 // current_input_line. Some care will be needed if a single line |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3682 // of input arrives in multiple calls to append_input. |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3683 |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3684 input_buf.fill (input, eof); |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3685 } |
85f1d31956c0
make echo work for command-line functions
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
3686 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3687 int |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3688 push_lexer::fill_flex_buffer (char *buf, unsigned max_size) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3689 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3690 int status = 0; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3691 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3692 if (input_buf.empty () && ! input_buf.at_eof ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3693 input_buf.fill (std::string (1, static_cast<char> (1)), false); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3694 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3695 if (! input_buf.empty ()) |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3696 status = input_buf.copy_chunk (buf, max_size); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3697 else |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3698 status = YY_NULL; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3699 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3700 return status; |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
22094
diff
changeset
|
3701 } |
16224
4a848eb52de2
use stack for tracking lexer start states
John W. Eaton <jwe@octave.org>
parents:
16209
diff
changeset
|
3702 } |