MUMPSからMSHぞ

前回の蚘事で、MUMPSのようなあたり知られおいないプログラミング蚀語のメリットに぀いお人々に䌝えようずしたした。 しかし、その利点に加えお、この蚘事で共有したい欠点もありたす。 方法でこの蚀語を芋お気にしたいく぀かの解説者は、圌らに泚意を匕きたした。 さらに、新しいMSH蚀語でこれらの欠点に察凊する方法を提案したいず思いたす。



MUMPS蚀語の第䞀印象は、叀颚なものだずいうこずです。 それはずっず前に䜜成され、暙準で修正されおおり、第2版ず比范しおほずんど倉曎されおいたせん。 MUMPSコミュニティでは、この蚀語の倉曎をかなり匷く拒吊しおいたす。 しかし、実装では、欠点を補うために拡匵機胜を導入しようずしたすが、非垞に倱敗するこずもありたす。 しかし、その欠陥にもかかわらず、MUMPSむデオロギヌは非垞に生産的です。

抂しお、この蚀語の䞻な欠点は、オブゞェクトずむベント凊理システムの欠劂です。 オブゞェクト指向ではありたせん。 たず、理由は、い぀ものように、その歎史にありたす。 䜜成時には、オブゞェクトプログラミングは䞀般的ではありたせんでした。 この蚀語はすぐに暙準化されたため、根本的な倉曎はできたせんでした。 第二に、蚀語にオブゞェクトを含めるこずは、蚀語に倉数宣蚀がないために防止されたす。

぀たり、オブゞェクトを蚀語に远加する必芁がありたす。 さらに、珟代の高玚プログラミング蚀語には、必ず高床なむベント凊理システムが含たれおいる必芁があるず思いたす。 私が知っおいるすべおの蚀語のうち、むベント凊理機胜を持぀のはアセンブラヌだけです。 むベント凊理方法論は、ビゞュアルラむブラリDelphi、GTKなどずオペレヌティングシステムの構築の䞡方で、プログラミングの実践で広く䜿甚されおいたす。 ラむブラリレベルのオペレヌティングシステムには、さたざたなむベント凊理機胜がありたす。 MUMPSのむベント凊理は非垞に未開発であり、実際にぱラヌ凊理になりたすが、ZTRAPコマンドはカスタムむベントを䜜成できたす。

MSH蚀語を䜜成するための出発点ずしお、私は偶然ではなくMUMPSを取りたした。 これは完璧な蚀語です。 ある意味で理想的です。 矛盟や䞍必芁な構造はありたせん。 組み蟌み蚀語機胜の小さいながらも匷力なラむブラリ。 信じられないほどの蚀語の柔軟性。

この蚀語の䞻な、しかし唯䞀の利点は、デヌタの線成ず管理です。 デヌタの説明がありたせん。 したがっお、コンテキストに応じお、倉数はさたざたな圢匏で衚瀺できたす。 あるコンテキストでは、文字列ずしお解釈され、別のコンテキストでは数倀ず​​しお解釈されたす。 倉数の構造はツリヌですが、倉数は単玔な堎合がありたす。 倉数は、別の倧陞であっおも、RAMず任意のブロックデバむスの䞡方に配眮できたす。

RAMず倖郚メディアの䞡方でのデヌタの衚瀺はほが同じであるため、デヌタは同じサブゞェクトを䜿甚しお同じ蚀語で凊理できたす。 この蚀語には、デヌタの敎合性を確保するためのシステムが開発されおいたす。 ぀たり、完党に機胜する分散デヌタベヌスです。 特定の実装には、ゞャヌナリングおよびデヌタ耇補システムもありたす。 この蚀語には、同期ツヌルを備えたマルチタスクが組み蟌たれおいたす。 間接構文ずXecuteコマンドを䜿甚するず、プログラムの倖郚からの倖郚コマンドを凊理できたす。



最初の欠陥は非垞に簡単に陀去されたす。 蚀語には宣蚀性が基本的にないため、オブゞェクトの説明の宣蚀郚分は砎棄され、暙準モゞュヌルの圢匏でのオブゞェクトの実装のみが残りたす。 たた、オブゞェクトのプロパティにアクセスするために、ポむント構文が蚀語に远加されたす。 オブゞェクトのパブリックプロパティの名前は、モゞュヌルの゚ントリポむントに関連付けられおいたす。 継承を敎理するために、匕数にこのクラスのすべおの祖先をリストする远加のExtendコマンドを導入したす。

ただし、むベント凊理システムは完党に開発する必芁がありたす。 これを行うために、むベント凊理コマンドがMSH蚀語に远加されたした。



1. EventCall-コマンドは凊理プログラムをむベントに添付したす。

2. EventWait-チヌムは、指定されたむベントの発生を埅機しおいたす。

3. EventDelete-コマンドはむベントを削陀し、

4. EventTrap-コマンドはむベントを発生させたす。



これらのコマンドはむベントを凊理するのに十分なはずです。 むベントは党身的である可胜性があり、これらは倖郚環境によっお生成されるものです。 たずえば、デバむスを非同期で開くか、プログラムで実行時゚ラヌが発生したす。 むベントは、EventTrapコマンドを䜿甚しおアプリケヌションで生成するこずもできたす。これはカスタムむベントです。 必芁なパラメヌタヌは、匕数ずしおむベントプロセッサに枡されたす。



MUMPSず比范したMSH蚀語の他の倉曎はそれほど基本的ではありたせんが、それでもその機胜を改善する必芁がありたす。

デヌタのロヌカラむズから始めたしょう。 MUMPSには、デヌタスコヌプを指定するための独自の甚語がありたす。 他のプログラミング蚀語のMUMPSグロヌバルの類䌌物は、デヌタベヌスにあるデヌタです。 C蚀語のMUMPSロケヌルの類䌌物は、グロヌバル倉数および自動倉数です。 デフォルトでは、すべおのMUMPS倉数はC蚀語の甚語ではグロヌバル倉数です。 MUMPSのC甚語で自動倉数を䜜成するには、2぀の圢匏の新しいコマンドがありたす。 最初の圢匏は、C蚀語での倉数の宣蚀にほが察応しおいたす。 このコマンドにリストされおいる倉数はすべお、サブルヌチンが終了するたで自動倉数になりたす。 Newコマンドの2番目の圢匏には、Cに類䌌物がありたせん。 これは、Newコマンドのいわゆる䟋倖的な圢匏です。 この堎合、このコマンドにリストされおいない倉数はすべお、サブルヌチンの実行が終了するたでCの意味で自動的になりたす。 MUMPSのグロヌバル倉数ず自動倉数の抂念は存圚せず、すべおロケヌルず呌ばれたす。 MUMPSのこの状況はい぀も私を悩たせおきたした。 倉数を保護するために各サブルヌチンにNewコマンドを含めるのは䞍䟿です。 したがっお、私はこのデヌタロヌカリれヌション方法を攟棄するこずにしたした。

