? سلام?! الان با هم یه ریاضی راستبهچپ با PEGjs میسازیم?! ?
نفسها رو در سینه حبس کنید!?
بسمالله?
خودِ ریاضی، یک مفهومِ ?«مُجَرَّد» است؛ یعنی ?انتزاعی اَاَاَست؛ ?یعنی لمس کردنی نیییست؛ ?♂️یعنی دیدنی نییست؛ ?یعنی مادّی هم نییست!(??...) ?
پس چه بکنیم با آن…!?
? اینجا است که «مدل ریاضی» به داد ما میرسد?! (الان میگویم چه صیغهای است?)
تَماااااااااامِ ریاضیای که شما میشناسید ?«مدل» ریاضی است و نه خودِ ریاضی?!
حتی زبان ریاضی هم یک مدل ریاضی است. یعنی وقتی داریم به زبان ریاضی چیزی را مینویسیم یا حتی بالاتر از آن، وقتی که داریم زبان ریاضی را دستکاری میکنیم داریم در حوزهی مدلسازیِ ریاضی کار میکنیم.
پس…
وقتی میآییم با PEGjs زبان ریاضی را کمی به دلخواه خودمان تغییر دهیم، داریم در حوزهی مدلسازی ریاضی کار میکنیم.
ریاضی، علمی است که هر کسی به خودش اجازهی دستکاریاش را نمیدهد. ولی ما در این مقاله شما را به دستکاریاش دعوت میکنیم?! (پویش هم میتونه بشه)
ما دستکاری زبان ریاضی را با استفاده از PEGjs انجام میدهیم. اما در این مقاله قصد آموزش PEGjs را نداریم. شما به هر شکلی میتوانید دستکاری زبان ریاضی را انجام دهید اما ما در اینجا برای مثال، یک ریاضیِ فارسی و راستبهچپ میسازیم?!
۱. وارد این لینک شوید: https://pegjs.org/online
۲. کادر سمت چپ مخصوص وارد کردن گرامر زبانی است که شما اختراع میکنید. کدهای پیشفرضش، مثالی برای محاسبهگرِ عدد است، با همان زبان عادی ریاضی. این کدهای کادر سمت چپ را پاک کنید و کدهای زیر را در آن جایگذاری کنید:
Paste it there:
// -_-_-_-_-_-_-_ RTL Mathematics _-_-_-_-_-_-_- //
{
function toEnglishDigit(text) {
let find = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];
let replace = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
let replaceString = text;
let regex;
for (let i = 0; i < find.length; i++) {
regex = new RegExp(find[i], "g");
replaceString = replaceString.replace(regex, replace[i]);
}
return replaceString;
};
}
Expression
= head:Term tail:(_ ("با" / "ازش") _ Term)* {
return tail.reduce(function(result, element) {
if (element[1] === "با") { return result + element[3]; }
if (element[1] === "ازش") { return result - element[3]; }
}, head);
}
Term
= head:Factor tail:(_ ("در" / "بر") _ Factor)* {
return tail.reduce(function(result, element) {
if (element[1] === "در") { return result * element[3]; }
if (element[1] === "بر") { return result / element[3]; }
}, head);
}
Factor
= "(" _ expr:Expression _ ")" { return expr; }
/ Integer
Integer "integer"
= _ [۱۲۳۴۵۶۷۸۹۰]+ { return parseInt(toEnglishDigit(text()), 10); }
_ "whitespace"
= [ \t\n\r]*
۳. وارد کادر سمت راست شوید و متنش را پاک کنید.
۴. بر صفحهکلیدتان، کلید «Ctrl» سمت راستی و «Shift» سمت راستی را با هم فشار دهید تا ویرایشگر، راستچین شود.
۵. تبریک میگویم?! حالا شما یک ریاضی راستچین اختراع کردهاید.???
// چند مثال آماده:
۲۵ ازش (۳ در ۷) // میدهد ۴
۵ با ۱۰ ازش ۳ // میدهد ۱۲
۱۸ بر ۳ // میدهد ۶
۳ با ۱۸ بر ۳ // اولویت با تقسیم است و میدهد ۹
// به همین ترتیب میتوانید عبارتهای دیگری را برای محاسبه بنویسید.
و حالا شما هر طور که خودتان دوست دارید ریاضی بسازید?!