summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/xint/xintexpr.sty
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2013-05-27 05:00:41 +0000
committerNorbert Preining <preining@logic.at>2013-05-27 05:00:41 +0000
commit04fd1776023ee2133a059a5a7c0974705552be89 (patch)
tree146f87138e07a550161e6dd7d59dec64a9049238 /Master/texmf-dist/tex/generic/xint/xintexpr.sty
parent9187fc6b720d7c26139a39d4edfec826fd9fbe25 (diff)
xint update (5/27)
git-svn-id: svn://tug.org/texlive/trunk@30723 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/xint/xintexpr.sty')
-rw-r--r--Master/texmf-dist/tex/generic/xint/xintexpr.sty769
1 files changed, 769 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/xint/xintexpr.sty b/Master/texmf-dist/tex/generic/xint/xintexpr.sty
new file mode 100644
index 00000000000..14fc53b418c
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/xint/xintexpr.sty
@@ -0,0 +1,769 @@
+%%
+%% This is file `xintexpr.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xint.dtx (with options: `xintexpr')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from xintexpr.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file xint.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%%
+%%----------------------------------------------------------------
+%% The xint bundle (version 1.07a of May 26, 2013)
+%% xintexpr: Expandable expression parser
+%% Copyright (C) 2013 by Jean-Francois Burnol
+%%----------------------------------------------------------------
+%%
+\begingroup\catcode61\catcode48\catcode32=10\relax%
+ \catcode13=5 % ^^M
+ \endlinechar=13 %
+ \catcode123=1 % {
+ \catcode125=2 % }
+ \catcode64=11 % @
+ \catcode35=6 % #
+ \catcode44=12 % ,
+ \catcode45=12 % -
+ \catcode46=12 % .
+ \catcode58=12 % :
+ \def\space { }%
+ \let\z\endgroup
+ \expandafter\let\expandafter\x\csname ver@xintexpr.sty\endcsname
+ \expandafter\let\expandafter\w\csname ver@xintfrac.sty\endcsname
+ \expandafter
+ \ifx\csname PackageInfo\endcsname\relax
+ \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}%
+ \else
+ \def\y#1#2{\PackageInfo{#1}{#2}}%
+ \fi
+ \expandafter
+ \ifx\csname numexpr\endcsname\relax
+ \y{xintexpr}{\numexpr not available, aborting input}%
+ \aftergroup\endinput
+ \else
+ \ifx\x\relax % plain-TeX, first loading of xintexpr.sty
+ \ifx\w\relax % but xintfrac.sty not yet loaded.
+ \y{xintexpr}{Package xintfrac is required}%
+ \y{xintexpr}{Will try \string\input\space xintfrac.sty}%
+ \def\z{\endgroup\input xintfrac.sty\relax}%
+ \fi
+ \else
+ \def\empty {}%
+ \ifx\x\empty % LaTeX, first loading,
+ % variable is initialized, but \ProvidesPackage not yet seen
+ \ifx\w\relax % xintfrac.sty not yet loaded.
+ \y{xintexpr}{Package xintfrac is required}%
+ \y{xintexpr}{Will try \string\RequirePackage{xintfrac}}%
+ \def\z{\endgroup\RequirePackage{xintfrac}}%
+ \fi
+ \else
+ \y{xintexpr}{I was already loaded, aborting input}%
+ \aftergroup\endinput
+ \fi
+ \fi
+ \fi
+\z%
+\begingroup\catcode61\catcode48\catcode32=10\relax%
+ \catcode13=5 % ^^M
+ \endlinechar=13 %
+ \catcode123=1 % {
+ \catcode125=2 % }
+ \catcode64=11 % @
+ \catcode35=6 % #
+ \catcode44=12 % ,
+ \catcode45=12 % -
+ \catcode46=12 % .
+ \catcode58=12 % :
+ \expandafter
+ \ifx\csname PackageInfo\endcsname\relax
+ \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}%
+ \else
+ \def\y#1#2{\PackageInfo{#1}{#2}}%
+ \fi
+ \def\empty {}%
+ \expandafter\let\expandafter\w\csname ver@xintfrac.sty\endcsname
+ \ifx\w\relax % Plain TeX, user gave a file name at the prompt
+ \y{xintexpr}{Loading of package xintfrac failed, aborting input}%
+ \aftergroup\endinput
+ \fi
+ \ifx\w\empty % LaTeX, user gave a file name at the prompt
+ \y{xintexpr}{Loading of package xintfrac failed, aborting input}%
+ \aftergroup\endinput
+ \fi
+\endgroup%
+\begingroup\catcode61\catcode48\catcode32=10\relax%
+ \catcode13=5 % ^^M
+ \endlinechar=13 %
+ \catcode123=1 % {
+ \catcode125=2 % }
+ \catcode95=11 % _
+ \def\x
+ {%
+ \endgroup
+ \edef\XINT_expr_restorecatcodes_endinput
+ {%
+ \catcode94=\the\catcode94 % ^
+ \catcode33=\the\catcode33 % !
+ \catcode93=\the\catcode93 % ]
+ \catcode91=\the\catcode91 % [
+ \catcode96=\the\catcode96 % `
+ \catcode47=\the\catcode47 % /
+ \catcode41=\the\catcode41 % )
+ \catcode40=\the\catcode40 % (
+ \catcode42=\the\catcode42 % *
+ \catcode43=\the\catcode43 % +
+ \catcode62=\the\catcode62 % >
+ \catcode60=\the\catcode60 % <
+ \catcode58=\the\catcode58 % :
+ \catcode46=\the\catcode46 % .
+ \catcode45=\the\catcode45 % -
+ \catcode44=\the\catcode44 % ,
+ \catcode35=\the\catcode35 % #
+ \catcode95=\the\catcode95 % _
+ \catcode125=\the\catcode125 % }
+ \catcode123=\the\catcode123 % {
+ \endlinechar=\the\endlinechar
+ \catcode13=\the\catcode13 % ^^M
+ \catcode32=\the\catcode32 %
+ \catcode61=\the\catcode61\relax % =
+ \noexpand\endinput
+ }%
+ \XINT_setcatcodes
+ \catcode91=12 % [
+ \catcode93=12 % ]
+ \catcode33=11 % !
+ \catcode94=12 % ^
+ }%
+\x
+\begingroup
+ \catcode64=11 % @
+ \catcode58=12 % :
+ \expandafter\ifx\csname ProvidesPackage\endcsname\relax
+ \def\x#1#2#3[#4]{\endgroup
+ \immediate\write-1{Package: #3 #4}%
+ \xdef#1{#4}%
+ }%
+ \else
+ \def\x#1#2[#3]{\endgroup
+ #2[{#3}]%
+ \ifx#1\@undefined
+ \xdef#1{#3}%
+ \fi
+ \ifx#1\relax
+ \xdef#1{#3}%
+ \fi
+ }%
+ \fi
+\expandafter\x\csname ver@xintexpr.sty\endcsname
+\ProvidesPackage{xintexpr}%
+ [2013/05/26 v1.07a Expandable expression parser (jfB)]%
+\chardef\xint_c_ 0
+\chardef\xint_c_i 1
+\chardef\xint_c_ii 2
+\chardef\xint_c_iii 3
+\chardef\xint_c_iv 4
+\chardef\xint_c_v 5
+\chardef\xint_c_ix 9
+\def\xint_gob_til_dot #1.{}%
+\def\xint_gob_til_dot_andstop #1.{ }%
+\def\xint_gob_til_! #1!{}% ! of catcode 11
+\def\XINT_expr_string {\expandafter\xint_gob_til_dot\string }%
+\def\XINT_expr_unexpectedtoken {\xintError:ignored }%
+\def\xintexpr {\romannumeral0\xinteval }%
+\def\xinteval
+{%
+ \expandafter\XINT_expr_until_end\romannumeral-`0%
+ \expandafter\XINT_expr_checkifprefix_ii\romannumeral-`0%
+ \XINT_expr_getnext
+}%
+\def\xinttheexpr {\romannumeral0\xinttheeval }%
+\def\xinttheeval {\expandafter\XINT_expr_the\romannumeral0\xinteval }%
+\def\XINT_expr_the #1#2#3{\xintraw{\XINT_expr_string #3}}%
+\def\xintthe #1{\ifx#1\xintexpr \expandafter\xinttheexpr
+ \else\expandafter\xintthefloatexpr\fi}%
+\def\XINT_expr_until_end #1%
+{%
+ \ifcase#1%
+ \expandafter\xint_gobble_vi
+ \or
+ \expandafter\XINT_expr_extra_closing_paren
+ \fi
+ \expandafter\XINT_expr_until_end\romannumeral-`0%
+}%
+\def\XINT_expr_extra_closing_paren {\xintError:removed }%
+\def\XINT_expr_endofexpr {!\XINT_illegaluse }%
+\def\XINT_illegaluse
+ {Illegal_here_use_xintthe\xintError:use_xintthe!\xint_gobble_i }%
+\def\XINT_expr_oparen
+{%
+ \expandafter\XINT_expr_until_cparen\romannumeral-`0%
+ \expandafter\XINT_expr_checkifprefix_ii\romannumeral-`0%
+ \XINT_expr_getnext
+}%
+\def\XINT_expr_until_cparen #1%
+{%
+ \ifcase#1%
+ \expandafter\XINT_expr_missing_cparen
+ \or
+ \else \xint_afterfi{\expandafter\XINT_expr_until_cparen\romannumeral-`0}%
+ \fi
+}%
+\def\XINT_expr_missing_cparen #1%
+{%
+ \xintError:inserted \xint_c_ \XINT_expr_endofexpr
+}%
+\def\xint_tmp_def #1#2#3%
+{%
+ \expandafter\xint_tmp_do_defs
+ \csname XINT_expr_op_#1\expandafter\endcsname
+ \csname XINT_expr_until_#1\expandafter\endcsname
+ \csname XINT_expr_checkifprefix_#2\expandafter\endcsname
+ \csname XINT_expr_precedence_#1\expandafter\endcsname
+ \csname xint_c_#2\expandafter\endcsname
+ \csname xint#3\endcsname
+}%
+\def\xint_tmp_do_defs #1#2#3#4#5#6%
+{%
+ \def #1##1% \XINT_expr_op_?
+ {%
+ \expandafter #2\expandafter ##1\romannumeral-`0\expandafter
+ #3\romannumeral-`0\XINT_expr_getnext
+ }%
+ \def #2##1##2##3##4% \XINT_expr_until_?
+ {%
+ \ifnum ##2>#5%
+ \xint_afterfi {\expandafter #2\expandafter ##1\romannumeral-`0##3##4}%
+ \else
+ \xint_afterfi
+ {\expandafter ##2\expandafter ##3%
+ \csname .#6{\XINT_expr_string ##1}{\XINT_expr_string ##4}\endcsname }%
+ \fi
+ }%
+ \global\let #4#5%
+}%
+\xint_tmp_def +{ii}{Add}%
+\xint_tmp_def -{ii}{Sub}%
+\xint_tmp_def *{iii}{Mul}%
+\xint_tmp_def /{iii}{Div}%
+\xint_tmp_def ^{iv}{fPow}%
+\xint_tmp_def e{v}{fE}%
+\xint_tmp_def E{v}{fE}%
+\def\xint_tmp_def #1%
+{%
+ \expandafter\xint_tmp_do_defs
+ \csname XINT_expr_checkifprefix_#1\expandafter\endcsname
+ \csname XINT_expr_op_-#1\endcsname
+}%
+\def\xint_tmp_do_defs #1#2%
+{%
+ \def #1##1%
+ {\xint_UDsignfork
+ ##1\dummy #2%
+ -\dummy ##1%
+ \krof }%
+}%
+\xint_tmp_def {ii}%
+\xint_tmp_def {iii}%
+\xint_tmp_def {iv}%
+\xint_tmp_def {v}%
+\def\xint_tmp_def #1%
+{%
+ \expandafter\xint_tmp_do_defs
+ \csname XINT_expr_op_-#1\expandafter\endcsname
+ \csname XINT_expr_until_-#1\expandafter\endcsname
+ \csname XINT_expr_checkifprefix_#1\expandafter\endcsname
+ \csname xint_c_#1\endcsname
+}%
+\def\xint_tmp_do_defs #1#2#3#4%
+{%
+ \def #1% \XINT_expr_op_-ii,iii,iv,v
+ {%
+ \expandafter #2\romannumeral-`0\expandafter
+ #3\romannumeral-`0\XINT_expr_getnext
+ }%
+ \def #2##1##2##3% \XINT_expr_until_-ii,iii,iv,v
+ {%
+ \ifnum ##1>#4%
+ \xint_afterfi {\expandafter #2\romannumeral-`0##2##3}%
+ \else
+ \xint_afterfi {\expandafter ##1\expandafter ##2%
+ \csname .\xintOpp{\XINT_expr_string ##3}\endcsname }%
+ \fi
+ }%
+}%
+\xint_tmp_def {ii}%
+\xint_tmp_def {iii}%
+\xint_tmp_def {iv}%
+\xint_tmp_def {v}%
+\def\XINT_expr_getop #1%
+{%
+ \expandafter\XINT_expr_getop_a\expandafter #1\romannumeral-`0%
+}%
+\def\XINT_expr_getop_a #1#2%
+{%
+ \ifcat #2\relax
+ \ifx #2\relax
+ \expandafter\expandafter\expandafter
+ \XINT_expr_foundendofexpr
+ \else
+ \XINT_expr_unexpectedtoken
+ \expandafter\expandafter\expandafter
+ \XINT_expr_getop
+ \fi
+ \else
+ \expandafter\XINT_expr_op_found\expandafter #2%
+ \fi
+ #1%
+}%
+\def\XINT_expr_foundendofexpr {\xint_c_ \XINT_expr_endofexpr }%
+\def\XINT_expr_op_found #1%
+{%
+ \ifcsname XINT_expr_precedence_\string #1\endcsname
+ \expandafter\xint_afterfi\expandafter
+ {\csname XINT_expr_precedence_\string #1\expandafter\endcsname
+ \csname XINT_expr_op_\string #1\endcsname }%
+ \else
+ \XINT_expr_unexpectedtoken
+ \expandafter\XINT_expr_getop
+ \fi
+}%
+\expandafter\let\csname XINT_expr_precedence_)\endcsname \xint_c_i
+\expandafter\let\csname XINT_expr_op_)\endcsname\XINT_expr_getop
+\def\xint_tmp_def
+{%
+ \expandafter\xint_tmp_do_defs
+ \csname XINT_expr_precedence_!\expandafter\endcsname
+ \csname XINT_expr_op_!\endcsname
+}%
+\def\xint_tmp_do_defs #1#2%
+{%
+ \def #1##1##2%
+ {\ifx ##1#2%
+ \expandafter\xint_firstoftwo
+ \else\expandafter\xint_secondoftwo
+ \fi{\expandafter\XINT_expr_getop}{\expandafter\XINT_flexpr_getop}%
+ \csname .\xintfFac{\XINT_expr_string ##2}/1[0]\endcsname }%
+ \let#2\empty
+}%
+\xint_tmp_def
+\def\XINT_expr_getnext
+{%
+ \expandafter\XINT_expr_getnext_checkforbraced_a\romannumeral-`0%
+}%
+\def\XINT_expr_getnext_checkforbraced_a #1%
+{%
+ \XINT_expr_getnext_checkforbraced_b #1\W\Z {#1}%
+}%
+\def\XINT_expr_getnext_checkforbraced_b #1#2%
+{%
+ \xint_UDwfork
+ #1\dummy \XINT_expr_getnext_emptybracepair
+ #2\dummy \XINT_expr_getnext_onetoken_perhaps
+ \W\dummy \XINT_expr_getnext_gotbracedstuff
+ \krof
+}%
+\def\XINT_expr_getnext_onetoken_perhaps\Z #1%
+{%
+ \expandafter\XINT_expr_getnext_checkforbraced_c\expandafter
+ {\romannumeral-`0#1}%
+}%
+\def\XINT_expr_getnext_checkforbraced_c #1%
+{%
+ \XINT_expr_getnext_checkforbraced_d #1\W\Z {#1}%
+}%
+\def\XINT_expr_getnext_checkforbraced_d #1#2%
+{%
+ \xint_UDwfork
+ #1\dummy \XINT_expr_getnext_emptybracepair
+ #2\dummy \XINT_expr_getnext_onetoken_wehope
+ \W\dummy \XINT_expr_getnext_gotbracedstuff
+ \krof
+}%
+\def\XINT_expr_getnext_emptybracepair #1{\XINT_expr_getnext }%
+\def\XINT_expr_getnext_gotbracedstuff #1\W\Z #2%
+{%
+ \expandafter\XINT_expr_getop\csname .#2\endcsname
+}%
+\def\XINT_expr_getnext_onetoken_wehope\Z #1%
+{%
+ \xint_gob_til_! #1\XINT_expr_subexpr !%
+ \expandafter\XINT_expr_getnext_onetoken_fork\string #1%
+}%
+\def\XINT_expr_subexpr !#1!{\expandafter\XINT_expr_getop\xint_gobble_i }%
+\begingroup
+\lccode`*=`_
+\lowercase{\endgroup
+\def\XINT_expr_sixwayfork #1(-.+*\dummy #2#3\krof {#2}%
+\def\XINT_expr_getnext_onetoken_fork #1%
+{%
+ \XINT_expr_sixwayfork
+ #1-.+*\dummy \XINT_expr_oparen
+ (#1.+*\dummy -%
+ (-#1+*\dummy {\XINT_expr_scannum_start\XINT_expr_scannum_decpart_b.}%
+ (-.#1*\dummy \XINT_expr_getnext%
+ (-.+#1\dummy {\XINT_expr_scannum_start\XINT_expr_scannum_decpart_b*}%
+ (-.+*\dummy {\XINT_expr_scannum_check #1}%
+ \krof
+}}%
+\def\XINT_expr_scannum_check #1%
+{%
+ \ifnum \xint_c_ix<1#1
+ \expandafter\XINT_expr_scannum_start
+ \else
+ \xint_afterfi{\XINT_expr_unexpectedtoken
+ \expandafter\XINT_expr_getnext\xint_gobble_ii}%
+ \fi \XINT_expr_scannum_intpart_b #1%
+}%
+\def\XINT_expr_scannum_stopscan {!}% ! catcode 11
+\def\XINT_expr_gathernum #1!% ! with catcode 11
+{%
+ \expandafter\space\csname .#1\endcsname
+}%
+\def\XINT_expr_scannum_start #1%
+{%
+ \expandafter\XINT_expr_getop
+ \romannumeral-`0\expandafter\XINT_expr_gathernum
+ \romannumeral-`0#1%
+}%
+\def\XINT_expr_scannum_intpart_a #1%
+{%
+ \ifnum \xint_c_ix<1\string#1
+ \expandafter\expandafter\expandafter
+ \XINT_expr_scannum_intpart_b
+ \expandafter\string
+ \else
+ \if #1.%
+ \expandafter\expandafter\expandafter
+ \XINT_expr_scannum_transition
+ \else
+ \expandafter\expandafter\expandafter
+ \XINT_expr_scannum_stopscan
+ \fi
+ \fi
+ #1%
+}%
+\def\XINT_expr_scannum_intpart_b #1%
+{%
+ \expandafter #1\romannumeral-`0\expandafter
+ \XINT_expr_scannum_intpart_a\romannumeral-`0%
+}%
+\def\XINT_expr_scannum_transition #1%
+{%
+ \expandafter.\romannumeral-`0\expandafter
+ \XINT_expr_scannum_decpart_a\romannumeral-`0%
+}%
+\def\XINT_expr_scannum_decpart_a #1%
+{%
+ \ifnum \xint_c_ix<1\string#1
+ \expandafter\expandafter\expandafter
+ \XINT_expr_scannum_decpart_b\expandafter\string
+ \else
+ \expandafter \XINT_expr_scannum_stopscan
+ \fi
+ #1%
+}%
+\def\XINT_expr_scannum_decpart_b #1%
+{%
+ \expandafter #1\romannumeral-`0\expandafter
+ \XINT_expr_scannum_decpart_a\romannumeral-`0%
+}%
+\def\xintfloatexpr {\romannumeral0\xintfloateval }%
+\def\xintfloateval
+{%
+ \expandafter\XINT_expr_until_end\romannumeral-`0%
+ \expandafter\XINT_flexpr_checkifprefix_ii\romannumeral-`0%
+ \XINT_flexpr_getnext
+}%
+\def\xintthefloatexpr {\romannumeral0\xintthefloateval }%
+\def\xintthefloateval
+ {\expandafter\XINT_flexpr_the\romannumeral0\xintfloateval }%
+\def\XINT_flexpr_the #1#2#3{\xintfloat{\XINT_expr_string #3}}%
+\def\XINT_flexpr_oparen
+{%
+ \expandafter\XINT_expr_until_cparen\romannumeral-`0%
+ \expandafter\XINT_flexpr_checkifprefix_ii\romannumeral-`0%
+ \XINT_flexpr_getnext
+}%
+\def\xint_tmp_def #1#2#3%
+{%
+ \expandafter\xint_tmp_do_defs
+ \csname XINT_flexpr_op_#1\expandafter\endcsname
+ \csname XINT_flexpr_until_#1\expandafter\endcsname
+ \csname XINT_flexpr_checkifprefix_#2\expandafter\endcsname
+ \csname XINT_expr_precedence_#1\expandafter\endcsname
+ \csname xint_c_#2\expandafter\endcsname
+ \csname XINTinFloat#3\endcsname
+}%
+\def\xint_tmp_do_defs #1#2#3#4#5#6%
+{%
+ \def #1##1% \XINT_flexpr_op_?
+ {%
+ \expandafter #2\expandafter ##1\romannumeral-`0\expandafter
+ #3\romannumeral-`0\XINT_flexpr_getnext
+ }%
+ \def #2##1##2##3##4% \XINT_flexpr_until_?
+ {%
+ \ifnum ##2>#5%
+ \xint_afterfi {\expandafter #2\expandafter ##1\romannumeral-`0##3##4}%
+ \else
+ \xint_afterfi
+ {\expandafter ##2\expandafter ##3%
+ \csname .#6{\XINT_expr_string ##1}%
+ {\XINT_expr_string ##4}\endcsname }%
+ \fi
+ }%
+}%
+\xint_tmp_def +{ii}{Add}%
+\xint_tmp_def -{ii}{Sub}%
+\xint_tmp_def *{iii}{Mul}%
+\xint_tmp_def /{iii}{Div}%
+\xint_tmp_def ^{iv}{Power}%
+\xint_tmp_def e{v}{fE}%
+\xint_tmp_def E{v}{fE}%
+\def\xint_tmp_def #1%
+{%
+ \expandafter\xint_tmp_do_defs
+ \csname XINT_flexpr_checkifprefix_#1\expandafter\endcsname
+ \csname XINT_flexpr_op_-#1\endcsname
+}%
+\def\xint_tmp_do_defs #1#2%
+{%
+ \def #1##1%
+ {\xint_UDsignfork
+ ##1\dummy #2%
+ -\dummy ##1%
+ \krof }%
+}%
+\xint_tmp_def {ii}%
+\xint_tmp_def {iii}%
+\xint_tmp_def {iv}%
+\xint_tmp_def {v}%
+\def\xint_tmp_def #1%
+{%
+ \expandafter\xint_tmp_do_defs
+ \csname XINT_flexpr_op_-#1\expandafter\endcsname
+ \csname XINT_expr_until_-#1\expandafter\endcsname
+ \csname XINT_flexpr_checkifprefix_#1\expandafter\endcsname
+ \csname xint_c_#1\endcsname
+}%
+\def\xint_tmp_do_defs #1#2#3#4%
+{%
+ \def #1% \XINT_flexpr_op_-ii,iii,iv,v
+ {%
+ \expandafter #2\romannumeral-`0\expandafter
+ #3\romannumeral-`0\XINT_flexpr_getnext
+ }%
+}%
+\xint_tmp_def {ii}%
+\xint_tmp_def {iii}%
+\xint_tmp_def {iv}%
+\xint_tmp_def {v}%
+\let\xint_tmp_def\empty
+\let\xint_tmp_do_defs\empty
+\def\XINT_flexpr_getop #1%
+{%
+ \expandafter\XINT_flexpr_getop_a\expandafter #1\romannumeral-`0%
+}%
+\def\XINT_flexpr_getop_a #1#2%
+{%
+ \ifcat #2\relax
+ \ifx #2\relax
+ \expandafter\expandafter\expandafter
+ \XINT_expr_foundendofexpr
+ \else
+ \XINT_expr_unexpectedtoken
+ \expandafter\expandafter\expandafter
+ \XINT_flexpr_getop
+ \fi
+ \else
+ \expandafter\XINT_flexpr_op_found\expandafter #2%
+ \fi
+ #1%
+}%
+\def\XINT_flexpr_op_found #1%
+{%
+ \ifcsname XINT_expr_precedence_\string #1\endcsname
+ \expandafter\xint_afterfi\expandafter
+ {\csname XINT_expr_precedence_\string #1\expandafter\endcsname
+ \csname XINT_flexpr_op_\string #1\endcsname }%
+ \else
+ \XINT_expr_unexpectedtoken
+ \expandafter\XINT_flexpr_getop
+ \fi
+}%
+\expandafter\let\csname XINT_flexpr_op_)\endcsname\XINT_flexpr_getop
+\def\XINT_flexpr_getnext
+{%
+ \expandafter\XINT_flexpr_getnext_checkforbraced_a\romannumeral-`0%
+}%
+\def\XINT_flexpr_getnext_checkforbraced_a #1%
+{%
+ \XINT_flexpr_getnext_checkforbraced_b #1\W\Z {#1}%
+}%
+\def\XINT_flexpr_getnext_checkforbraced_b #1#2%
+{%
+ \xint_UDwfork
+ #1\dummy \XINT_flexpr_getnext_emptybracepair
+ #2\dummy \XINT_flexpr_getnext_onetoken_perhaps
+ \W\dummy \XINT_flexpr_getnext_gotbracedstuff
+ \krof
+}%
+\def\XINT_flexpr_getnext_onetoken_perhaps\Z #1%
+{%
+ \expandafter\XINT_flexpr_getnext_checkforbraced_c\expandafter
+ {\romannumeral-`0#1}%
+}%
+\def\XINT_flexpr_getnext_checkforbraced_c #1%
+{%
+ \XINT_flexpr_getnext_checkforbraced_d #1\W\Z {#1}%
+}%
+\def\XINT_flexpr_getnext_checkforbraced_d #1#2%
+{%
+ \xint_UDwfork
+ #1\dummy \XINT_flexpr_getnext_emptybracepair
+ #2\dummy \XINT_flexpr_getnext_onetoken_wehope
+ \W\dummy \XINT_flexpr_getnext_gotbracedstuff
+ \krof
+}%
+\def\XINT_flexpr_getnext_emptybracepair #1{\XINT_flexpr_getnext }%
+\def\XINT_flexpr_getnext_gotbracedstuff #1\W\Z #2%
+{%
+ \expandafter\XINT_flexpr_getop\csname .#2\endcsname
+}%
+\def\XINT_flexpr_getnext_onetoken_wehope\Z #1%
+{%
+ \xint_gob_til_! #1\XINT_flexpr_subexpr !%
+ \expandafter\XINT_flexpr_getnext_onetoken_fork\string #1%
+}%
+\def\XINT_flexpr_subexpr !#1!{\expandafter\XINT_flexpr_getop\xint_gobble_i }%
+\begingroup
+\lccode`*=`_
+\lowercase{\endgroup
+\def\XINT_flexpr_getnext_onetoken_fork #1%
+{%
+ \XINT_expr_sixwayfork
+ #1-.+*\dummy \XINT_flexpr_oparen
+ (#1.+*\dummy -%
+ (-#1+*\dummy {\XINT_flexpr_scannum_start\XINT_expr_scannum_decpart_b.}%
+ (-.#1*\dummy \XINT_flexpr_getnext%
+ (-.+#1\dummy {\XINT_flexpr_scannum_start\XINT_expr_scannum_decpart_b*}%
+ (-.+*\dummy {\XINT_flexpr_scannum_check #1}%
+ \krof
+}}%
+\def\XINT_flexpr_scannum_check #1%
+{%
+ \ifnum \xint_c_ix<1#1
+ \expandafter\XINT_flexpr_scannum_start
+ \else
+ \xint_afterfi
+ {\XINT_expr_unexpectedtoken
+ \expandafter\XINT_flexpr_getnext\xint_gobble_ii}%
+ \fi \XINT_expr_scannum_intpart_b #1%
+}%
+\def\XINT_flexpr_scannum_start #1%
+{%
+ \expandafter\XINT_flexpr_getop
+ \romannumeral-`0\expandafter\XINT_expr_gathernum
+ \romannumeral-`0#1%
+}%
+\catcode`* 13
+\def\xintNewExpr #1[#2]#3%
+{%
+ \begingroup
+ \ifcase #2\relax
+ \toks0 {\xdef #1}%
+ \or \toks0 {\xdef #1##1}%
+ \or \toks0 {\xdef #1##1##2}%
+ \or \toks0 {\xdef #1##1##2##3}%
+ \or \toks0 {\xdef #1##1##2##3##4}%
+ \or \toks0 {\xdef #1##1##2##3##4##5}%
+ \or \toks0 {\xdef #1##1##2##3##4##5##6}%
+ \or \toks0 {\xdef #1##1##2##3##4##5##6##7}%
+ \or \toks0 {\xdef #1##1##2##3##4##5##6##7##8}%
+ \or \toks0 {\xdef #1##1##2##3##4##5##6##7##8##9}%
+ \else
+ \immediate\write-1{Package xintexpr Error! illegal number of macro
+ parameters.}%
+ \fi
+ \def\xintAdd {:xintAdd}%
+ \def\xintSub {:xintSub}%
+ \def\xintMul {:xintMul}%
+ \def\xintDiv {:xintDiv}%
+ \def\xintfPow {:xintfPow}%
+ \def\xintfFac {:xintfFac}%
+ \def\xintOpp {:xintOpp}%
+ \def\xintfE {:xintfE}%
+ \def\xintraw { :romannumeral0:xintraw}%
+ \def\XINT_expr_the ##1##2##3%
+ {\expandafter\xintraw
+ \expandafter{\romannumeral-`0\XINT_expr_string ##3}}%
+ \lccode`\*=`: \lowercase {\def*}{!noexpand!}%
+ \catcode`: 13
+ \endlinechar -1
+ \everyeof {\noexpand }%
+ \edef\xintNewExprtmp
+ {\expandafter\scantokens
+ \expandafter{\romannumeral0\xinttheeval #3\relax}}%
+ \lccode`\*=`_ \lowercase {\def*}{####}%
+ \catcode`_ 13 \catcode`! 0 \catcode`: 11
+ \the\toks0 {\expandafter\scantokens\expandafter{\xintNewExprtmp }}%
+\endgroup
+}%
+\def\xintNewFloatExpr #1[#2]#3%
+{%
+ \begingroup
+ \ifcase #2\relax
+ \toks0 {\xdef #1}%
+ \or \toks0 {\xdef #1##1}%
+ \or \toks0 {\xdef #1##1##2}%
+ \or \toks0 {\xdef #1##1##2##3}%
+ \or \toks0 {\xdef #1##1##2##3##4}%
+ \or \toks0 {\xdef #1##1##2##3##4##5}%
+ \or \toks0 {\xdef #1##1##2##3##4##5##6}%
+ \or \toks0 {\xdef #1##1##2##3##4##5##6##7}%
+ \or \toks0 {\xdef #1##1##2##3##4##5##6##7##8}%
+ \or \toks0 {\xdef #1##1##2##3##4##5##6##7##8##9}%
+ \else
+ \immediate\write-1{Package xintexpr Error! illegal number of macro
+ parameters.}%
+ \fi
+ \def\XINTinFloatAdd {:XINTinFloatAdd}%
+ \def\XINTinFloatSub {:XINTinFloatSub}%
+ \def\XINTinFloatMul {:XINTinFloatMul}%
+ \def\XINTinFloatDiv {:XINTinFloatDiv}%
+ \def\XINTinFloatPower {:XINTinFloatPower}%
+ \def\xintfFac {:xintfFac}%
+ \def\xintOpp {:xintOpp}%
+ \def\XINTinFloatfE {:XINTinFloatfE}%
+ \def\xintfloat { :romannumeral0:xintfloat}%
+ \def\XINT_flexpr_the ##1##2##3%
+ {\expandafter\xintfloat
+ \expandafter{\romannumeral-`0\XINT_expr_string ##3}}%
+ \lccode`\*=`: \lowercase {\def*}{!noexpand!}%
+ \catcode`: 13
+ \endlinechar -1
+ \everyeof {\noexpand }%
+ \edef\xintNewExprtmp
+ {\expandafter\scantokens
+ \expandafter{\romannumeral0\xintthefloateval #3\relax}}%
+ \lccode`\*=`_ \lowercase {\def*}{####}%
+ \catcode`_ 13 \catcode`! 0 \catcode`: 11
+ \the\toks0 {\expandafter\scantokens\expandafter{\xintNewExprtmp }}%
+\endgroup
+}%
+\XINT_expr_restorecatcodes_endinput%
+\endinput
+%%
+%% End of file `xintexpr.sty'.