
×òî òàêîå Expression 2
Expression 2 - ýòî ÿçûê ïðîãðàììèðîâàíèÿ, ïîñòàâëÿåìûé ñ àääîíîì Wiremod, êîòîðûé ïîçâîëÿåò ìàíèïóëèðîâàòü îáúåêòàìè, ñîçäàâàòü ãîëîãðàììû, ïðîâîäèòü ìàòåìàòè÷åñêèå âû÷èñëåíèÿ è òîìó ïîäîáíîå. Êàê è êàæäûé ÿçûê ïðîãðàììèðîâàíèÿ, îí èìååò ñâîè ôóíêöèè, êîíñòðóêöèè è ïðàâèëà.  êîìïèëÿòîðå ÿçûêà ïðèñóòñòâóåò E2Helper, âàø âåðíûé ïîìîùíèê, ïîçâîëÿþùèé âàì íàéòè íåîáõîäèìóþ âàì ôóíêöèþ è óçíàòü, ÷òî ýòà ôóíêöèÿ äåëàåò, âîçâðàùàåò è êàêèå àðãóìåíòû ïðèíèìàåò. Ïðàâäà, îí íà àíãëèéñêîì ÿçûêå, òàê ÷òî ó íåêîòîðûõ ìîãóò âîçíèêíóòü òðóäíîñòè.
Îêíî êîìïèëÿòîðà
Äëÿ íà÷àëà ðàññìîòðèì íàøå îêíî êîìïèëÿòîðà. ×òîáû îòêðûòü åãî, íåîáõîäèìî îòêðûòü Q-ìåíþ, ñïðàâà ñâåðõó âûáðàòü âêëàäêó Wiremod (êîíå÷íî æå, íàäî ñêà÷àòü Wiremod, íî ðàç âû ÷èòàåòå ýòî ðóêîâîäñòâî, ÿ ïîëàãàþ, ÷òî îí ó âàñ óæå óñòàíîâëåí), äàëåå íàéòè ïàïêó "Chips, Gates", íàæàòü Expression 2 (äàëåå Expression 2 ÿ áóäó ïèñàòü êàê E2) è ïîòîì ñëåâà â îòêðûâøåìñÿ îêíå íàæàòü "New Expression".Èòàê, ïåðåä íàìè ïîÿâèëîñü âîò òàêîå îêíî:
Äèðåêòèâû
Ñîçäàäèì íîâûé ÷èï. Ïåðåä íàìè ïîÿâëÿþòñÿ 5 ñòðîê, íà÷èíàþùèõñÿ ñ @ (îíè íàçûâàþòñÿ äèðåêòèâàìè), è êîììåíòàðèè (çàêëþ÷åíû ìåæäó #[...]#):
Îïåðàòîðû
| Ñèíòàêñèñ | Ïðèìåð | Îïèñàíèå |
|---|---|---|
| # | #This is a comment | Ýòî îäíîñòðî÷íûé êîììåíòàðèé. Âñå, ÷òî íàõîäèòñÿ âíóòðè íåãî, íå áóäåò îáðàáàòûâàòüñÿ êîìïèëÿòîðîì. |
| #[Comment]# | Ýòî ìíîãîñòðî÷íûé êîììåíòàðèé. Ðàáîòàåò àíàëîãè÷íî ïðåäûäóùåìó çà èñêëþ÷åíèåì òîãî, ÷òî â íåãî ìîæíî çàêëþ÷èòü êàê ìíîæåñòâî ñòðîê, òàê è ÷àñòü îäíîé ñòðîêè. | |
| if () {} | if(A){B=C} | Âûïîëíÿåò äåéñòâèÿ â ôèãóðíûõ ñêîáêàõ, åñëè ðåçóëüòàò âûïîëíåíèÿ ôóíêöèè A - èñòèíà |
| else {} | else{A=B} | Ýòîé êîíñòðóêöèè äîëæíà ïðåäøåñòâîâàòü if(){} èëè elseif(){}. Âûïîëíÿåò äåéñòâèÿ â ôèãóðíûõ ñêîáêàõ, åñëè íå áûëî âûïîëíåíî óñëîâèå ïðåäûäóùåé êîíñòðóêöèè |
| elseif () {} | elseif (A) {B=C} | Ñìåñü ïðåäûäóùèõ äâóõ êîíñòðóêöèé. Ýòîé êîíñòðóêöèè òàêæå äîëæíà ïðåäøåñòâîâàòü if(){} èëè elseif(){}. Âûïîëíÿåò äåéñòâèÿ â ôèãóðíûõ ñêîáêàõ, åñëè íå áûëî âûïîëíåíî óñëîâèå ïðåäûäóùåé êîíñòðóêöèè è åñëè áûëî âûïîëíåíî óñëîâèå â êðóãëûõ ñêîáêàõ |
| ( ? : ) | D = A ? B : C | Åñëè A - èñòèíà, òî D=B, èíà÷å D=C |
| & | if (A & B) {C = 1} | Âûäàåò çíà÷åíèå èñòèíà, åñëè áûëè âûïîëíåíû îáà óñëîâèÿ, ñâÿçàííûõ îïåðàòîðîì &, èíà÷å âûäàåò çíà÷åíèå ëîæü |
| | | if (A | B) {C = 1} | Âûäàåò çíà÷åíèå èñòèíà, åñëè âûïîëíåíî õîòÿ áû îäíî èç óñëîâèé, ñâÿçàííûõ îïåðàòîðîì |, èíà÷à âûäàåò çíà÷åíèå ëîæü |
| == | if (A == B) {C = 1} | Îïåðàòîð ðàâåíñòâà (íå ïóòàéòå ñ îïåðàòîðîì ïðèñâàèâàíèÿ). Âûäàåò çíà÷åíèå èñòèíà, åñëè çíà÷åíèÿ ïî îáå ñòîðîíû îò îïåðàòîðà ðàâíû |
| >= | if (A >= B) {C = 1} | Âûäàåò çíà÷åíèå èñòèíà, åñëè çíà÷åíèå ñëåâà áîëüøå èëè ðàâíî çíà÷åíèþ ñïðàâà |
| <= | if (A <= B) {C = 1} | Âûäàåò çíà÷åíèå èñòèíà, åñëè çíà÷åíèå ñëåâà ìåíüøå èëè ðàâíî çíà÷åíèþ ñïðàâà |
| > | if (A > B) {C = 1} | Âûäàåò çíà÷åíèå èñòèíà, åñëè çíà÷åíèå ñëåâà áîëüøå çíà÷åíèÿ ñïðàâà |
| < | if (A < B) {C = 1} | Âûäàåò çíà÷åíèå èñòèíà, åñëè çíà÷åíèå ñëåâà ìåíüøå çíà÷åíèÿ ñïðàâà |
| != | if (A != B) {C = 1} | Âûäàåò çíà÷åíèå èñòèíà, åñëè çíà÷åíèå ñëåâà íå ðàâíî çíà÷åíèþ ñïðàâà |
| ! | if (!A) {B = 1} | Íåîáõîäèìî íàëè÷èå óñëîâèÿ. Èíâåðòèðóåò ðåçóëüòàò âûïîëíåíèÿ óñëîâèÿ |
| ++ | if (!A) {B++} | Èíêðåìåíò. Ïðèáàâëÿåò 1 ê ïåðåìåííîé. Ýêâèâàëåíòíàÿ êîíñòðóêöèÿ B=B+1. Ïðîòèâîïîëîæíàÿ êîíñòðóêöèÿ --. Âû÷èòàåò 1 èç ïåðåìåííîé |
| ~ | if (~Button & Button) {DO stuff} | Âûäàåò 1, åñëè òåêóùåå ñðàáàòûâàíèå áûëî âûçâàíî èçìåíåíèåì çíà÷åíèÿ ïåðåìåííîé |
| $ | Opitch = Pitch + $Pitch * 3 | Âûäàåò ðàçíîñòü çíà÷åíèé ïåðåìåííîé ìåæäó òåêóùèì è ïðåäûäóùèì ñðàáàòûâàíèåì ÷èïà. |
| -> | ->Input or ->Output | Åñëè èñïîëüçóåòñÿ ñ âõîäíîé ïåðåìåííîé, òî âûäàåò 1, åñëè ýòîò âõîä ñîåäèíåí ñ ÷åì-íèáóäü, åñëè èñïîëüçóåòñÿ ñ âûõîäíîé ïåðåìåííîé, òî ïîêàçûâàåò êîëè÷åñòâî âõîäîâ, ê êîòîðûì ïîäêëþ÷åí äàííûé âûõîä |
| #ifdef | #ifdef entity:setAlpha(number) | Ïðîâåðÿåò, äîñòóïíà ëè êîìàíäà íà ñåðâåðå |
| #else | #else | Åñëè ôóíêöèþ íåâîçìîæíî âûçâàòü íà ñåðâåðå, òî âûïîëíÿåòñÿ êîä ïîñëå #else |
| #endif | #endif | Çàêðûâàåò áëîê #ifdef |
Öèêëû
| Ñèíòàêñèñ | Ïðèìåð | Îïèñàíèå |
|---|---|---|
| while () {} | while (A) {B++} | Äåéñòâèÿ, îïèñàííûå â ôèãóðíûõ ñêîáêàõ áóäóò ïîâòîðÿòüñÿ äî òåõ ïîð, ïîêà âûïîëíÿåòñÿ óñëîâèå â êðóãëûõ ñêîáêàõ |
| for () {} | for (I = A, B[, C]) {} | Äåéñòâèÿ â ôèãóðíûõ ñêîáêàõ áóäóò âûïîëíÿòüñÿ äî òåõ ïîð, ïîêà I, êîòîðàÿ èçíà÷àëüíî èìååò çíà÷åíèå À, íå áóäåò ðàâíî B, ïðè÷åì ïðè êàæäîì âûïîëíåíèè I áóäåò óâåëè÷èâàòüñÿ èëè óìåíüøàòüñÿ íà çíà÷åíèå C. Åñëè C íåò, òî ïåðåìåííàÿ I óâåëè÷èâàåòñÿ íà 1 ïðè êàæäîé èòåðàöèè |
| foreach () {} | foreach(K,V:type=Table) {} | Ïðîõîäèò ïî âñåì ýëåìåíòàì òèïà type â ìàññèâå/òàáëèöå Table. Ê - ýòî èíäåêñ ïåðåìåííîé â Table, à V - ýòî íåïîñðåäñòâåííî ñàì ýëåìåíò. Àíàëîãè÷íî for(){} áóäåò âûïîëíÿòü äåéñòâèÿ âíóòðè ôèãóðíûõ ñêîáîê, ïîêà íå ïðîéäåò ïî âñåì ýëåìåíòàì Table. Åñëè âî âðåìÿ ïðîõîæäåíèÿ äàííîãî öèêëà áûëè ñîçäàíû íîâûå ïåðåìåííûå â Table, öèêë èõ ïðîèãíîðèðóåò |
| continue | if (A) {continue} | Ìîæåò áûòü èñïîëüçîâàíà òîëüêî âíóòðè öèêëà. Ïðè íàëè÷èè òàêîé êîíñòðóêöèè, öèêë ìãíîâåííî ïåðåéäåò íà ñëåäóþùóþ èòåðàöèþ, èãíîðèðóÿ ïîñëåäóþùèå ôóíêöèè |
| break | if (A) {break} | Ìîæåò áûòü èñïîëüçîâàíà òîëüêî âíóòðè öèêëà. Ïðè íàëè÷èè òàêîé êîíñòðóêöèè öèêë ìãíîâåííî çàâåðøèòñÿ, è íà÷íåòñÿ âûïîëíåíèå ïîñëåäóþùèõ îïåðàöèé |
Òèïû äàííûõ è ïåðåìåííûå
Âñå ïåðåìåííûå äîëæíû íà÷èíàòüñÿ ñ áîëüøîé áóêâû. Íàïðèìåð:
@persist variable
ðàáîòàòü íå áóäåò, à @persist Variable
áóäåò.Êîíñòàíò êàê îòäåëüíûé òèï â ÿçûêå íå ñóùåñòâóåò. Åñëè õîòèòå èñïîëüçîâàòü êîíñòàíòó, ïðîñòî íå èçìåíÿéòå åå â õîäå âûïîëíåíèÿ êîäà. ÿçûêå ïðèñóòñòâóåò 13 òèïîâ äàííûõ, íåêîòîðûå èç êîòîðûõ ïîäðàçäåëÿþòñÿ åùå íà íåñêîëüêî ïîäòèïîâ:- ×èñëî (Number)
- Âåêòîð (Vector). Èìååò äâóìåðíûé, òðåõìåðíûé è ÷åòûðåõìåðíûé ïîäòèïû.
- Óãîë (Angle)
- Ñòðîêà (String)
- Ñóùíîñòü (Entity)
- Ìàññèâ (Array)
- Òàáëèöà (Table)
- Ðýéíäæåð - èçìåðèòåëü ðàññòîÿíèÿ (Ranger Data)
- Êîñòü (Bone)
- Ìàòðèöà (Matrix). Èìååò ïîäòèïû 2õ2, 3õ3, 4õ4.
- Âàéðëèíê - ñëîæíàÿ ïðîâîäíàÿ ñâÿçü (Wirelink)
- Êîìïëåêñíîå ÷èñëî (Complex Number)
- Êâàòåðíèîí (Quaternion)
[Vector1 Vector2 Vector3]:vector
Ýòî ïîçâîëèòü âàì ñýêîíîìèòü ìåñòî è âðåìÿ.Òàêæå åñòü îñîáûé òèï äàííûõ: variable. Ïåðåìåííàÿ ýòîãî òèïà ìîæåò ïðèíèìàòü çíà÷åíèÿ ëþáîãî òèïà, òî åñòü, íàïðèìåð, ñåé÷àñ îíà ÷èñëî, à ÷åðåç äâå ìèíóòû îíà óæå âåêòîð. Çàêëþ÷åíèå
Áóäó ðàä âàøèì êîììåíòàðèÿì. Åñëè ïîÿâèëèñü âîïðîñû, ñìåëî çàäàâàéòå èõ çäåñü èëè ïèøèòå â ëè÷êó.Ïèøèòå òàêæå, ÷òî õîòåëè áû åùå óâèäåòü â ýòîì ðóêîâîäñòâå (èëè â ïîñëåäóþùèõ). Óêàçûâàéòå íà ìîè îøèáêè è íåäî÷åòû, åñëè îíè ïðèñóòñòâóþò.Óäà÷íîãî èçó÷åíèÿ Expression 2 :)