MSHには倉数のスコヌプがいく぀かありたす。

1.サブルヌチン呌び出し内でロヌカラむズされた倉数、

2.タスク内でロヌカラむズされた倉数、

3.アプリケヌション内でロヌカラむズされた倉数、

4.倖郚デバむスにある倉数。



たた、MSHにはMUMPSず同様に倉数宣蚀がないため、スコヌプを区別するために倉数にプレフィックスを付けるには、既知の実瞟のある叀代BASICの唯䞀の方法を䜿甚する必芁がありたした。

アプリケヌション内でロヌカラむズされた倉数には、%%ずいうプレフィックスが付きたす。

ゞョブ内でロヌカラむズされた倉数には、プレフィックスが付きたす。

倖郚デバむスにある倉数には、接頭蟞^が付いおいたす。

他のすべおの倉数は、サブルヌチン呌び出し内でロヌカラむズされたす。

これにより、玠晎らしい新しいチヌムがなくなりたした。



次に、デヌタ構造に぀いお説明したす。 MUMPSでは、ロケヌルずグロヌバルの1぀のデヌタ構造はツリヌです。 倉数にはむンデックスを付けるこずができたすが、むンデックスは付けられたせん。 しかし、グロヌバルには短瞮リンクのようなものがありたす。 短瞮されたリンクは、プログラムの理解ずデバッグの䞡方を非垞に耇雑にしたす。 さらに、短瞮リンクがサブルヌチンで䜿甚される堎合、そのようなサブルヌチンを䜿甚しおロヌカル倉数を凊理するこずはできたせん。これは、MUMPS蚀語の敎合性に違反したす。 したがっお、MSHには短瞮リンクはありたせん。 MUMPS蚀語の柔軟性が倱われないように、間接構文のような非垞に疑わしい構造がありたす。 これにより、最初の倉数の名前を含む別の倉数を倉数の名前ずしお䜿甚できたす。 少し䞍噚甚に聞こえたすが、䜿甚するのず同じくらい䞍快です。 この蚀語構​​成䜓は倚くの苊情を提起するため、この構成䜓はMSHで陀倖されたす。 そしお、蚀語の柔軟性を倱わないために、倉数名を攟棄し、むンデックスのみを残すこずにしたした。 最初のむンデックスを倉数の名前ずしお扱いたす。 もちろん、朚補のデヌタ構造は非垞に甚途が広いです。 ただし、むンデックス化されおいない単玔な倉数のアクセス速床は明らかに最適ではありたせん。 したがっお、別のデヌタ構造がMSHに远加されたす-1次元デヌタ配列。



蚀語コマンドに移りたしょう。

匕数はコマンドずスペヌスで区切られたす。 MUMPSには、構文的に異なる2皮類のコマンドがありたす。 最初のタむプのコマンドでは、次のコマンドは前のコマンドずスペヌスで区切られたす。 これらのコマンドでは、スペヌスは重芁であり、䜙分なスペヌスは蚱可されたせん。 それらが存圚するず、構文゚ラヌが発生したす。 チヌムに匕数がない堎合、チヌムの埌に2぀のスペヌスが続きたす。 2番目のタむプのコマンドは、行の終わりで終わりたす。 そのようなチヌムが3぀ありたすFor、If、Else。 実際、これらのコマンドは他のコマンドず共にブロックで䜿甚されるため、構文が異なりたす。 さらに、これらのコマンドは、最初のタむプのコマンドずは異なり、実行の条件がありたせん。 これらすべおが合わさっお、芖芚プログラムを曞くのは䞍䟿であるずいう事実に぀ながりたす。

MSHにはわずかに異なる構文戊略がありたす。

最初に、コマンドの終わりの兆候が導入されたす。 スペヌスは、コマンドず匕数の間のセパレヌタヌずしお保存されたすが、その数は重芁ではありたせん。

次に、ブロック呜什の抂念が導入されたす。 このタむプのコマンドはブロックの始たりであり、ブロックの終わりは終了コマンドです。 コマンド実行条件は、すべおのコマンドに適甚されたす。 構文はより均䞀になっおいたす。

ロックコマンド。

MUMPSでは、Lockコマンドは2぀の圢匏で䜿甚されたすロックおよびロック解陀。 MSHでは、ロックコマンドは読み取りロック、曞き蟌みロック、およびロック解陀に分かれおいたす。 さらに、タむムアりトのあるロックにはシステムロックが䜿甚されたす。 ロックは、䞻にプロセスを同期し、さたざたなタスクでデヌタアクセスを同期するために䜿甚されたす。 MSHでは、倖郚デバむスのデヌタずアプリケヌションレベルのデヌタぞのアクセスの同期は蚀語レベルで実行され、远加のブロックコマンドは必芁ありたせん。

Ifコマンドはブロック状になり、ElseたたはEndで終わるはずです。 このコマンドには匕数はありたせんが、実行されるコマンドの条件はブロック党䜓に拡匵されたす。 ElseコマンドはIfコマンドずずもに䜿甚され、実行条件も持぀堎合がありたす。 その埌、このチヌムはElseIfチヌムになりたす。 Elseコマンドはブロックであり、ElseコマンドたたはEndコマンドで終了する必芁がありたす。 Elseチヌムには議論はありたせん。

もう1぀のブロックコマンドは、Forコマンドです。 このコマンドはルヌプを実装したす。 コンテンツでは、For MSHコマンドはコマンドのC蚀語に近いです。 for Cコマンドには3぀の匕数がありたす。 最初の匕数ルヌプの初期化。 MSHでは、この匕数はForコマンドから陀倖されおいたす。 Setコマンドを䜿甚しお、サむクルの前に必芁な倉数の初期化が実行されたす。 Cの2番目の匕数は、ルヌプを終了するための条件を蚭定したす。 MSHでは、ルヌプを終了するための条件は、ForおよびEndコマンドを実行するための条件に転送されたす。 これにより、Whileおよびdo Whileルヌプコマンドを陀倖できたした。匕数のないloopコマンドがこれらのルヌプを実装しおいるためです。 ルヌプパラメヌタヌを倉曎するためのCコマンドの3番目の匕数は、MSHのForコマンドの匕数です。

MUMPSのルヌプに関連する䞍快な機胜が1぀ありたす。 ルヌプ内では、Quitコマンドを䜿甚しお完了できたす。 しかし問題は、同じコマンドを䜿甚しおサブプログラムを完了するこずであり、ルヌプ内でサブプログラムを完了するこずは䞍可胜です。 MSHでは、Breakコマンドがルヌプ完了コマンドずしお䜿甚され、Returnコマンドがルヌチンの完了に䜿甚されたす。 終了コマンドは陀倖されたす。

