From c4f0fab8c73fbacab37bb00e0eb35b4266b4eca6 Mon Sep 17 00:00:00 2001 From: brad Arant Date: Sat, 8 Nov 2025 20:04:45 -0800 Subject: [PATCH] Added a bunch of functions. --- Operand.cpp | 148 +++++++++++++++++++++++-- TODO.txt | 3 +- docs/JetCore.aux | 42 +++++++ docs/JetCore.dvi | Bin 0 -> 21424 bytes docs/JetCore.log | 175 ++++++++++++++++++++++++++++++ docs/JetCore.pdf | Bin 0 -> 60520 bytes docs/{JetCore.txt => JetCore.tex} | 10 +- docs/JetCore.toc | 40 +++++++ tests/testmath.jet | 23 ++++ 9 files changed, 423 insertions(+), 18 deletions(-) create mode 100644 docs/JetCore.aux create mode 100644 docs/JetCore.dvi create mode 100644 docs/JetCore.log create mode 100644 docs/JetCore.pdf rename docs/{JetCore.txt => JetCore.tex} (98%) create mode 100644 docs/JetCore.toc create mode 100755 tests/testmath.jet diff --git a/Operand.cpp b/Operand.cpp index 54d7e35..b250e23 100644 --- a/Operand.cpp +++ b/Operand.cpp @@ -2,8 +2,10 @@ #include "Exception.h" #include #include +#include #include #include +#include namespace jet { @@ -116,7 +118,16 @@ namespace jet { } else throw coreutils::Exception("Expecting ) at end of INTEGER expression."); } else if(in.ifNextIgnoreCase("ROUND")) { - + if(!in.ifNext("(")) + throw coreutils::Exception("Expecting ( for ROUND parameters."); + Operand parm1(in, tag); + if(in.ifNext(")")) { + doubleValue = round(parm1.doubleValue); + isNumber = true; + string = std::format("{:.12f}", doubleValue); + string.removeTrailingZeros(); + } else + throw coreutils::Exception("Expecting ) at end of ROUND expression."); } else if(in.ifNextIgnoreCase("RANDOM")) { unsigned int seed = (unsigned int)clock(); doubleValue = (double) rand_r(&seed) / (RAND_MAX + 1.0); @@ -124,29 +135,144 @@ namespace jet { string = std::format("{:.12f}", doubleValue); string.removeTrailingZeros(); } else if(in.ifNextIgnoreCase("ABS")) { - + if(!in.ifNext("(")) + throw coreutils::Exception("Expecting ( for ABS parameters."); + Operand parm1(in, tag); + if(in.ifNext(")")) { + doubleValue = abs(parm1.doubleValue); + isNumber = true; + string = std::format("{:.12f}", doubleValue); + string.removeTrailingZeros(); + } else + throw coreutils::Exception("Expecting ) at end of ABS expression."); } else if(in.ifNextIgnoreCase("MAX")) { } else if(in.ifNextIgnoreCase("MIN")) { } else if(in.ifNextIgnoreCase("POW")) { - + if(!in.ifNext("(")) + throw coreutils::Exception("Expecting ( for POW parameters."); + Operand parm1(in, tag); + if(!in.ifNext(",")) + throw coreutils::Exception("Expecting , in POW expression."); + Operand parm2(in, tag); + if(in.ifNext(")")) { + doubleValue = pow(parm1.doubleValue, parm2.doubleValue); + isNumber = true; + string = std::format("{:.12f}", doubleValue); + string.removeTrailingZeros(); + } else + throw coreutils::Exception("Expecting ) at end of substring expression."); } else if(in.ifNextIgnoreCase("SIN")) { - + if(!in.ifNext("(")) + throw coreutils::Exception("Expecting ( for SIN parameters."); + Operand parm1(in, tag); + if(in.ifNext(")")) { + doubleValue = sin(parm1.doubleValue); + isNumber = true; + string = std::format("{:.12f}", doubleValue); + string.removeTrailingZeros(); + } else + throw coreutils::Exception("Expecting ) at end of SIN expression."); } else if(in.ifNextIgnoreCase("ASIN")) { - + if(!in.ifNext("(")) + throw coreutils::Exception("Expecting ( for ASIN parameters."); + Operand parm1(in, tag); + if(in.ifNext(")")) { + doubleValue = asin(parm1.doubleValue); + isNumber = true; + string = std::format("{:.12f}", doubleValue); + string.removeTrailingZeros(); + } else + throw coreutils::Exception("Expecting ) at end of ASIN expression."); } else if(in.ifNextIgnoreCase("COS")) { - + if(!in.ifNext("(")) + throw coreutils::Exception("Expecting ( for COS parameters."); + Operand parm1(in, tag); + if(in.ifNext(")")) { + doubleValue = cos(parm1.doubleValue); + isNumber = true; + string = std::format("{:.12f}", doubleValue); + string.removeTrailingZeros(); + } else + throw coreutils::Exception("Expecting ) at end of COS expression."); } else if(in.ifNextIgnoreCase("ACOS")) { - + if(!in.ifNext("(")) + throw coreutils::Exception("Expecting ( for ACOS parameters."); + Operand parm1(in, tag); + if(in.ifNext(")")) { + doubleValue = acos(parm1.doubleValue); + isNumber = true; + string = std::format("{:.12f}", doubleValue); + string.removeTrailingZeros(); + } else + throw coreutils::Exception("Expecting ) at end of ACOS expression."); } else if(in.ifNextIgnoreCase("ATAN")) { - + if(!in.ifNext("(")) + throw coreutils::Exception("Expecting ( for ATAN parameters."); + Operand parm1(in, tag); + if(in.ifNext(")")) { + doubleValue = atan(parm1.doubleValue); + isNumber = true; + string = std::format("{:.12f}", doubleValue); + string.removeTrailingZeros(); + } else + throw coreutils::Exception("Expecting ) at end of ATAN expression."); } else if(in.ifNextIgnoreCase("SQRT")) { - + if(!in.ifNext("(")) + throw coreutils::Exception("Expecting ( for SQRT parameters."); + Operand parm1(in, tag); + if(in.ifNext(")")) { + doubleValue = sqrt(parm1.doubleValue); + isNumber = true; + string = std::format("{:.12f}", doubleValue); + string.removeTrailingZeros(); + } else + throw coreutils::Exception("Expecting ) at end of SQRT expression."); + } else if(in.ifNextIgnoreCase("DEG")) { + if(!in.ifNext("(")) + throw coreutils::Exception("Expecting ( for DEG parameters."); + Operand parm1(in, tag); + if(in.ifNext(")")) { + doubleValue = parm1.doubleValue * 180 / 3.14159; + isNumber = true; + string = std::format("{:.12f}", doubleValue); + string.removeTrailingZeros(); + } else + throw coreutils::Exception("Expecting ) at end of DEG expression."); + } else if(in.ifNextIgnoreCase("RAD")) { + if(!in.ifNext("(")) + throw coreutils::Exception("Expecting ( for RAD parameters."); + Operand parm1(in, tag); + if(in.ifNext(")")) { + doubleValue = parm1.doubleValue * 3.14159 / 180; + isNumber = true; + string = std::format("{:.12f}", doubleValue); + string.removeTrailingZeros(); + } else + throw coreutils::Exception("Expecting ) at end of RAD expression."); } else if(in.ifNextIgnoreCase("TAN")) { - + if(!in.ifNext("(")) + throw coreutils::Exception("Expecting ( for TAN parameters."); + Operand parm1(in, tag); + if(in.ifNext(")")) { + doubleValue = tan(parm1.doubleValue); + isNumber = true; + string = std::format("{:.12f}", doubleValue); + string.removeTrailingZeros(); + } else + throw coreutils::Exception("Expecting ) at end of TAN expression."); } else if(in.ifNextIgnoreCase("TRUNC")) { - + if(!in.ifNext("(")) + throw coreutils::Exception("Expecting ( for TRUNC parameters."); + Operand parm1(in, tag); + if(in.ifNext(")")) { + doubleValue = trunc(parm1.doubleValue); + isNumber = true; + string = std::format("{:.12f}", doubleValue); + string.removeTrailingZeros(); + } else + throw coreutils::Exception("Expecting ) at end of TRUNC expression."); } else if(in.ifNextIgnoreCase("CEIL")) { } else if(in.ifNextIgnoreCase("FLOOR")) { diff --git a/TODO.txt b/TODO.txt index 9ee06f2..5b423b0 100644 --- a/TODO.txt +++ b/TODO.txt @@ -11,6 +11,5 @@ $[data(length)] possibly. BUG LIST -1) Call tag is acting wierd. Look at testcall.jet. -2) Fix the variable retriever to perform all variable translation +1) Fix the variable retriever to perform all variable translation before fetching value processing. diff --git a/docs/JetCore.aux b/docs/JetCore.aux new file mode 100644 index 0000000..4876431 --- /dev/null +++ b/docs/JetCore.aux @@ -0,0 +1,42 @@ +\relax +\@writefile{toc}{\contentsline {section}{\numberline {1}Global Variables}{4}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {2}Local Variables}{4}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {3}Keyword Variables}{4}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4}Environment Variables}{4}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5}CGI Variables}{4}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6}Operators}{4}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Arithmentic Operators}{5}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Boolean Operators}{5}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {7}Function Reference}{5}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}concat}{5}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}integer}{5}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {7.3}left}{5}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {7.4}random}{5}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {7.5}round}{5}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {7.6}substring}{5}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {8}Session Control}{5}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {9}call}{6}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {10}comment}{6}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {11}cookie}{6}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {12}dump}{6}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {13}exclude}{7}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {14}expr}{7}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {15}for}{7}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {16}header}{7}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {17}if/else}{7}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {18}ifrow/else}{8}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {19}include}{8}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {20}jet}{8}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {21}mysql}{8}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {22}read}{8}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {23}set}{9}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {24}sql}{9}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {25}stream}{9}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {26}system}{9}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {27}tag}{9}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {28}until}{10}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {29}while}{10}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {30}whiledir}{10}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {31}whilerow}{10}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {32}write}{10}{}\protected@file@percent } +\gdef \@abspage@last{10} diff --git a/docs/JetCore.dvi b/docs/JetCore.dvi new file mode 100644 index 0000000000000000000000000000000000000000..1288a5aa6272dbb1f4edb820a1cec6dc022cdcac GIT binary patch literal 21424 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 literal 0 HcmV?d00001 diff --git a/docs/JetCore.log b/docs/JetCore.log new file mode 100644 index 0000000..41d39c3 --- /dev/null +++ b/docs/JetCore.log @@ -0,0 +1,175 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Debian) (preloaded format=latex 2024.11.17) 8 NOV 2025 16:58 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**JetCore.tex +(./JetCore.tex +LaTeX2e <2023-11-01> patch level 1 +L3 programming layer <2024-01-22> +(/usr/share/texlive/texmf-dist/tex/latex/refman/refart.cls +Document Class: refart 2006/11/13 v2.0e LaTeX document class +\papermarginwidth=\skip48 +(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2023/05/17 v1.4n Standard LaTeX file (size option) +) +\leftmarginwidth=\dimen140 +\fullwidth=\dimen141 +\emptyfoottopmargin=\dimen142 +\emptyheadtopmargin=\dimen143 +\c@part=\count187 +\c@section=\count188 +\c@subsection=\count189 +\c@subsubsection=\count190 +\c@paragraph=\count191 +\c@subparagraph=\count192 +\c@figure=\count193 +\c@table=\count194 +\abovecaptionskip=\skip49 +\belowcaptionskip=\skip50 +\bibindent=\dimen144 +) +(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-dvips.def +File: l3backend-dvips.def 2024-01-04 L3 backend support: dvips +\l__pdf_internal_box=\box51 +\g__pdf_backend_object_int=\count195 +\l__pdf_backend_content_box=\box52 +\l__pdf_backend_model_box=\box53 +\g__pdf_backend_annotation_int=\count196 +\g__pdf_backend_link_int=\count197 +\g__pdf_backend_link_sf_int=\count198 +) +(./JetCore.aux) +\openout1 = `JetCore.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 7. +LaTeX Font Info: ... okay on input line 7. + (./JetCore.toc +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 8. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 8. + [1 + +]) +\tf@toc=\write3 +\openout3 = `JetCore.toc'. + + +! Undefined control sequence. +l.13 \chaptermark + {Introduction} +? q +OK, entering \batchmode... + [2] +! Undefined control sequence. +l.23 \chaptermark + {Tags and Attributes} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.32 ...e from mysql may be performed using the \< + mysql\> tag +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.33 in combination with the \< + ifrow\>, \ and \ tags. +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.33 in combination with the \, \< + whilerow\> and \ tags. +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.33 ...on with the \, \ and \< + sql\> tags. +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.66 \chaptermark + {Variables and Variable Types} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + [3] +! Undefined control sequence. +l.125 \chapter + {Expressions} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + [4] +! Undefined control sequence. +l.172 \chapter + {Common Gateway Interface Features} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + [5] +! Undefined control sequence. +l.218 \chapter + {Tag Reference} +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + [6] [7] [8] [9] [10] (./JetCore.aux) + *********** +LaTeX2e <2023-11-01> patch level 1 +L3 programming layer <2024-01-22> + *********** + ) +Here is how much of TeX's memory you used: + 500 strings out of 474223 + 9431 string characters out of 5748758 + 1931972 words of memory out of 5000000 + 22827 multiletter control sequences out of 15000+600000 + 560443 words of font info for 44 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 35i,6n,50p,160b,169s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on JetCore.dvi (10 pages, 21424 bytes). diff --git a/docs/JetCore.pdf b/docs/JetCore.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c8523310bde893fc8d923d5539255685728a4e6c GIT binary patch literal 60520 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%0A;6SXbr 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 uC= tag in combination with the \, \ and \ tags. -\section{User Defined Tags and Tag Liraries} +\sectionmark{User Defined Tags and Tag Libraries} You can define your own tag definitions and use them within your JET scripts. @@ -63,7 +63,7 @@ higher tag. -\chapter{Variables and Variable Types} +\chaptermark{Variables and Variable Types} Variables are used to contain dynamic content values and can be sourced from several locations and limited in scope depending on use. diff --git a/docs/JetCore.toc b/docs/JetCore.toc new file mode 100644 index 0000000..495a803 --- /dev/null +++ b/docs/JetCore.toc @@ -0,0 +1,40 @@ +\contentsline {section}{\numberline {1}Global Variables}{4}{}% +\contentsline {section}{\numberline {2}Local Variables}{4}{}% +\contentsline {section}{\numberline {3}Keyword Variables}{4}{}% +\contentsline {section}{\numberline {4}Environment Variables}{4}{}% +\contentsline {section}{\numberline {5}CGI Variables}{4}{}% +\contentsline {section}{\numberline {6}Operators}{4}{}% +\contentsline {subsection}{\numberline {6.1}Arithmentic Operators}{5}{}% +\contentsline {subsection}{\numberline {6.2}Boolean Operators}{5}{}% +\contentsline {section}{\numberline {7}Function Reference}{5}{}% +\contentsline {subsection}{\numberline {7.1}concat}{5}{}% +\contentsline {subsection}{\numberline {7.2}integer}{5}{}% +\contentsline {subsection}{\numberline {7.3}left}{5}{}% +\contentsline {subsection}{\numberline {7.4}random}{5}{}% +\contentsline {subsection}{\numberline {7.5}round}{5}{}% +\contentsline {subsection}{\numberline {7.6}substring}{5}{}% +\contentsline {section}{\numberline {8}Session Control}{5}{}% +\contentsline {section}{\numberline {9}call}{6}{}% +\contentsline {section}{\numberline {10}comment}{6}{}% +\contentsline {section}{\numberline {11}cookie}{6}{}% +\contentsline {section}{\numberline {12}dump}{6}{}% +\contentsline {section}{\numberline {13}exclude}{7}{}% +\contentsline {section}{\numberline {14}expr}{7}{}% +\contentsline {section}{\numberline {15}for}{7}{}% +\contentsline {section}{\numberline {16}header}{7}{}% +\contentsline {section}{\numberline {17}if/else}{7}{}% +\contentsline {section}{\numberline {18}ifrow/else}{8}{}% +\contentsline {section}{\numberline {19}include}{8}{}% +\contentsline {section}{\numberline {20}jet}{8}{}% +\contentsline {section}{\numberline {21}mysql}{8}{}% +\contentsline {section}{\numberline {22}read}{8}{}% +\contentsline {section}{\numberline {23}set}{9}{}% +\contentsline {section}{\numberline {24}sql}{9}{}% +\contentsline {section}{\numberline {25}stream}{9}{}% +\contentsline {section}{\numberline {26}system}{9}{}% +\contentsline {section}{\numberline {27}tag}{9}{}% +\contentsline {section}{\numberline {28}until}{10}{}% +\contentsline {section}{\numberline {29}while}{10}{}% +\contentsline {section}{\numberline {30}whiledir}{10}{}% +\contentsline {section}{\numberline {31}whilerow}{10}{}% +\contentsline {section}{\numberline {32}write}{10}{}% diff --git a/tests/testmath.jet b/tests/testmath.jet new file mode 100755 index 0000000..f0af3d2 --- /dev/null +++ b/tests/testmath.jet @@ -0,0 +1,23 @@ +#!../jet-2.0 + + +$[value1] + +$[value2] + +$[value3] + +$[value4] + +$[value5] + +$[value6] + +$[value6] + +$[value7] + +$[value8] + +$[value9] +