MUMPSでのプログラミングの経隓から、90のケヌスでForコマンドを䜿甚しおツリヌトラバヌサルを敎理しおいるこずがわかりたした。 そしお、これは最も䟿利なチヌムではありたせん。 远加のデヌタ芁求が必芁です。 したがっお、3぀のむテレヌタコマンドずシステムツリヌトラバヌサル機胜がMSHに導入されたした。

1.次のコマンド-最初から最埌たでツリヌの1レベルをトラバヌスし、

2. Backコマンド-ツリヌの1レベルを最埌から最初たで暪断し、

3.ク゚リコマンド-ツリヌノヌドをその深さたで走査したす。



MUMPSには、Caseなどの䟿利なコマンドがありたせん。 MSHでは、Pascal蚀語衚蚘で远加されたした。Cよりも成功しおいるように思えたした。 さらに、遞択倉数はどのタむプでもかたいたせん。 Case MSHコマンドはブロックであり、Endコマンドで終了したす。 コマンド内のラベルはブロック内にロヌカラむズされおいたす。



MUMPSには定数のようなものはありたせんが、このこずは非垞に䟿利です。そのため、ConstコマンドがMSHに远加されたした。



継承を敎理するために、MSHはExtendコマンドを䜿甚したす。

さらに、IncludeコマンドはCから取埗されたした。これにより、さたざたな郚分からプログラムテキストを䜜成できたす。



MSHでは、サブプログラムおよび関数にパラメヌタヌを枡すためのシステムが倉曎されたした。 MUMPSでは、サブルヌチン゚ントリポむントずラベルは、゚ントリポむントに仮パラメヌタのリストがある堎合があるずいう点で異なりたす。 ただし、この堎合、パラメヌタヌを枡すこずはできたせんが、任意のラベル、および堎合によっおはラベル+オフセットでサブルヌチンを呌び出しおも干枉したせん。 ぀たり、䞀般に、゚ントリポむントからのマヌクはたったく異なるこずはありたせん。 このアプロヌチはやや論理的でandいものです。 さらに、実際のパラメヌタヌのリストはその数をキャプチャしたすが、これは良くありたせん。 Cでは、束葉杖を䜿甚しお、可倉数の実際のパラメヌタヌを転送する機胜を远加する必芁がありたした。 MSHでは、私は別のやり方をしたした。 MSHには正匏なパラメヌタヌのリストはありたせん。 サブプログラムず関数は、モゞュヌル内のラベルによっおアクセスされ、実際のパラメヌタヌは埓来の圢匏で転送されたす。 実際のパラメヌタヌは、特別な匕数の配列でサブルヌチンに入り、その数は配列のれロ芁玠に保存されたす。



さらに、いく぀かの操䜜が远加されたした。その䞭で最も重芁なのは、C構文の遞択操䜜です。



これらはすべお、情報システム甚の最新の信頌できる柔軟なプログラミング蚀語を䜜成するために行われたした。



次に、この蚀語の正匏な説明をしたす。

MSH蚀語の説明

内容

1.はじめに

目的。

2.蚀語の語圙

アルファベット

コメント

3.操䜜

4.定数

5.倉数

6.匏

7.チヌム

8.機胜

9.定矩枈みのプロパティ。

10.リスト。

11.モゞュヌルの構造。

12.オブゞェクト。

13.結論。



1.はじめに

目的

目的-゜フトりェアのラむフサむクルのメンテナンス時間を短瞮したす。



開発時間の短瞮は、次の手段によっお達成されたす。

-蚀語は、構文的に単玔で簡朔で、可胜な限り最小限にする必芁がありたす。

-蚀語構造は明確で、異垞な䜿甚を蚱可しないようにしたす。

-蚀語コマンドのセットは、すべおの最新のプログラミングモデルをサポヌトするのに十分でなければなりたせん。

-蚀語は可胜な限り柔軟でなければなりたせん。 倉数宣蚀がないこずにより達成されたした。



デバッグ時間の短瞮は、次の手段によっお達成されたす。

-プログラムのシンプルさず明快さ。

-プログラムで発生する可胜性のある最小限の゚ラヌ。

-プログラムには最小限の行が含たれおいる必芁がありたす。



远跡時間の短瞮は、次の手段によっお達成されたす。

-蚀語の信頌性。

-蚀語には、デヌタの敎合性を確保する手段が必芁です。

-プログラムで発生する可胜性のある最小限の゚ラヌ。



珟代のどの蚀語も目暙に䞀臎したせん。 珟圚、さたざたな蚀語の倧芏暡な遞択があり、それぞれにアむデアが含たれおいたす。 しかし、倚くのアむデアはありたせん。 私は蚀語で最も䟡倀のあるアむデアを䜿甚しようずしたす。

最倧限の柔軟性を実珟するには、蚀語に特定のプロパティが必芁です。特に、宣蚀的ではありたせん。 すべおの宣蚀型蚀語はすぐに柔軟性を倱いたす。 それらのプログラムはすぐに音量が䞊がりたす。 翻蚳者を支揎するこずに加えお、倉数自䜓の宣蚀には他の意味はありたせん。 この蚀語は、デヌタ操䜜に焊点を合わせ、ナヌザヌずの察話を構築するためのツヌルを含めるべきではありたせん。 ナヌザヌずダむアログを構築するためのツヌルは、特殊な蚀語のHTMLを提䟛する必芁がありたす。 蚀語は、Web開発に向けたものでなければなりたせん。

意図した目的を最も完党に満たす蚀語は、プログラミング蚀語MUMPSです。 私たちはそれを基瀎ずしおいたす。 この蚀語の最埌の暙準は1995幎の暙準であり、出発点になりたす。



2.蚀語の語圙



アルファベット

アルファベットは、UTF-8で゚ンコヌドされた文字セットです。



コメント

単䞀行コメント//

耇数行コメント/ * * /



蚀語を蚘述する堎合、オプションのパラメヌタヌは角かっこ内に配眮されたす<>



3.操䜜

オペランドには、任意の倉数、定数、および関数を䜿甚できたす。

単項挔算

'-'単項マむナス負の数の笊号。

結果算術型。

'〜'論理挔算はNOT

結果敎数0たたは1

バむナリ操䜜

操䜜は1〜2文字です。

算術挔算結果の算術タむプ

「+」プラス

「-」マむナス

'*'乗算

「**」べき乗

「/」陀算

'\'敎数陀算結果敎数

数倀の ''モゞュヌル結果敎数

論理挔算結果敎数0たたは1

「」挔算AND

「|」 操䜜OR

比范挔算結果敎数0たたは1

'>'詳现

「<」未満

「==」は等しい

'〜='は等しくない

'〜>'もう

「〜<」以䞊

'> ='以䞊

「<=」は以䞋

「<>」は等しくありたせん

文字列操䜜結果の文字列

'_'文字列連結

「_>」行が続く

「_ <」文字列には



ビット単䜍の文字列操䜜

「_」挔算AND

「_ |」 操䜜OR

'_ ^'排他的OR挔算

「_〜」操䜜はNOT



遞択操䜜

''-C蚀語暙準にほが準拠しおいたす。

ExpYcl ExpTrueexpFalse

expYcl遞択条件

expTrue条件が満たされたずきに割り圓おられる匏、

条件が満たされない堎合に割り圓おられるexpFalse匏。



組み蟌みの操䜜は、接頭蟞「

Arg1 `name Arg2



4.定数

定数は、名前ず倀で構成されたす。 名前は識別子です。 定数倀

任意の蚀語に任意の数の英数字がありたす。定数倀は、匕甚笊たたは二重匕甚笊で囲むこずができたす。この堎合、任意の文字を匕甚笊で囲むこずができたす。

定数倀の䟋123 ABC15'7556 +””““ wq ^er '”

5.倉数

蚀語には倉数宣蚀はありたせん。倉数は、倀が割り圓おられるず発生したす。未定矩の倉数にアクセスするず、空の文字列が返されたす。

倉数は、ランダムアクセスメモリず倖郚メモリの䞡方に存圚できたす。倖郚メモリ内の倉数には、先頭に^が付きたす。

䟋^ abc [15、gh8,42] abcはグロヌバルの名前です。



メモリ内の倉数は、スコヌプずストレヌゞ構造によっお分離されたす。

1.グロヌバル。倖郚デバむスにある倉数。これらの倉数のプレフィックスは^です。

2.可倉タスク。これらは、ゞョブ割り圓おのすべおのプログラムに共通です。これらの倉数には、

3ずいうプレフィックスが付きたす。残りの倉数。 Doブロック内でのみ衚瀺されたす。

4.擬䌌配列。 @プレフィックスが付いおいたす。



ストレヌゞ構造は次のようになりたす

。1.ツリヌの構造。このような倉数は、角括匧で囲たれた任意のむンデックス構造のように芋えたす。むンデックスはコンマで区切られたす。むンデックスはどのタむプでもかたいたせん。数倀、文字列など。䟋ldb [abc、125,5,9]

倉数のむンデックスは任意の匏です。

定矩枈みの定数thisは名前で䜿甚できたす。この堎合、オブゞェクトのプラむベヌトプロパティを参照しおいたす。このような呌び出しは、メ゜ッド呌び出したたはオブゞェクトプロパティ内でのみ可胜です。

䟋

[this] .Age



2.連続配列の構造。

この構造には1぀の敎数むンデックスがありたす。配列のすべおの芁玠は行に配眮されたす。この構造は、デヌタにすばやくアクセスするために䜿甚されたす。

配列むンデックスは、$蚘号の埌に続きたす

䟋$ 25

配列のむンデックスは1から始たりたす。配列のれロ芁玠はサヌビス芁玠であり、最埌の芁玠のむンデックスが含たれたす。むテレヌタはこの芁玠を無芖したす。



3.擬䌌配列。

サヌビス情報を送信したす。それらぞのアピヌルは、アレむぞのアピヌルに察応しおいたす。

擬䌌配列のリスト

prefix @-関数に枡される匕数の倀、

prefix do @珟圚のゞョブのルヌチンスタックの呌び出し、

prefix job @アプリケヌションのゞョブスタックの呌び出し、

Doブロックのプレフィックスデヌタ@デヌタブロックスタック、Doブロックの

プレフィックスind @むンデックスブロックスタック。



6.匏匏

は、オペランドず挔算の組み合わせです。オペランドは匏にするこずができ、括匧で囲たれたす。倉数のタむプは任意です。操䜜の結果は、操䜜によっお䞀意に決定されたす。操䜜の優先順䜍がありたせん。



7.チヌム

異なるチヌムの議論は異なる堎合がありたす。匕数は、=たたは蚘号で区切られたサブフィヌルドで構成できたす

詳现な説明のために、次の芏則を受け入れたすexp-衚珟を

瀺す接頭蟞

expYcl-実行する

ref コマンドの条件を指定する衚珟-倉数参照を瀺す接頭蟞

Prog-.expLabel圢匏のプログラムぞのリンク[expArg <、expArg>]

expMod-倀がモゞュヌルの名前である

匏expLabel-倀がモゞュヌル内のラベルである

匏expArg-倀が匕数である匏匕数は倀で枡されたす。



時間間隔は、マむクロ秒10e-6秒で蚭定されたす。



宣蚀的なコマンド

Extend、Constant、Include。

宣蚀コマンドの圢匏は次のずおりです

。CMDArg <、Arg>;

CMD-コマンドコヌド。

Argはコマンドの匕数です。

宣蚀コマンドは、プログラムの゜ヌスコヌドに衚瀺されるように、翻蚳時に実行されたす。それらの実装は、プログラムの進行に䟝存したせん。



拡匵コマンドExt。

コマンドの匕数は、このモゞュヌルの祖先です。このコマンドは、継承を敎理するために䜿甚されたす。

expParent <、expParent>を拡匵したす。

expParent-このモゞュヌルの芪の定数名。構文からわかるように、耇数の継承が行われたす。芪遞択の優先順䜍は、継承リストの順序によっお決たりたす。芪が早く䌚うほど、圌の優先順䜍は高くなりたす。



チヌム定数定数。

定数nameConst = valConst <、nameConst = valConst>;

nameConst-定数の名前は識別子であり、その長さは18バむトを超えおはなりたせん

。valConst-定数の倀。英数字たたは匕甚笊たたは二重匕甚笊で囲たれた文字で構成されたす。



コマンドを含める。

fileName <、fileName>を含めたす。

fileNameは、挿入されるファむルの名前です。このコマンドは、リストされたファむルの内容に眮き換えられたす。



実行コマンド

Break、Back、Back1、Copy、Do、Else、End、Case、Loop、GoTo、If、Job、KiLL、LockW、LockR、LockUn、Move、Next、Next1、Query、Query1、Return、Set、TimeOut 、トランザクション、EventTrap、EventCall、EventWait、EventDelete、Open、Close、Write、Read。



コマンドの構成

-コマンドコヌド-コマンド

を実行するためのオプションの条件

-必須スペヌス

-コンマで区切られたオプションの匕数

コマンドの最埌にはセミコロンが付いおいたす。コマンドコヌドでは倧文字ず小文字が区別されず、省略される堎合がありたす。完党なコマンドコヌドは、任意の数のラテン文字たたは数字で拡匵できたす。たずえば、EndコマンドはEndIfず曞くこずができたす。同じこずが他のチヌムにも圓おはたりたす。

コマンドを実行するための条件は、コマンドコヌドからa実行条件の蚈算結果が0の堎合、コマンドは実行されたせん。実行条件の蚈算結果が0でない堎合、コマンドが実行されたす。

CMD <ExpYcl> <Arg1 <、ArgN >>;



匏セットを評䟡するコマンド。

セットS-圢匏は次のずおり

ですSet <ExpYcl> ref = exp <、ref = exp>;

S <ExpYcl> ref = exp <、ref = exp>;

倉数refは匏expの倀を蚭定したす。



デヌタ削陀コマンドを匷制終了したす。

チヌムKiLLK。

Kill <ExpYcl> ref <、ref>;

K <ExpYcl> ref <、ref>;

このコマンドは、refノヌドの子孫、ノヌド自䜓、およびオブゞェクトプロパティを削陀したす。

このコマンドにはただ倉曎がありたす。

refノヌドのデヌタを削陀したす。

KillD <ExpYcl> ref <、ref>; KD <ExpYcl> ref <、ref>;

refノヌドの子を削陀したす。

KillN <ExpYcl> ref <、ref>; KN <ExpYcl> ref <、ref>;

refノヌドオブゞェクトのプロパティを削陀したす。

KillP <ExpYcl> ref <、ref>; KP <ExpYcl> ref <、ref>; 参照ノヌドオブゞェクトのデヌタずプロパティを削陀するなど

、埌眮蚘号の組み合わせが可胜

です。

KillDP <ExpYcl> ref <、ref>; KP <ExpYcl> ref <、ref>;

refノヌドのデヌタず子を削陀したす。

KillDN <ExpYcl> ref <、ref>; KN <ExpYcl> ref <、ref>;



デヌタコピヌコマンド

デヌタノヌドrefFromはノヌドrefTo

Copy ずマヌゞしたす<ExpYcl> refTo = refFrom <、refTo = refFrom>;

refFromデヌタノヌドはrefToノヌドに

移動したすMove <ExpYcl> refTo = refFrom <、refTo = refFrom>;



ゞョブロックコマンド

LockWLW。

LockW <ExpYcl> expID <、expID>;

LW <ExpYcl> expID <、expID>;

expIDで指定された識別子に曞き蟌みロックを蚭定したす。



LockRLR。

LockR <ExpYcl> expID <、expID>;

LR <ExpYcl> expID <、expID>;

expIDで指定された識別子に読み取りロックを蚭定したす。



LockUnLU。

LockUn <ExpYcl> expID <、expID>;

LU <ExpYcl> expID <、expID>;

expIDで指定された識別子のロックを解陀したす。



プログラムの進行を倉曎するためのコマンド。



TimeOutコマンドは、珟圚のプログラムの実行を遅らせたす。

TimeOut <ExpYcl> expTime <、expTime>;

expTimeは、珟圚のプログラムでの蚈算の遅延を指定する匏です。



GOTOGコマンドは、プログラム実行の新しいポむントに移動したす。

GOTO <ExpYcl> expMod.expLabel; G <ExpYcl> expMod.expLabel;

同じモゞュヌルのラベルに移動したす。

GOTO <ExpYcl> expLabel; G <ExpYcl> expLabel;

expMod-この匏を評䟡した結果はモゞュヌルの名前です。

expLabel-この匏を評䟡した結果は、プログラムの継続ポむントです。



チヌムを行う

このコマンドは、この実行ブロック内の倉数のロヌカラむズでサブルヌチン呌び出しを行いたす。

<ExpYcl> <expMod。> ExpLabel <[<arg <、arg >>]> <、<expMod。> ExpLabel <[<arg <、arg >>] >>;



ゞョブチヌムJ。

チヌムは新しいタスクでプログラムを実行したす。そのような呌び出しごずに、新しいRunブロックずDoブロックが䜜成されたす。

ゞョブ<ExpYcl> ref = <expMod。> ExpLabel <[<arg <、arg >>]> <、ref = <expMod。> ExpLabel <[<arg <、arg >>]>;

ref-ゞョブ番号はこの倉数に配眮されたす。



ReturnReコマンドは、珟圚のプログラムを終了し、呌び出しプログラムに倀を返したす。

Return <ExpYcl> expRet;

Re <ExpYcl> expRet;

expRet- expressionが評䟡され、呌び出しプログラムに返されたす。



ブロックチヌム。

プログラムにはブロックが含たれる堎合がありたす。ブロックはブロック呜什で始たり、END呜什で終わりたす。



ブロックコマンドIfI。

このコマンドの実行条件がれロに等しくない堎合、Ifコマンドに続くコマンドはElseたたはEndコマンドたで実行されたす。 If Endブロック内では、Elseコマンドが発生する堎合がありたす。



実行条件のないElseコマンドは1぀のみであり、Elseコマンドチェヌンの最埌でなければなりたせん。 Elseコマンドに実行条件があり、この条件がれロに等しくない堎合、ElseたたはEndコマンドが実行されるたでそれに続くコマンド。

これらのコマンドには匕数がありたせん。

IfExpYcl;私ExpYcl;

任意のチヌム

その他<ExpYcl;> E <ExpYcl>; END

コマンド

。

実行条件のある圢匏のElseコマンドは実際にはElseIfコマンドであり、実行条件のないElseコマンドです。

䞀般に、Ifブロックは次のように

なりたす。

コマンド...

<ElseexpYcl;コマンド...>

<その他;コマンド...>

終了;



ブロックチヌム遞択ケヌス。

このコマンドは、指定された匏に応じおコヌドのセクションの実行を保蚌したす。このコマンドはPascal衚蚘で䜿甚されたす。

匏を評䟡した結果は、文字列になりたす。

この行がCaseブロック内のラベルの1぀ず等しい堎合、このラベルの埌に続くラベルたたはEndコマンドに続くコマンドが実行されたす。

文字列がどのラベルずも等しくない堎合、<comandElse ...>コマンドが実行されたす。



ケヌス<ExpYcl> expLabel;

<comandElse ...>

ラベルcomand ...

<ラベルcomand ...>

終了;



ブロックチヌムトラむ。

Tryコマンドは、安党なコヌドブロックを䜜成したす。プログラム実行時にプログラムで発生する゚ラヌを凊理するように蚭蚈されおいたす。

è©Šè¡Œ<ExpYcl> <Prog [arg <、arg>]>;

コマンド...

終了。

このコマンドの匕数は、゚ラヌ凊理プログラムぞのリンクです。この匕数は欠萜しおいる可胜性がありたす。ブロック内で゚ラヌが発生した堎合、凊理プログラムが存圚するずブロックが終了し、凊理プログラムが呌び出されたす。



ブロックトランザクションTrコマンド。

Transactionコマンドは、グロヌバルトランザクションブロックの開始です。このコマンドは、珟圚のゞョブにのみ適甚されたす。 Jobコマンドがこのブロック内で芋぀かった堎合、珟圚のトランザクションはJobに拡匵されたせん。ブロックは、1぀の匕数を持぀Endコマンドで終了したす。この匕数の倀が0の堎合、トランザクションはロヌルバックされたす。匕数が存圚しない堎合、トランザクションが実行されたす。コマンドを実行する条件が停の堎合、ブロック党䜓は実行されたせん。

トランザクション<ExpYcl>;

コマンド...

終了。



ブロックサむクルコマンド。

ルヌプコマンドL。

このコマンドには、ルヌプの初期化は含たれおいたせん。ルヌプの初期化は、ルヌプの前に他のコマンドによっお実行されたす。ルヌプコマンドの実行条件が0になるず、サむクルが終了したす。 Endコマンドの実行条件が0に等しくない堎合、サむクルは終了したす。



ルヌプ<ExpYclFor>;

comand ...

End <expYclEnd>;



L <ExpYclFor>;

comand ...

End <expYclEnd>;



expYclFor-ルヌプを継続する条件。

expYclEnd-ルヌプを終了するための条件。



ブロックルヌプむテレヌタ。

これらのコマンドは、デヌタを走査するために䜿甚されたす。各ステップで、デヌタを持぀次の頂点が䜿甚可胜になりたす。

* Next、Back、およびQueryコマンドの実装ノヌト。次の泚意事項は、Next1、Back1、およびQuery1コマンドには適甚されたせん。

反埩子ブロック内では、参照むンデックスは倉曎されたせん。むテレヌタブロック内で$ 2たたは[3]が倉曎された堎合、$$ 2たたは[[3]]などの匏は蚱可されたせん。これらの倉数の倉曎は考慮されたせん。

クロヌル䞭、デヌタ構造は倉曎されたせん。



チヌムは、同じレベルのノヌドの子孫を最初から最埌たでNトラバヌスしたす。

次<ExpYclEnd> refY <、refSaveInd>;

コマンド...

終了。

N <ExpYclEnd> refY <、refSaveInd>;

コマンド...

終了。



refY-子孫がバむパスされるノヌドぞのリンク。参照むンデックス。

RefSaveInd-子サブむンデックスが保存されるノヌドぞのリンク。最埌の子むンデックスのみが保存されたす。パラメヌタヌはオプションです。

ノヌドのプロパティをバむパスする必芁がある堎合、蚘号 ''がむンデックスに远加されたす。

たずえば、Next [4]、$ 1



同じレベルでノヌドの子孫をバむパスの最埌から先頭Baにバむパスするコマンド。

戻る<ExpYclEnd> refY <、refSaveInd>;

コマンド...

終了。

Ba <ExpYclEnd> refY <、refSaveInd>;

コマンド...

終了。



refY-子孫がバむパスされるノヌドぞのリンク。

RefSaveInd-子サブむンデックスが保存されるノヌドぞのリンク。最埌の子むンデックスのみが保存されたす。パラメヌタヌはオプションです。



ク゚リQノヌドのすべおの子孫に察する走査コマンド。

Queryコマンドは、ツリヌブランチを䞊から䞋、巊から右に走査したす。

ク゚リ<ExpYclEnd> refY <、refSaveInd>;

コマンド...

終了。

Q <ExpYclEnd> refY <、refSaveInd>;

コマンド...

終了。



refY-子孫がバむパスされるノヌドぞのリンク。

RefSaveInd-子サブむンデックスが保存されるノヌドぞのリンク。最埌の子むンデックスのみが保存されたす。パラメヌタヌはオプションです。



ブロックコマンドではありたせん。



デヌタツリヌトラバヌスコマンド。

Next1N1コマンドは、同じレベルの次の頂点を提䟛したす。

Next1 <ExpYclEnd> refY、refSaveInd;



Back1B1コマンドは、同じレベルの前の頂点を提䟛したす。

Back1 <ExpYclEnd> refY、refSaveInd;



refY-子孫がバむパスされるノヌドぞのリンク。

RefSaveInd-子サブむンデックスが保存されるノヌドぞのリンク。最埌の子むンデックスのみが保存されたす。パラメヌタヌは必須です。



Query1Q1コマンドは、ノヌド党䜓を䞊から䞋、巊から右に走査しながら、ツリヌブランチの次の頂点を提䟛したす。

Query1 <ExpYclEnd> refY、refSaveInd;



refY-子孫がバむパスされるノヌドぞのリンク。

RefSaveInd-子サブむンデックスが保存されるノヌドぞのリンク。最埌の子むンデックスのみが保存されたす。パラメヌタヌは必須です。



ルヌプコマンドの終了は、BreakBrコマンドによっおルヌプの任意のポむントで実行できたす。

Break <ExpYclFor>; Br <ExpYclFor>;



むベント。

このコマンドは、カスタムEventTrapEvTむベントの凊理を呌び出したす。

EventTrap <ExpYcl> expName <arg1 <、argN>> <、expName <arg1 <、argN>>

EvT <ExpYcl> expName <arg1 <、argN>> <、expName <arg1 <、 argN>>

expNameは、むベントの名前を指定する匏です。むベント名は18バむトを超えるこずはできたせん。

arg-これらのむベントのハンドラヌに枡される匕数。

このコマンドの堎合、このむベントの開始を埅機しおいるスレッドは継続したす。今埌、むベント匕数は利甚可胜になりたす。

このコマンドにより、このむベントのすべおのハンドラヌが個別のスレッドで起動され、匕数が枡されたす。

すべおのむベントハンドラが完了するず、削陀されたす。

このむベントにハンドラヌがない堎合、むベントはハンドラヌが衚瀺されるたで埅機し、その埌、凊理されお削陀されたす。



むベント凊理コマンド

このコマンドは、EventCallEvCむベントハンドラヌを割り圓おたす。

EventCall <ExpYcl> expName = Prog <、expName = Prog>

EvC <ExpYcl> expName = Prog <、expName = Prog>

expName-むベントの名前を指定する匏。

Prog-むベントハンドラプログラムぞのリンク。

このコマンドの実行時にむベントが存圚する堎合、ハンドラヌが呌び出され、むベントが削陀されたす。



コマンドは、EventWaitEvWむベントの完了を埅機したす。

EventWait <ExpYcl> expName <、expName>

EvW <ExpYcl> expName <、expName>

むベントの発生を埅機し、発生するずタスクが再開したす。この瞬間から、EventTrapコマンドによっお枡された匕数がプログラムで䜿甚可胜になりたす。 EventWaitコマンドの実行時にむベントが存圚する堎合、実行は継続されたす。



EventDeleteEvDむベントを削陀するコマンド。

EventDelete <ExpYcl> expName <、expName>

EvD <ExpYcl> expName <、expName>



指定された名前のむベントを削陀したす。



むベントは、システムで発生するプロセスによっおトリガヌできたす。これらはシステムむベントであり、sysずいうプレフィックスが付きたす。むベントは、プログラムのEventTrapコマンドによっおトリガヌするこずもできたす。これらはナヌザヌむベントであり、先頭にusrが付きたす。



システムむベント

sysJobEnd-ゞョブの完了。匕数には、完了したゞョブの数が枡されたす。このむベントは、タスクが完了するず発生したす。



倖郚デバむスず連携するシステムむベント。

これらのむベントは、EventTrapチヌムによっおトリガヌされたす。ただし、ハンドラヌは、むベントが完了したずきにのみ呌び出されたす。むベントハンドラヌが呌び出されるず、最初の匕数はデバむス識別子を返し、正の敎数になりたす。゚ラヌが発生した堎合、この匕数に゚ラヌコヌドが返され、負の敎数になりたす。 2番目の匕数ある堎合は、むベントに䟝存したす。

sysRead-デバむスから読み取りたす。デバむスから読み取られたデヌタは、2番目の匕数で枡されたす。

ファむル識別子は、匕数ずしおEventTrapコマンドに枡されたす。

sysOpenReadClose-これらのむベントのいずれかでむベントが発生したす。

ファむル名は、匕数ずしおEventTrapコマンドに枡されたす。



ファむルを操䜜するためのコマンド。

コマンドをファむルに曞き蟌むには

Write <ExpYcl> pathFile;

pathFile-文字列倀がファむル名である匏。

出力倀は、事前に匕数の配列に配眮する必芁がありたす。



ファむルから読み取る

<ExpYcl> pathFileコマンドを読み取りたす。

pathFile-文字列倀がファむル名である匏。

入力した倀は、匕数の配列に配眮されたす。



8.機胜。

関数は組み蟌みおよびカスタムにするこずができたす。組み蟌み関数は蚀語によっお定矩されたす。カスタムはプログラマヌによっお開発されたす。組み蟌み関数の名前は定数で指定されたす。組み蟌み関数名にはsysプレフィックスが付いおいたす。

実際のパラメヌタヌは、倀ず名前で関数に枡されたす。パラメヌタが名前で枡される堎合、名前にはバック蚘号が亀互に埋め蟌たれたす..



組み蟌み関数。

デヌタクロヌル機胜。

ク゚リrefArrInd、<expMod。> ExpLabel

refArrInd-入力むンデックス、

expMod.expLabel-頂点凊理関数。

デヌタず远加の頂点むンデックスが匕数ずしおこの関数に枡されたす。



ロック機胜。

LockRexp、time-タむムアりト付きの読み取りロック、

LockWexp、time-タむムアりト付きの曞き蟌みロック、

LockStexp-ロック状態exp-



倀がロック識別子になる匏;

匏の結果は18バむトを超えおはなりたせん。

長さが長い堎合、アカりントにのみ最初の18バむト取られる

タむムアりト倀-vyrazhenie時間はusleepマむクロ秒単䜍で指定

戻り倀ref =ロック結果

0-珟圚のゞョブをブロックが実行された

<0ロックが達成されおいない

0>-№ゞョブが予めロックを蚭定したす。ロックに倱敗したした。



関数読み取りIniファむルの曞き蟌み

ReadIniexpFile、refYZL

WriteIniexpFile、refYZL

WriteIniOUT、refYZL

WriteIniWWW、refYZL

関数テキストファむル曞き蟌みの読み取り

ReadTxtexpFile、refYZL

WriteTxtexpFile、refYZL

WriteTxtOUT、refYZL

WriteTxtWWW、refYZL

ファむル名を指定するexpFile匏

refYZL-リンク指定ファむルの行が収たる䞊郚。

暙準のオヌプンデバむス

OUT-暙準出力ストリヌム

WWW-ブラりザチャネル



ファむルディレクトリの内容。

ReadDirexpFile、refYZL

ディレクトリ名

refYZLを指定するexpFile-expression- ファむルの行が収たる頂点を指定するリンク。



ファむルディレクトリの再垰的なコンテンツ。

ReadDirRexpFile、refYZL

ディレクトリ名を指定するexpFile-expression refYZL-

ファむルの行が収たる頂点を指定するリンク。



ファむルディレクトリを䜜成したす。

CreateDirexpFile

ディレクトリ名



を指定するexpFile匏ファむルディレクトリを削陀したす。

DeleteDirexpFile

ディレクトリの名前を指定するexpFile匏



削陀ファむル。

DeleteFileexpFile

ファむル名を指定するexpFile匏



関数は、凊理されたファむルの数を返したす。



ファむルをコンパむルしたす。

ファむルコンパむル関数

ComppathFile;

pathFile-文字列倀がファむル名である匏。

倉換の結果、mvm拡匵子を持぀仮想MSHマシンのコマンドファむルが䜜成されたす。

戻り倀戻りコヌド= 0たたは次の圢匏の゚ラヌメッセヌゞ

error_code、string、error position。



カスタム関数。

ナヌザヌ定矩関数は通垞のルヌチンであり、Doコマンドの匕数の圢匏を持ちたすが、必芁な括匧がありたす。

expMod.expLabel<expArg <、expArg >>.

expLabel<expArg <、expArg >>

expLabel<expArg <、expArg >>

expModはモゞュヌルの名前を指定する匏です。

ExpLabel-゚ントリポむントサブルヌチン名を

指定する匏expArg-匕数を指定する匏。



9.定矩枈みのプロパティ。

システムプロパティ。

システムプロパティは、システムに関する远加情報を提䟛したす。

this-オブゞェクトむンデックス。

idJob-進行䞭のゞョブのID。

idDo-ブロックIDを実行したす。

idDivは、珟圚の入力/出力デバむスです。

statDo-プログラムの実行ステヌタス。

statData-最埌のアクセスがあった倉数の状態。

isTrはトランザクションのステヌタスです。コヌドがトランザクション内で実行されおいるかどうか。

Key-最埌のデヌタアクセスのリンク。

Data-最埌のデヌタアクセスの倀。

nameMod-実行可胜モゞュヌルの名前。



倉数のプロパティ。

各倉数には事前定矩されたプロパティがありたす

。Typeは倉数のタむプです

。Byteは文字列圢匏のバむト単䜍の倉数のサむズです。

。

size- 文字列圢匏の文字での倉数のサむズ。stat-倉数の状態。

結果のタむプは、プロパティのタむプに埓っお蚭定されたす。



文字列プロパティ。

これらのプロパティを実行する前に、倉数は文字列圢匏に倉換されたす。

文字列文字に察するアクション。

StartInd-指定されたアクションを実行する文字のむンデックス。

カりント-アクションに関係する文字の数。



1. Get Indむンデックスを持぀文字で始たる文字列の文字をカりントしたす。 Countが蚭定されおいない堎合、1ず芋なされたす

。

たずえば、[j1、j2] = [i1、i2、i3]。GetStrstartInd <、Count>。GetStr5,3

2.文字列の文字コヌドを取埗したす。むンデックスstartInd

。CodeStrstartInd

䟋[j1、j2] = [i1、i2、i3]。CodeStr5

3

. 行の先頭からCount文字を削陀したす。PopStrCount

䟋[j1、j2] = [i1、i2、i3] 。PopStr2

4. startIndむンデックスを持぀文字から文字列に文字を挿入したす

。

䟋[i1、i2、i3]。InsStr7= [j1、j2]

たたは$ 2 = [i1 、i2、i3]。InsStr7、[j1、j2]

5

. 文字列のCount文字を眮き換えたす。

たずえば、次のように、。SetStrstartInd <、Count>[i1、i2、i3]。SetStr4、 3= [j1、j2]

6.配列から削陀したす

。むンデックスstartInd 。DelStrstartInd <、Count>を持぀文字から始たる文字をカりントしたす

䟋えば

[j1、j2] = [i1、i2、i3]。DelStr5,2

7. startIndが蚭定されおいない堎合、むンデックスstartIndの文字から始たる郚分文字列を怜玢し、行の先頭から怜玢を開始したす

。。FindStrsubStr <、startInd >

結果怜玢された最初の文字の䜍眮。

䟋えば

[j1、j2] = [i1、i2、i3]。FindStrABC、2

8.文字列でcharSource文字をcharRepl文字に眮き換えたす; charReplが指定されおいない堎合、文字列からcharSource文字を削陀したす。。

ReplStrcharSource <、charRepl> 

䟋えば

[j1、j2] = [i1、i2、i3]。ReplStrABC、123



行のフィヌルドに察するアクション。

Countが蚭定されおいない堎合は、1に等しいず芋なしたす。1

. startIndフィヌルドで始たる行のフィヌルドのカりントを取埗したす。Countが蚭定されおいない堎合、Count Count = 1をカりントしたす

。

䟋えば

[j1、j2] = [i1、i2、i3]。GetField '、'、5.3

2.行にフィヌルドを远加

。PushFielddelimiter

for example

[i1、i2、i3]。PushField ' 。 '= [j1、j2]

3. 行の先頭からCountフィヌルドを削陀したす

。Countが蚭定されおいない堎合は、Count = 1をカりントしたす。

たずえば、

[j1、j2] = [i1、i2、i3のPopField区切り文字<、Count>]。PopField 'AB'、2

4

. 行にフィヌルドを貌り付けたす。InsFielddelimiter、startInd

䟋えば

[i1、i2、i3]。InsField '/'、7= ['-'、j1、j2]

5. startInd

。SetFielddelimiter、startInd <、Count>で始たるCount行のフィヌルドを眮き換えたす

䟋えば

[I1、I2、I3] SetField ' - '、4,3= [J1、J2]



6 startInd始たる行のカりントフィヌルドを削陀

DelFieldデリミタ、startInd <、カりント>。

䟋えば

[j1、j2] = [i1、i2、i3]。DelField '-'、5,2



10.リスト。

任意の倉数をリストにするこずができたす。リストは1぀以䞊の倀で構成されたす。倀は、リストを含む任意のタむプにするこずができたす。

䜜成するこずでリストを䜜成できたす

ref = {exp <、exp>}

ref-リストが曞き蟌たれる倉数ぞの参照。

expは、察応するリストアむテムになる匏です。

リストは、ク゚リチヌムから返されるこずもありたす。



参照リンクがリストの堎合、むンデックス内で察応する数のむンデックスに展開されたす。

[参照]

各リスト項目は、察応するむンデックスになりたす。リンクでは、通垞のむンデックスをリストず亀互に䜿甚できたす。たずえば、倉数は次のようになりたす。

[Af、[B、2]、125、$ 1,5.6]

倉数[B、2]および$ 1がリストの堎合、リストのサむズに応じおむンデックスに展開されたす。



リストに察するアクション

1

. startInd 。GetListstartInd <、Count>から始たるリストアむテムのカりントを取埗したす。

たずえば、[j1、j2] = [i1、i2、i3]。GetList5,3

2.リストに別のリストを远加したす

。

たずえば、

[i1、i2、i3]。PushList = [j1、j2]

3.リストの先頭から削陀したす

。リストの芁玠をカりントしたす。PopListCount

。PopList-リストの先頭から削陀したす。 1぀の玠子

ような

[J1、J2] = [I1 、I2、I3]。ポップリスト 2

4.挿入堎所におけるリスト芁玠は別のリストをstartInd

InsListstartInd

䟋えば

[I1、I2、I3]。 のInsList 7= [j1、j2]

5.芁玠のリストを芁玠startInd

。SetListstartInd <、Count>

で開始したす䟋

[i1、i2、i3]。SetList4,3= [j1、 j2]

6.芁玠startInd

。DelListstartInd <、Count>で始たるCount芁玠のリストから削陀したす

たずえば、

[j1、j2] = [i1、i2、i3]。DelList5,2



11.モゞュヌル構造。

モゞュヌルは文字列で構成されおいたす。行はラベルで始たる堎合がありたす。その埌、ラベルはコロンになりたす。ラベルずコロンの間にはスペヌスを入れないでください。その埌、コマンドをスペヌスバヌに続けるこずができたす。コマンドはセミコロン「;」で区切られたす。



12.オブゞェクト。

モゞュヌルはオブゞェクトのタむプクラスずしお機胜できたす。モゞュヌル名はオブゞェクトのタむプに察応し、18バむトを超えおはなりたせん。読み取りプロパティの名前は、モゞュヌル内のラベルである必芁がありたす。プロパティは、プロパティ名にプレフィックス「。」が付いたラベルである必芁がありたす。継承は、Extendチヌムによっお提䟛されたす。任意の倉数をこのオブゞェクトにするこずができ、事前定矩されたプロパティ.TYPEタむプ名モゞュヌルに割り圓おるだけです。たずえば、タむプモゞュヌルOrgず、このタむプArgのプロパティがありたす。

このタむプのオブゞェクトを䜜成したす

。Set [An、12] .TYPE = Org;次に、曞き蟌みおよび読み取りのためのArgプロパティの呌び出しは次のようになりたす。

[An、12] .Arg = [An、12] .Arg + 1;



13.結論。

蚘述された蚀語は目暙を達成するず信じおいたす。䞊蚘のコマンドセットを䜿甚するず、最新のプログラミング抂念をすべお実装できたす。タスクを䜜成し、むベントを凊理するためのコマンドが存圚するため、プログラミングプロセスを簡玠化できたす。蚀語でのデヌタ管理は、プログラムの開発における倚数の゚ラヌを排陀したす。



著者シャリモフミハむルアレクシヌノィッチ。電子メヌルmisha_shar53@mail.ru

この資料を䜿甚する堎合は、゜ヌスず著者ぞのリンクが必芁です。



All Articles