الإنجليزيةالفرنسيةالإسبانية

OnWorks فافيكون

nickle - الإنترنت في السحابة

قم بتشغيل Nickle في موفر الاستضافة المجاني OnWorks عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو الأمر الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


نيكل - لغة حاسبة مكتبية

موجز


nickle [--help | --usage] [-f file] [-l library] [-e expr] [script] [-] [arg ...]

الوصف


نيكل هي لغة حاسبة مكتبية تتمتع بقدرات برمجة وبرامج نصية قوية.
تدعم Nickle مجموعة متنوعة من أنواع البيانات ، وخاصة الأعداد الصحيحة ذات الدقة العشوائية ،
الأسباب المنطقية والحقائق غير الدقيقة. تشبه لغة الإدخال بشكل غامض C. بعض الأشياء في C
التي لا تترجم بسهولة مختلفة ، فقد تم إجراء بعض خيارات التصميم
بشكل مختلف ، وبعض الميزات مفقودة ببساطة.

الاستعمال


يتم التعامل مع وسيطة بدون علامة على أنها برنامج نصي من Nickle ، وتحل محل الإدخال القياسي. أي
يتم وضع الوسيطات المتبقية التي تتبع النص في مصفوفة سلسلة سلسلة Nickle argv لـ
التفتيش البرنامجي. عند الاستدعاء بدون تعبير أو وسيطة نصية ، Nickle
يقرأ من الإدخال القياسي ، ويكتب إلى الإخراج القياسي.

الخيارات هي كما يلي:

- تعليمات ، - استخدام
اطبع رسالة تعليمات / استخدام واخرج. هذه ميزة مضمنة في Nickle's
وحدة ParseArgs ، وبالتالي ستكون أيضًا صحيحة مع برامج Nickle النصية التي تستخدم هذا
مكتبة.

-f ، - ملف ملف
حمل ملف في Nickle قبل البدء في التنفيذ.

-l، - مكتبة مكتبة
حمل مكتبة في Nickle قبل البدء في التنفيذ. انظر أدناه للحصول على وصف
من مرفق المكتبة.

-e ، - expr على سبيل المثال
تقييم على سبيل المثال قبل بدء التنفيذ.

-- قم بإنهاء تحليل الوسائط ومرر الباقي غير المقيَّم إلى أرجف.

بناء الجملة


لجعل لغة الإدخال أكثر فائدة في الإعداد التفاعلي ، خط جديد ينتهي فقط
عبارات في أوقات `` معقولة ''. خط جديد ينهي إما تعبيرات أو مفردة
العبارات التي يكتبها المستخدم (باستثناء بعض العبارات التي تتطلب
lookahead: لا سيما if () و twixt () ، والتي تحتوي على جزء آخر اختياري). داخل المجمع
عبارات أو تعريفات وظيفية ، فقط أ ; ينهي البيانات. هذا النهج
مناسب ولا يبدو أنه يسبب مشاكل في الاستخدام العادي.

بناء جملة برامج Nickle على النحو التالي. في هذا الوصف ، الاسم يدل على أي
تسلسل من الأحرف والأرقام و _ الأحرف لا يبدأ برقم ؛ E يدل على أي
تعبير؛ S يدل على أي بيان ؛ و T يدل على أي نوع. بناء الجملة X ، X ، ... ، X. ترمز
علامة X واحدة أو أكثر مفصولة بفواصل ، ما لم يُذكر خلاف ذلك.

تعليقات:

يتم تضمين تعليقات نمط C في / * و * / ، ويتم الإشارة إلى التعليقات على غرار shell بواسطة a
بادئة # في بداية السطر.

معاملات:

عدد حقيقي
يمكن أن تشمل الأس ، لا تحتاج إلى تضمين علامة عشرية أو علامة. سيتم التعامل معها على أنها
المبررات الدقيقة. إذا احتوى الجزء العشري اللاحق على قوس متعرج افتتاحي ، فإن ملف
يتم تجاهل الدعامة بصمت ؛ إذا كان يحتوي على جزء لاحق بين قوسين ، فهو كذلك
يتم التعامل معها كرقم عشري متكرر. ثوابت الفاصلة العائمة حاليًا
يتم تمثيلها داخليًا كمبررات منطقية: للثوابت العائمة بدقة معينة
(وأسس الدقة اللانهائية) ، استخدم الدالة المضمنة غير الدقيقة ()
هو موضح أدناه.

رقم ثماني
ابدأ بالرقم 0 (على سبيل المثال ، 014 هو نفس الرقم 12).

رقم سداسي عشري
ابدأ بـ "0x" (على سبيل المثال ، 0x1a هي نفسها 26).

سلسلة كما في C. ثوابت السلسلة محاطة بعلامات اقتباس مزدوجة. أحرف مائلة للخلف
(بما في ذلك علامات الاقتباس المزدوجة) تعني نفسها ، باستثناء "\ n" لتقف على سطر جديد ،
"\ r" لعودة سطر ، "\ b" لمسافة backspace ، "\ t" لعلامة التبويب و "\ f" للتغذية النموذجية.

اسم مرجع متغير.

الاسم () الاسم (E ، E ، ... ، E)
استدعاء دالة مع صفر أو أكثر من الوسيطات. الوظائف عبارة عن اتصال كامل بالقيمة:
يتم نسخ المصفوفات والهياكل بدلاً من الرجوع إليها كما في C.

اسم الوصف T اسم = القيمة
تعابير التعريف: يتم توفير اسم جديد بقيمة
التعريف هو قيمة المُهيئ في النموذج الثاني ، وغير مهيأ
في الشكل الأول. وصف الوصف ليس اختياريًا: فهو يتكون من أي
مزيج من الرؤية أو فئة التخزين أو النوع (بهذا الترتيب). انظر المؤهلين
على الفور أدناه للحصول على وصف لهذه المؤهلات. قيمة منظمة
التعبير ممكن أيضًا: انظر القيم أدناه.

بالإضافة إلى القدرة على تهيئة تعريف بقيمة Nickle ، نمط C.
يُسمح أيضًا بتعريفات المصفوفة والهيكل والاتحاد: على سبيل المثال ، ملف
متابعيك
int [*، *] name = {{0,1،2,3}، {XNUMX،XNUMX}}
int [2,2،0] name = {{XNUMX ...} ...}
مسموح بها مع الدلالات الواضحة. هذا هو السياق الذي فيه
الأبعاد في نوع ما قد تكون تعبيرات: انظر مناقشة أنواع المصفوفات أعلاه.
انظر مناقشة قيم المصفوفة والبنية للمصفوفة والبنية
بناء جملة المُهيئ.

المؤهلين


قد يكون الإعلان أو التعريف مؤهلاً ، كما في C ، للإشارة إلى تفاصيل البرنامج
سلوك. على عكس C ، فإن هذه المؤهلات ، رغم أنها اختيارية ، يجب أن تظهر بالترتيب المحدد.

الرؤية:

عام أي تعبير تعريف (تعريف الوظيفة ، تعريف المتغير ، النوع
تعريف) يمكن أن يكون مؤهلًا للجمهور للإشارة إلى أنه يتم تعريف الاسم
يجب أن يكون مرئيًا خارج مساحة الاسم الحالية ، ويجب أن يكون تلقائيًا
مستورد. انظر مساحات الأسماء أدناه لمزيد من المعلومات.

محمي
أي تعبير تعريف (تعريف الوظيفة ، تعريف المتغير ، النوع
تعريف) يمكن أن يكون مؤهلًا بالحماية للإشارة إلى أنه يتم تعريف الاسم
يجب أن يكون مرئيًا خارج نطاق الاسم الحالي ، ولكن لا يجب إتاحته
عن طريق إقرارات الاستيراد. انظر مساحات الأسماء أدناه لمزيد من المعلومات.

لايف تايم

auto الكائن التلقائي محلي لكتلة معينة: عمره على الأقل
عمر تلك الكتلة. ستتم إعادة تهيئة كائن تلقائي به مُهيئ
في كل مرة يتم تقييمها. هذا هو العمر الافتراضي للكائنات المحلية.

ثابت الكائن الثابت محلي لتعريف دالة معينة: عمره عند
أقل عمر لهذا التعريف. سيتم إنشاء كائن ثابت جديد لكل منهما
الوقت الذي يتم فيه تقييم تعريف وظيفة التضمين.

في Nickle ، يجب أن تتعلق الكلمة الأساسية static بمدى الحياة فقط (مثل استخدام static
داخل وظائف C) ، وليس مع الرؤية (التي يتم التعامل معها بواسطة مؤهلات منفصلة
كما هو موضح أعلاه ، ليس مثل استخدام ثابت في النطاق العالمي في C).

عالمي الكائن العالمي هو عالمي للبرنامج بأكمله: عمره هو عمر
البرنامج. سيتم إنشاء كائن عام وتهيئته عند تعريفه
شوهد لأول مرة. هذا هو العمر الافتراضي للكائنات العالمية.

لا يمكن التمييز بين العمر الثابت والعمر العالمي في Nickle في لغة C ،
لأن وظائف C ليست كائنات من الدرجة الأولى ذات نطاق متداخل. عند اتخاذ القرار
التي يجب استخدامها في برنامج Nickle ، فكر فيما يجب أن يحدث إذا كان التعريف كذلك
إعادة التقييم.

OPERATORS


فيما يلي عوامل تشغيل Nickle الأساسية ، مجمعة بترتيب تنازلي الأسبقية:

A [E، E، ...، E]
يشير إلى العنصر E من تعبير المصفوفة A ، أو E1'th / E2'th / إلخ
عنصر مصفوفة متعددة الأبعاد. كلا صفيفتي المصفوفتين ala C و
المصفوفات متعددة الأبعاد علاء NAWK ممكنة.

هيكل
مرجع الهيكل.

الهيكل-> العلامة
مؤشر البنية dereference ala C.

=============

++ - زيادة / إنقاص أحادي. قد يكون إما postfix أو بادئة.

- أحادي ينفي

! هـ ـ النفي المنطقي.

ه! عاملي. يتطلب وسيطة عدد صحيح غير سالب.

* مؤشر E dereference.

& E مرجع البناء.

=============

(U) E أنشئ قيمة من نوع الاتحاد بالعلامة U والقيمة E.

=============

** الأس. قد يكون كلا المعاملين كسريين. يجب ألا يكون المعامل الأيسر-
سالب ما لم يكن المعامل الأيمن عددًا صحيحًا. نوع النتيجة هو نوع ملف
المعامل الأيسر إذا كان المعامل الأيمن عددًا صحيحًا ، وحقيقيًا بخلاف ذلك.

هذه هي الميزة الوحيدة المعروفة للنوع غير السليم في Nickle: تعبير مثل 2 ** -3
سيكون بشكل ثابت من نوع عدد صحيح ، ولكن ديناميكيًا سيولد عددًا منطقيًا
نتيجة. قد يتسبب هذا في حدوث خطأ في نوع وقت التشغيل لاحقًا: ضع في اعتبارك
كثافة العمليات س = 2 ** -3 ؛

=============

* / //٪
الأوقات ، والقسمة ، والعدد الصحيح ، والباقي. المعامل الأيمن من الثلاثة الأخيرة
يجب أن تكون العوامل غير صفرية. سيكون نوع نتيجة عامل القسمة دائمًا
على الأقل منطقيًا: سيكون نوع نتيجة عامل القسمة الصحيحة دائمًا
int. هذا خروج ملحوظ عن C ، حيث يتم ضمنا القسمة الصحيحة من قبل
معاملات عدد صحيح. يتم تعريف القسمة الصحيحة بواسطة
x // y == y> 0؟ الأرضية (س / ص): سقف (س / ص)
الباقي دائمًا غير سالب ويتم تحديده بواسطة: بواسطة
x٪ y = x - (x // y) * y

=============

+ - الجمع والطرح.

=============

<< >> إزاحة لليسار واليمين على مستوى بت باستخدام معاملات عدد صحيح. تعمل المعاملات الصحيحة السلبية
كما هو متوقع. يتم تعريف هذه العوامل من خلال
س << ص = س * 2 ** ص
x >> y = x // 2 ** y
هناك طريقة أخرى للنظر إلى هذا وهي أن المعاملات اليسرى السالبة تعتبر في الداخل
تمثيل ثنائي مكمل لانهائي (أي ، علامة ممتدة إلى ما لا نهاية) ، مع
علامة التحول لليمين لتمديد معاملها الأيسر.

=============

<=> = <>
العوامل العلاقية.

=============

==! = عوامل المساواة.

=============
أخيرًا ، بترتيب تنازلي الأسبقية:

& Bitwise AND. تعتبر المعاملات السالبة في تكملة ثنائية لا نهائية
التمثيل (أي ، علامة ممتدة إلى ما لا نهاية).

^ Bitwise XOR. المعاملات السالبة كما في أحادي المعامل AND.

| أحادي المعامل OR. المعاملات السالبة كما في أحادي المعامل AND.

&& ماس كهربائى المنطقي.

|| دائرة قصر منطقي OR.

ه؟ ه: ه
التعبير الشرطي: إذا كان التعبير الأول صحيحًا منطقيًا ، فالقيمة هي الثانية
التعبير ، والثالث.

fork E إنشاء (وإرجاع) موضوع. انظر الموضوع أدناه للحصول على التفاصيل.

= + = - = * = / = // =٪ = ** = << = >> = ^ = & = | =
عوامل التعيين. يجب أن يكون الجانب الأيسر قابلاً للتخصيص. x = y معادل
إلى x = x y

E، E إرجاع تعبير اليد اليمنى.

أنواع


يشبه بناء جملة تعريف النوع لـ Nickle بشكل أقوى المتغير `` الأيسر '' لـ
بناء جملة Java من بناء جملة C. يتكون النوع بشكل أساسي من:

بولي عدد صحيح عقلاني استمرار سلسلة حقيقية باطلة
نوع أساسي من اللغة. نوع الفراغ قابل للاستخدام في بعض الأحيان فقط
سياقات ، ولا سيما وظيفة إرجاع. يتم تنفيذه حاليًا كنوع `` وحدة ''
ala ML ، وبالتالي لها سلوك مختلف قليلاً عن C. Type poly هو
النوع الفائق لجميع الأنواع الأخرى (على سبيل المثال ، يمكن استخدامه لمنع النوع الثابت
تدقيق) ، وهو النوع الافتراضي في معظم المواقف التي لا يلزم فيها ظهور النوع.

ملف إشارة الموضوع
أيضًا أنواع أساسية مدمجة ، ولكنها جزء لا يتجزأ من ADTs File و Thread: انظر أدناه.

المزيد من نحن؟ الأنواع:

نيكل يدعم البيانات متعددة الأشكال: عند تقييم العرض ، يتم اختيار نوع البيانات
تناسب النتيجة. يمكن كتابة أي كائن نيكل بشكل ثابت ، وفي هذه الحالة تكون الحدود
سيتم تمييز الانتهاكات على أنها أخطاء في وقت الترجمة. المتغيرات والوظائف متعددة الأشكال
لا تضع قيودًا على نوع البيانات المعين ؛ هذا هو النوع الافتراضي للجميع
شاء.

بولي هذا يصف اتحاد جميع أنواع البيانات. يمكن أن يحتوي متغير من هذا النوع على
أي قيمة بيانات.

عدد صحيح دقة التعسفي.

عقلاني
دقة الأرقام المنطقية التعسفية.

أرقام الفاصلة العائمة بدقة الأس التعسفية الحقيقية. كما لا تستطيع العديد من الحسابات
يتم تنفيذها كأرقام منطقية تمامًا ، إلا أن Nickle تنفذ بشكل غير دقيق
الحساب باستخدام التمثيل المستقل عن الآلة الخاص به للنقطة العائمة
أعداد. الدالة المضمنة غير الدقيقة (n) تولد عددًا حقيقيًا من 256 بت
الدقة من الرقم n ، بينما غير الدقيق (n ، p) يولد عددًا حقيقيًا مع p
بت من الدقة.

T [] مصفوفة من النوع T ذات بعد واحد أو أكثر. لا توجد أبعاد صفرية
صفائف في نيكل.

T [*] مصفوفة أحادية البعد من النوع T. على عكس C ، فإن أبعاد المصفوفة لا تكون أبدًا
جزء من نوعه في نيكل. علاوة على ذلك ، تعد المصفوفات والمؤشرات أنواعًا غير مرتبطة في
نيكل.

T [* ، * ، ... ، *]
مصفوفة ثنائية الأبعاد أو أكثر من النوع T. النجوم `` * '' ليست اختيارية. مثل
توضح الفقرات السابقة أن `` T [] '' ليست مصفوفة صفرية الأبعاد.

T [E، E، ...، E]
في سياقات التعريف ، يمكن إعطاء قيم صحيحة لكل بُعد من أبعاد المصفوفة
سياق. هذه مخصصة فقط لأغراض إنشاء القيمة ، وليست جزءًا من
يكتب. يتم تحديد نوع المصفوفة فقط من خلال النوع الأساسي وعدد الأبعاد
من المصفوفة.

T0 () T0 (T ، T ، ... ، T)
وظيفة إرجاع من النوع T0. تقبل الدالة 0 أو أكثر من الوسيطات.

T0 () T0 (T، T، ...، T )
دالة تقبل صفرًا أو أكثر من الوسائط المطلوبة ، بالإضافة إلى عدد عشوائي من
الحجج الاختيارية. التسلسل الثاني من ثلاث نقاط (علامة القطع) هو بناء الجملة ، وليس
metasyntax: راجع وصف دوال varargs للحصول على التفاصيل.

* مؤشر TA إلى موقع من النوع T. يعمل حساب المؤشر في Nickle فقط عليه
مؤشرات المصفوفات: يجب أن يكون المؤشر من النوع الصحيح ، وألا ينحرف أبدًا
خارج الحدود. قد يشير المؤشر إلى مكان ما أو أن يكون فارغًا (0). كما في
C ، أسبقية `` * '' أقل من أسبقية `` [] '' أو `` () '': استخدام
الأقواس حسب الحاجة.

هيكل {T name؛ اسم تي ؛ ...}
هيكل به حقول من الاسم والنوع المحدد. الأنواع T اختيارية: في
غيابهم ، نوع الحقل بولي.

الاتحاد {T name؛ اسم تي ؛ ...}
`` اتحاد مفكك '' لأنواع معينة. هذا يشبه نوع السجل المتغير
من Pascal أو نوع بيانات ML من نوع C union: الأسماء هي علامات لـ
نوع معين ، واحد منها ينطبق بالضبط على قيمة معينة في وقت معين.

(T) أقواس للتجميع.

تايبديف:

كما هو الحال في C ، يمكن إنشاء أسماء أنواع جديدة باستخدام عبارة typedef. الصيغة هي
اسم نوع T typedef ؛
حيث T هو نوع نيكل. يمكن استخدام اسم النوع الناتج في أي مكان يُتوقع فيه نوع ما.

القيم


قيم الأنواع الأساسية للنيكل كما هو متوقع. انظر بناء الجملة للثوابت أعلاه.
قد يتم حاليًا إنشاء قيم نوع الملف والإشارة والمتابعة فقط من خلال الاستدعاءات لـ
الدوال المضمنة: لا توجد ثوابت نيكل من هذه الأنواع.

كما هو مذكور في TYPES أعلاه ، لدى Nickle عدة أنواع من `` القيمة المنظمة '': المصفوفات ،
الوظائف والمؤشرات والهياكل والنقابات المفككة. كل هذه لديها بعض المشتركة
ملكيات. عند الإنشاء ، تكون جميع قيم المكونات غير مهيأة (ما لم يكن الأمر خلاف ذلك
محدد). ستؤدي محاولات استخدام قيمة غير مهيأة إلى وقت ترجمة
خطأ أو استثناء وقت التشغيل.

المصفوفات:

ينشئ [E] مصفوفة (قائمة على الصفر) تحتوي على عناصر E. يجب أن يكون الحرف E غير سالب.

[E] {V، V، ...، V}
ينشئ مصفوفة تحتوي على عناصر E ، مهيأة إلى Vs. إذا كان هناك القليل جدا
التهيئة ، ستظل العناصر المتبقية غير مهيأة.

[E] {V، V، ...، V. }
الحذف الثاني (ثلاث نقاط) هو بناء الجملة وليس بناء الجملة. قم بإنشاء مصفوفة باستخدام E.
عناصر. سيتم تهيئة العناصر الأولى في المصفوفة وفقًا لـ Vs ،
مع أي عناصر متبقية تتلقى نفس قيمة آخر V. بناء الجملة هذا
يمكن استخدامها بطريقة واضحة مع أي من مُهيئ المصفوفة أدناه.

[*] {V، V، ...، V}
ينشئ مصفوفة مهيأة مع عدد من العناصر بالضبط مثل المُهيئ. هناك
يجب أن يكون مُهيئًا واحدًا على الأقل.

[إيييي] [*،*،...،*]
ينشئ مصفوفات متعددة الأبعاد. لا يمكن خلط التعبيرات الصحيحة و "*": أ
أبعاد المصفوفة إما محددة أو غير محددة من قبل التعريف.
يمكن أيضًا إنشاء هذه المصفوفات مهيأة: انظر الفقرة التالية للمهيئ
بناء الجملة.

(T [E]) (T [E ، E ، ... ، E]) (T [E]) {E ، E ، ... ، E}

(T [E، E، ...، E]) {{E، ...}، ...، {E، ...}}
بناء جملة بديل لإنشاء مصفوفات من النوع T.
اختيارية. يجب أن يكون عدد المُهيئ أقل من المحدد أو مساويًا له
عدد العناصر في كل بعد. بالنسبة للصفائف متعددة الأبعاد ، يكون المجعد الإضافي
الأقواس لكل بُعد في المُهيئ مطلوبة ؛ هذا على عكس C ، حيث هم
اختيارية.

(T [*]) {E ، E ، ... ، E} (T [* ، * ، ... ، *]) {{E ، ...} ، ... ، {E ، ... }}
ينشئ مصفوفات من النوع T ، مع تحديد حجم كل بُعد بالحد الأقصى لعدد
التهيئة في أي مجموعة فرعية في هذا البعد.

المؤشرات:

0 المؤشر الفارغ ، في السياقات التي يتطلب فيها المؤشر.

& V & A [E ، E ، ... ، E] & S.N
يُنشئ مؤشرًا إلى متغير أو عنصر مصفوفة أو عضو بنية محدد. ال
سيكون نوع المؤشر * T ، حيث T هو نوع الكائن المشار إليه.

* P القيمة المشار إليها بالمؤشر P. يمكن عرضها أو تعديلها كما في C.

وظائف:

(T func () {S؛ S؛ ... S؛}) (T func (T name، T name، ... T name) {S؛ S؛ ... S؛})
تعبير الوظيفة: يشير إلى دالة من الصفر أو أكثر من المعلمات الرسمية مع
أنواع وأسماء معينة ، مع إرجاع نوع النتيجة المحدد. يتم إعطاء هيئة الوظيفة
من خلال قائمة البيان المضمنة ذات الدعامة المتعرجة. جميع الأنواع اختيارية ، وافتراضية إلى
بولي. كما هو مذكور أعلاه ، فإن الوظائف هي بدقة استدعاء حسب القيمة: على وجه الخصوص ، المصفوفات
ويتم نسخ الهياكل بدلاً من الرجوع إليها.

اسم دالة T (اسم T ، اسم T ، ... ، اسم T) {S ؛ S ؛ ... S ؛}
يحدد دالة من صفر أو أكثر من الوسيطات. السكر النحوي ل
T (T، T، ... T) name = (T func (T name، T name، ... T name) {S؛ S؛ ... S؛})؛

اسم وظيفة T (اسم T ، اسم T. )
علامة القطع هنا هي بناء الجملة ، وليس metasyntax: إذا كانت الوسيطة الرسمية الأخيرة لـ a
الوظيفة متبوعة بثلاث نقاط ، يمكن استدعاء الوظيفة بمزيد من القيم الفعلية
من الشكل. يتم حزم جميع القيم الفعلية `` الإضافية '' في مجموعة رسمية من
الاسم المعطى ، ويتم التحقق من نوع الكتابة مقابل النوع الاختياري T للوسيطة الأخيرة
(الافتراضي بولي).

الهياكل:

(هيكل {T name؛ T name؛ ... T name؛}) {name = E؛ الاسم = E ؛ ... الاسم = E ؛}
قم بإنشاء قيمة لنوع منظم. يتم تهيئة الحقول المسماة إلى المعطى
القيم ، مع عدم تهيئة الباقي. كما هو مبين ، يتم التهيئة حسب التسمية
بدلاً من الموضعية كما في C.

النقابات:

(الاتحاد {T name؛ T name؛ ... T name؛} .name) E.
قم بإنشاء قيمة لنوع الاتحاد المحدد والمتغير المقدم بواسطة الاسم والقيمة
التي قدمتها E. E يجب أن تكون متوافقة مع الاسم.

البيانات


يشبه بناء الجملة إلى حد بعيد تلك الموجودة في C.
أضيفت لدعم وظائف Nickle الإضافية.

ه ؛ يقيم التعبير.

{س ... س}
ينفذ البيانات المرفقة بالترتيب.

إذا (E) S.
أساسي شرطي.

إذا (E) S.
التنفيذ المشروط.

عدا ذلك ، يُسمح بـ S Else ، بالصيغة المعتادة والدلالات. على وجه الخصوص ، يرتبط أمر آخر
إلى أحدث ما ينطبق إذا () أو twixt ().

بينما (E) S.
نمط C أثناء الحلقة.

افعل S بينما (E) ؛
حلقة دو على غرار C.

لـ (opt-E ؛ opt-E ؛ opt-E) S
C- نمط للحلقة.

التبديل (E) {حالة E: حالة قائمة S E: قائمة S ... الافتراضي: قائمة S}
بيان حالة على غرار C. لا يشترط أن تكون تعبيرات الحالة ثابتة
التعبيرات ، ولكن قد تكون تعسفية. الحالة الأولى لتقييم التبديل
يتم أخذ الحجة ، وإلا فإن الافتراضي إذا كان موجودًا ، وإلا يتم تخطي جسم التبديل.

twixt (opt-E ؛ opt-E) S

twixt (opt-E ؛ opt-E) S آخر S
إذا تم تقييم تعبير الوسيطة الأولى إلى صحيح ، فإن جسم twixt () ثم
سيتم تقييم تعبير الوسيطة الثانية. إذا كان التعبير الوسيطة الأولى
بتقييم خطأ ، سيتم تنفيذ تعليمة else إذا كانت موجودة. وإلا فإن
سيتم تخطي جملة twixt () بالكامل.

تضمن تعليمة twixt () أن كل هذه الأحداث ستحدث في النطاق المحدد
ترتيب بغض النظر عن الطريقة التي يتم بها إدخال () twixt (من الخارج) أو الخروج ،
بما في ذلك الاستثناءات ، والاستمرارية ، والفواصل. (قارن مع جملة Java `` أخيرًا ''.)

جرب S ؛

جرب S catch name (T name، ...) {S؛ ...} ؛

جرب S catch name (T name، ...) {S؛ ...} ... ؛
قم بتنفيذ العبارة الأولى S. إذا ظهر استثناء أثناء التنفيذ ، و
الاسم يطابق الاسم في كتلة catch ، اربط المعلمات الرسمية في الصيد
منع المعلمات الفعلية للاستثناء ، وتنفيذ جسم المصيد
حاجز. قد يكون هناك العديد من كتل الصيد في كل محاولة. المصيد الصفري ، على الرغم من كونه قانونيًا ، هو
عديم الفائدة نسبيا. بعد الانتهاء من كتلة catch ، يستمر التنفيذ بعد ذلك
شرط المحاولة. كما هو الحال مع أي شيء آخر ، يرتبط المصيد بأحدث محاولة قابلة للتطبيق-
كتلة الصيد.

رفع الاسم (الاسم ، الاسم ، ... ، الاسم)
رفع الاستثناء المسمى مع صفر أو أكثر من الوسيطات.

؛ البيان الفارغ

استراحة؛ التوقف عن تنفيذ أقرب إحاطة لـ / do / while / switch / twixt statement.
سيتم تنفيذ تعبير الإجازة عند الخروج من تعليمة twixt.

تواصل.
تفرع مباشرة إلى الاختبار الشرطي لأقرب ضميمة لـ / do / while
بيان.

عودة E ؛
إرجاع القيمة E من أقرب دالة إحاطة.

مساحات الأسماء:

مثل Java و C ++ ، لدى Nickle فكرة مساحة الاسم، مجموعة من الأسماء مع جزئياً
الرؤية المحدودة. في Nickle ، يتم إنشاء مساحات الأسماء بامتداد مساحة الاسم أمر.

opt-P namespace N {S ...}
يضع جميع الأسماء المحددة في العبارات S في مساحة اسم تسمى N.
المؤهل الاختياري P قد يكون الكلمة المفتاحية public ، لكن احذر: هذا يشير فقط
أن الاسم N نفسه مرئي في مكان آخر في النطاق الحالي ، ولا يحتوي على أي شيء
للقيام برؤية العناصر داخل مساحة الاسم.

توسيع مساحة الاسم N {S ...}
أعد فتح مساحة الاسم المحددة N ، وقم بتوسيعها بالأسماء المحددة على أنها عامة في ملف
تصريحات معينة S.

الأسماء المعرفة داخل مساحة الاسم تكون غير مرئية خارج مساحة الاسم ما لم تكن كذلك
مؤهلون بالكلمة الرئيسية العامة. يمكن الإشارة إلى الأسماء العامة باستخدام أ
تدوين المسار:
مساحة الاسم :: مساحة الاسم :: ... :: مساحة الاسم :: الاسم
يشير إلى الاسم المحدد كما هو محدد داخل مجموعة معينة من مساحات الأسماء. ال
بناء جملة القولون المزدوج أمر مؤسف ، لأنه يختلف قليلاً في المعنى عنه في
C ++ ، ولكن تم أخذ جميع الرموز الجيدة ، ويعتقد أنها ميزة
يختلف فاصل مساحة الاسم بشكل نحوي عن عامل البنية. في
Java ، على سبيل المثال ، العبارة
name.name.name
غامض نحويًا: قد يكون الاسم الأوسط إما بنية أو ملف
مساحة الاسم.

استيراد N ؛
يجب أن يشير الاسم N إلى مساحة الاسم: جميع الأسماء العامة في مساحة الاسم هذه هي
أدخلت في النطاق الحالي (تحديد نطاق الأسماء المتضاربة).

البنايات


نيكل لديه مجموعة من الوظائف القياسية المضمنة. بعضها مكتوب بلغة C ،
لكن الكثير منها مكتوب في نيكل. عدة مجموعات من الوظائف لها مدمجة مرتبطة
أنواع البيانات: يجب عرض مساحات الأسماء الخاصة بهم ، مع أنواعها ، على أنها ADTs.

افضل مستوى بنى:

int printf (سلسلة fmt ، بولي أرجس ...)
Calls File :: fprintf (stdout، fmt، args ...) وإرجاع نتيجتها.

يحصل دالة السلسلة ()
يستدعي File :: fgets (stdin) ويعيد نتيجته.

مسح دالة السلسلة (سلسلة fmt ، * بولي أرغس ...)
Calls File :: vfscanf (stdin، fmt، args) وإرجاع نتيجتها.

دالة السلسلة vscanf (سلسلة fmt ، (* بولي) [*] args)
Calls File :: vfscanf (stdin، fmt، args) وإرجاع نتيجتها.

غير دقيق حقيقي (قيمة منطقية)
انظر مناقشة النوع الحقيقي أعلاه.

غير دقيق حقيقي (قيمة عقلانية ، int prec)
انظر مناقشة النوع الحقيقي أعلاه.

int string_to_integer (سلسلة)

int atoi (سلسلة)
الوسيطة s عبارة عن سلسلة رقمية ذات إشارة ، والنتيجة هي العدد الصحيح لها
يمثل. إذا كانت السلسلة s من الناحية التركيبية سداسية عشرية ، أو ثماني ، أو ثنائية ، أو
ثابت base-10 الصريح ، تعامل معه على هذا النحو.

int string_to_integer (سلسلة s ، قاعدة int)

int atoi (سلسلة s ، قاعدة int)
تعامل مع s كسلسلة من الأرقام في الأساس المحدد. القاعدة 0 تعمل بدون قاعدة
دعوى. خلاف ذلك ، يتم تجاهل بناء جملة المواصفات الأساسية في السلسلة.

int putchar (int c)
ضع الحرف المحدد على الإخراج القياسي باستخدام File :: putc (c، stdout) و
إرجاع نتيجتها.

int sleep (int msecs)
حاول تعليق مؤشر الترابط الحالي لمدة مللي ثانية على الأقل. العودة 1 يوم
العودة المبكرة ، و 0 خلاف ذلك.

خروج int (حالة int)
اخرج من Nickle برمز الحالة المحدد. لا تعيد أي شيء.

int خافت (بولي [*] أ)
بالنظر إلى مصفوفة أحادية البعد a ، تُرجع الدالة dim () عدد عناصر a.

int [] dims (poly [] a)
بالنظر إلى مصفوفة عشوائية a ، تُرجع dims () مصفوفة من الأعداد الصحيحة تعطي حجم
كل بعد من أ. وبالتالي ، فإن dim (dims (a)) هو عدد أبعاد a.

* مرجع بولي (بولي الخامس)
إعطاء قيمة عشوائية v ، `` مربع '' تلك القيمة في التخزين وإرجاع المؤشر إلى
المربع.

سلسلة عقلانية إلى حقيقية (سلسلة)

عقلاني (سلسلة)
قم بتحويل السلسلة الثابتة الحقيقية s إلى الرقم الحقيقي المرتبط بها.

عدد القيمة المطلقة (الحقيقي الخامس)
إرجاع القيمة المطلقة لـ v. سيتطابق نوع النتيجة المختار مع المعطى
سياق الكلام.

الطابق int (الحقيقي الخامس)
قم بإرجاع أكبر عدد صحيح أصغر من أو يساوي v. سيفشل هذا إذا كانت v حقيقية
والدقة منخفضة للغاية.

سقف int (حقيقي v)
قم بإرجاع أصغر عدد صحيح أكبر من أو يساوي v. سيفشل هذا إذا كانت v a
حقيقي ودقة منخفضة للغاية.

الأس int (حقيقي v)
إرجاع الأس الحقيقي غير الدقيق v.

الجزء العشري العقلاني (الحقيقي الخامس)
أعد الجزء العشري لـ v الحقيقي غير الدقيق ، باعتباره m منطقيًا مع 0 <= m <= 0.5.

البسط int (منطقي v)
أعد بسط العدد المنطقي v: على سبيل المثال ، إذا كانت v = n / d في صورة مختصرة ،
عودة

مقام int (عقلاني v)
أعد مقام العدد المنطقي v: على سبيل المثال ، إذا كانت v = n / d في صورة مختصرة ،
عودة د.

الدقة int (real v)
قم بإرجاع عدد بتات الدقة للجزء العشري من العدد الحقيقي غير الدقيق
v.

علامة int (حقيقي v)
قم بإرجاع -1 أو 1 لأن v سلبي أو غير سلبي.

int bit_width (int v)
أعد عدد البتات المطلوبة لتمثيل القيمة المطلقة (v) داخليًا.

int is_int (بولي v)
اكتب المسند.

int is_rational (بولي v)
المسندات من النوع الرقمي شاملة: على سبيل المثال ، is_rational(1) تسترجع 1.

int is_number (بولي v)
اكتب المسند.

int is_string (بولي الخامس)
اكتب المسند.

int is_file (بولي v)
اكتب المسند.

int is_thread (poly v)
اكتب المسند.

int is_semaphore (بولي الخامس)
اكتب المسند.

int is_continuation (بولي الخامس)
اكتب المسند.

int is_array (بولي v)
اكتب المسند.

int is_ref (بولي v)
اكتب المسند: يتحقق من نوع المؤشر. يمكن القول إن هذا خطأ ، وقد يكون كذلك
تغيير.

int is_struct (بولي الخامس)
اكتب المسند.

int is_func (بولي v)
اكتب المسند.

int is_void (بولي v)
اكتب المسند.

int gcd (int p، int q)
قم بإرجاع GCD لـ p و q. النتيجة دائما إيجابية.

int xor (int a، int b)
إرجاع أ ^ ب. هذا في الغالب هو استحواذ من قبل نيكل كان لديه مشغل xor.

بولي سيتجمب (استمرار * ج ، بولي رتفال)
تشكل العناصر الأولية setjmp () و longjmp () جنبًا إلى جنب مع نوع الاستمرارية an
ADT مفيدة لعمليات النقل العشوائية تقريبًا لتدفق التحكم. يتم تعيين setjmp () و
longjmp () مبني مثل تلك الموجودة في C ، باستثناء أن القيد الذي longjmp ()
دومًا يتم إزالة القفز لأعلى (!): استمرار حفظها عبر setjmp () لا يصبح أبدًا
غير صالح خلال عمر البرنامج.

يحفظ الأمر setjmp () المُدمج الموقع الحالي والسياق في استمراره
وسيطة المؤشر ، ثم تُرجع الوسيطة الثانية.

longjmp باطل (استمرار c ، poly retval)
لا يعود longjmp () المبني إلى موقع الاتصال مطلقًا ، ولكنه بدلاً من ذلك يعود من ملف
setjmp () التي أنشأت الاستمرارية ، بقيمة إرجاع تساوي الثانية
حجة longjmp ().

موجه سلسلة
المطالبة المطبوعة أثناء الاستخدام التفاعلي عندما تكون في المستوى الأعلى. الافتراضي ">". متى
انتظار بقية البيان أو التعبير ، وعند تصحيح الأخطاء ،
على التوالى. القيم الافتراضية هي ">" و "+" و "-".

موجه سلسلة 2
المطالبة المطبوعة أثناء الاستخدام التفاعلي عند انتظار باقي البيان
أو التعبير. الافتراضي "+".

موجه سلسلة 3
المطالبة المطبوعة أثناء الاستخدام التفاعلي عند تصحيح الأخطاء. تقصير "- ".

تنسيق السلسلة
تنسيق printf () لطباعة قيم المستوى الأعلى. الافتراضي "٪ g".

إصدار السلسلة
رقم إصدار تطبيق Nickle الجاري تنفيذه حاليًا.

بناء السلسلة
تاريخ بناء تطبيق Nickle الجاري تنفيذه حاليًا ، في النموذج
"yyyy / mm / dd" أو "؟" إذا كان تاريخ الإنشاء غير معروف لسبب ما.

ملف stdin
منضم إلى تيار الإدخال القياسي.

ملف stdout
منضم إلى تيار الإخراج القياسي.

ملف stderr
منضم إلى تيار الخطأ القياسي.

استثناءات:

تم الإعلان عن بعض الاستثناءات القياسية مسبقًا واستخدامها داخليًا بواسطة Nickle.

استثناء uninitialized_value (سلسلة الرسائل)
حاول استخدام قيمة غير مهيأة.

استثناء غير صالح_argument (سلسلة msg ، int arg ، poly val)
الوسيطة arg-th لدالة مضمنة لها قيمة غير صالحة.

استثناء readonly_box (سلسلة نصية ، بولي فال)
حاول تغيير قيمة كمية للقراءة فقط إلى val.

استثناء غير صالح_array_bounds (سلسلة msg ، بولي أ ، بولي أنا)
محاولة الوصول إلى المصفوفة a في الفهرس i خارج الحدود.

استثناء divide_by_zero (سلسلة msg ، عدد حقيقي ، دن حقيقي)
حاول قسمة num على den مع den == 0.

استثناء غير صالح_رابط عضو (سلسلة رسالة ، هيكل بولي ، اسم سلسلة)
محاولة الإشارة إلى اسم عضو بنية الكائن ، وهو غير موجود.

استثناء غير صالح_بينوب_قيمة (سلسلة msg ، بولي arg1 ، بولي arg2)
حاول تقييم عامل ثنائي باستخدام args arg1 و arg2 ، حيث يوجد عامل واحد على الأقل
من هذه القيم غير صالحة.

استثناء غير صالح_unop_values ​​(سلسلة رسائل ، بولي أرجل)
حاول تقييم عامل تشغيل أحادي مع وسيطة غير صالحة.

مدمج مساحات الأسماء:

الرياضيات يتم تنفيذ وظائف الرياضيات المتوفرة في مساحة اسم الرياضيات بطريقة
يقصد أن يكون متوافقًا مع مكتبة C. يرجى الرجوع إلى المناسب
كتيبات لمزيد من التفاصيل.

بي الحقيقي
ثابت غير دقيق يعطي قيمة محيط / نسبة قطر
ضع دائرة على الدقة الافتراضية البالغة 256 بت.

الحقيقية المحمية ه
ثابت غير دقيق يعطي قيمة قاعدة اللوغاريتمات الطبيعية لـ
دقة افتراضية 256 بت. نظرًا لأن البريد محمي ، يجب الرجوع إليه عبر
Math :: e ، وذلك لتجنب مشاكل استخدام الحرف الخامس من الأبجدية في
افضل مستوى.

الوظيفة الحقيقية sqrt (real v)
إرجاع الجذر التربيعي لـ v.

الوظيفة الحقيقية cbrt (real v)
إرجاع الجذر التكعيبي لـ v.

وظيفة حقيقية exp (حقيقي v)
إرجاع e ** v.

سجل الوظيفة الحقيقي (الحقيقي أ)
إرجاع v بحيث أن e ** v == a. يطرح استثناء غير صالح للوسيطة إذا كانت القيمة غير-
إيجابي.

وظيفة حقيقية log10 (حقيقي أ)
إرجاع v بحيث أن 10 ** v == a. يطرح استثناء غير صالح للوسيطة إذا كانت القيمة غير-
إيجابي.

وظيفة حقيقية log2 (حقيقي أ)
إرجاع v بحيث أن 2 ** v == a. يطرح استثناء غير صالح للوسيطة إذا كانت القيمة غير-
إيجابي.

الوظيفة الحقيقية pi_value (int prec)
ترجع نسبة محيط الدائرة إلى القطر بتات مسبقة
من الدقة.

الوظيفة الحقيقية الخطيئة (الحقيقي أ)
لعرض نسبة الضلع المقابل إلى وتر الزاوية أ لليمين
المثلث بالتقدير الدائري.

وظيفة حقيقية كوس (حقيقي أ)
لعرض نسبة الضلع المجاور إلى وتر الزاوية أ لليمين
المثلث بالتقدير الدائري.

دالة باطلة sin_cos (حقيقي ، * sinp حقيقي ، * cosp حقيقي)
إرجاع مع sin (a) وجيب التمام (a) مخزنة في المواقع المشار إليها بواسطة sinp و cosp
على التوالى. إذا كان أي من المؤشر يساوي 0 ، فلا تقم بالتخزين في هذا الموقع. ربما
أسرع قليلاً من استدعاء كلتا الدالتين المثلثيتين بشكل مستقل.

وظيفة حقيقية تان (حقيقي أ)
تُرجع نسبة الضلع المقابل إلى الضلع المجاور للزاوية أ من اليمين
المثلث بالتقدير الدائري. لاحظ أن tan (pi / 2) ليس خطأ حاليًا: سوف يحدث
إرجاع عدد كبير للغاية يعتمد على دقة المدخلات الخاصة به.

الوظيفة الحقيقية asin (real v)
إرجاع مثل هذا الخطيئة (أ) == v.

وظيفة حقيقية acos (real v)
إرجاع مثل أن cos (a) == v.

وظيفة حقيقية atan (real v)
تُرجع الدالة tan (a) == v.

دالة حقيقية atan2 (س حقيقي ، ص)
تُرجع الدالة tan (a) == x / y. يتعامل بشكل صحيح مع y == 0.

الوظيفة الحقيقية pow (الحقيقي أ ، الحقيقي ب)
تنفيذ ** المشغل.

ملف يوفر ملف مساحة الاسم عمليات على قيم الملف.

دالة int fprintf (ملف f ، سلسلة s ، ....)
اطبع القيم المنسقة إلى ملف ، كما هو الحال مع مكتبة UNIX stdio fprintf (). fprintf ()
و printf () يقبل مجموعة فرعية معقولة من إصدار مكتبة stdio:٪ c ،٪ d ،٪ e ،
تعمل٪ x ،٪ o ،٪ f ،٪ s ،٪ g كما هو متوقع ، كما يفعل٪ v للطباعة الذكية لقيمة. شكل
يمكن وضع المُعدِّلات بين علامة النسبة المئوية وحرف التنسيق لتعديلها
التنسيق. هناك الكثير من الأخطاء المعروفة بتنسيق الإدخال والإخراج.

شكل حروف:

يتطلب٪ c وسيطة عدد صحيح صغير (0..255) ، وتنسيقات كـ ASCII
حرف.

يتطلب٪ d وسيطة عدد صحيح ، وتنسيقاته كرقم صحيح.

تتطلب٪ x وسيطة عدد صحيح ، وتنسيقاتها كأساس 16 (سداسي عشري)
عدد صحيح.

٪ o يتطلب وسيطة عدد صحيح ، وتنسيقات كعدد صحيح أساسه 8 (ثماني).

يتطلب٪ e وسيطة رقمية وتنسيقات بالتدوين العلمي.

يتطلب٪ f وسيطة رقمية وتنسيقات بتدوين النقطة الثابتة.

يتطلب٪ s وسيطة سلسلة ، ويقوم بإرسال السلسلة حرفياً.

يتطلب٪ g رقمًا ، ويحاول اختيار تمثيل دقيق وقابل للقراءة
لتهيئته.

شكل الصفات التعريفية:

الأرقام ستتخذ جميع أحرف التنسيق معدل تنسيق عدد صحيح يشير إلى
عدد الفراغات في حقل التنسيق للبيانات المراد تنسيقها. ال
ستتم طباعة القيمة بطريقة صحيحة في هذه المساحة.

أرقام
تأخذ التنسيقات الحقيقية زوجًا من معدِّلات تنسيق الأعداد الصحيحة التي تشير إلى
عرض الحقل ودقته (عدد الأحرف بعد الفاصلة العشرية) من
قيمة منسقة. قد يتم حذف أي من الأعداد الصحيحة.

- قيمة دقة تشير إلى دقة لا نهائية.

* الوسيطة التالية لـ fprintf () هي عدد صحيح يشير إلى عرض الحقل أو
دقة القيمة المنسقة.

دالة الملف string_write ()
قم بإرجاع ملف يجمع القيم المكتوبة في سلسلة.

إغلاق دالة int (ملف f)
أغلق الملف f وأعد مؤشرًا للنجاح.

تدفق وظيفة int (ملف و)
امسح المخازن المؤقتة للملف f وأعد مؤشرًا على النجاح.

int دالة getc (ملف f)
احصل على الحرف التالي من الملف f وأعده.

نهاية دالة int (ملف f)
إرجاع صحيح إذا كان الملف f في EOF ، وإلا خطأ.

خطأ في وظيفة int (ملف f)
يعود صحيحًا إذا كان هناك خطأ معلق في الملف f ، وإلا خطأ.

دالة int clear_error (ملف f)
مسح الأخطاء المعلقة في الملف f ، وإرجاع مؤشر النجاح.

سلسلة_قراءة (سلاسل) دالة الملف
إرجاع ملف ظاهري محتوياته هي السلسلة s.

دالة السلسلة string_string (ملف f)
أعد السلسلة المكتوبة مسبقًا في الملف f ، والتي كان ينبغي أن تكون
تم إنشاؤه بواسطة string_read () أو string_write (). السلوك على الملفات الأخرى حاليا
غير معرف.

وظيفة الملف مفتوحة (مسار السلسلة ، وضع السلسلة)
افتح الملف في المسار المحدد بسلسلة الوضع المحددة ، ala UNIX stdio fopen ().
الأوضاع المسموح بها هي كما في stdio: "r" و "w" و "x" و "r +" و "w +" و "x +".

عدد صحيح fputc (عدد صحيح c ، ملف f)
أخرج الحرف c إلى ملف الإخراج f ، وأعد مؤشرًا للنجاح.

وظيفة عدد صحيح ungetc (عدد صحيح ج ، ملف و)
ادفع الحرف c مرة أخرى إلى ملف الإدخال f ، وأعد إشارة
النجاح.

مجموعة دالة عدد صحيح (ملف f ، عدد صحيح ن)
عيّن حجم المخزن المؤقت المرتبط بالملف f إلى n ، وأعد n.

fgets وظيفة السلسلة (ملف و)
احصل على سطر إدخال من الملف f ، وأعد السلسلة الناتجة.

أنبوب وظيفة الملف (مسار سلسلة ، سلسلة [*] argv ، وضع سلسلة)
قم بتشغيل البرنامج في المسار المحدد ، مع إعادة الملف الذي يمثل أحد طرفي ملف
"أنبوب" لعملية معينة. يمكن أن تكون وسيطة الوضع "r" للقراءة من الأنبوب أو
"w" للكتابة إلى الأنبوب. الوسيطة argv هي مجموعة من السلاسل تعطي الامتداد
الوسائط التي سيتم تمريرها إلى البرنامج ، مع وجود argv [0] تقليديًا هو
إسم البرنامج.

طباعة دالة int (ملف f ، بولي v ، سلسلة fmt ، قاعدة int ، عرض int ، int prec ، سلسلة
يملأ)
طباعة القيمة v إلى ملف f بتنسيق fmt بالقاعدة والعرض والتعبئة والتعبئة المحددة.
يستخدم داخليًا بواسطة File :: fprintf () ؛

دالة int fscanf (file f ، string fmt ، * poly args ...)
املأ المواقع المشار إليها بواسطة مجموعة args بالقيم المأخوذة من الملف f
وفقا لسلسلة FMT. محددات التنسيق مماثلة تمامًا لما هو موجود في UNIX stdio scanf ():
يتم دعم محددات "٪ d" و "٪ e" و "٪ f" و "٪ c" و "٪ s" مع المتوقع
الصفات التعريفية.

دالة int vfscanf (ملف f ، سلسلة fmt ، (* poly) [*] args)
بالنظر إلى الملف f ، والصيغة fmt ، ومصفوفة الوسائط args ، fscanf ()
بشكل مناسب.

Thread يدعم مساحة الاسم Thread العديد من العمليات المفيدة للبرمجة باستخدام
المواضيع، والتي توفر تدفقًا متزامنًا للتحكم في مساحة العنوان المشتركة.
هناك جزء واحد من تركيب خاص مرتبط بالخيوط.

شوكة (ه)
يقبل تعبيرًا تعسفيًا ، ويقيمه في سلسلة فرعية جديدة.
يتلقى مؤشر الترابط الأصل مؤشر الترابط كقيمة تعبير fork.

ما تبقى من وظائف الخيط قياسي إلى حد ما.

قتل وظيفة int (قائمة الخيط ...)
يقتل كل موضوع قيد التشغيل في قائمة الصفيف. بدون جدال ، يقتل
موضوع قيد التشغيل حاليا. إرجاع عدد الخيوط التي تم قتلها.

تتبع دالة int (قائمة بولي ...)
يظهر حالة كل موضوع قيد التشغيل في قائمة الصفيف. مع عدم وجود حجج ،
يتتبع الاستمرار الافتراضي. ترجع عدد الخيوط التي تم تتبعها.

تابع دالة int ()
يستمر في تنفيذ أي سلاسل متقطعة ، ويعيد عدد المتابعة
الخيوط.

وظيفة الخيط الحالية ()
إعادة الخيط الحالي.

قائمة وظائف int ()
تقارير الموضوع قيد التشغيل حاليا إلى stdout.

دالة int get_priority (مؤشر ترابط t)
تقارير أولوية الموضوع المحدد.

وظيفة الخيط id_to_thread (معرف int)
تُرجع السلسلة بالمعرف المحدد ، إذا وجدت ، و 0 بخلاف ذلك.

بولي وظيفة الانضمام (موضوع ر)
ينتظر حتى ينتهي مؤشر الترابط t ، ويعيد كل ما يتم إرجاعه.

set_priority دالة int (خيط t ، int i)
يحاول تعيين أولوية الموضوع t إلى المستوى i ، وإرجاع الأولوية الجديدة.
الأولويات الأكبر تعني المزيد من وقت التشغيل: سيتم دائمًا تشغيل مهمة ذات أولوية أعلى
بدلاً من مهمة ذات أولوية أقل. المواضيع ذات الأولوية القصوى المتساوية ستكون قبل-
متعدد المهام بشكل فارغ.

الملوحة جهاز
تلخص مساحة الاسم Semaphore العمليات على الإشارة المضمنة في ADT. أ
يستخدم السيمافور لمزامنة الخيط. كل إشارة () عملية على
تقوم الإشارة بإيقاظ الخيط الأقل حداثة للانتظار () على تلك الإشارة. ال
يمكن تعيين `` عدد '' عمليات الانتظار في وقت إنشاء السيمافور.

دالة semaphore new (int c)
قم بإنشاء إشارة جديدة مع العد الأولي c لعمليات الانتظار. إذا كان c هو
إيجابي ، فهذا يعني أن خيوط c قد تنتظر على السيمافور قبل كتلة واحدة. لو
c سالبة ، فهي تحدد عدد الخيوط التي يجب أن تنتظر على السيمافور
قبل المزيد من الانتظار لن يمنع.

دالة سيمافور new ()
اتصل الملوحة جهاز(0) وإرجاع النتيجة.

إشارة int (semaphore s)
زيادة إشارة s. إذا كانت s غير موجبة ، وتم حظر بعض الخيوط على s ،
حرر الخيط الأقل حظرًا مؤخرًا. العودة 1 على النجاح.

انتظر int (إشارة s)
إنقاص إشارة s. إذا كانت s سالبة ، فقم بحظرها حتى يتم تحريرها. العودة 1 يوم
النجاح.

اختبار int (semaphore s)
اختبر ما إذا كان الانتظار () على الإشارة سيؤدي إلى حظر مؤشر الترابط الحالي. لو ذلك،
إرجاع 0. وإلا ، حاول إنقاص s ، وإرجاع 1 إذا نجحت.

سلسلة تحتوي مساحة اسم السلسلة على بعض العمليات الأساسية على السلسلة ADT.

طول دالة int (سلسلة)
ترجع عدد الأحرف في s.

دالة السلسلة new (int c)
يعود الحرف المفرد c كسلسلة.

دالة السلسلة الجديدة (int cv [*])
ترجع سلسلة مكونة من أحرف السيرة الذاتية.

فهرس دالة int (سلسلة t ، سلسلة p)
تُرجع فهرس العدد الصحيح لسلسلة النمط p في السلسلة الهدف t ، أو -1 إذا
p ليس سلسلة فرعية لـ t.

سلسلة فرعية لوظيفة السلسلة (سلسلة s ، int i ، int l)
تُرجع السلسلة الفرعية للسلسلة التي تبدأ بالحرف عند الإزاحة i (صفر-
مقرها) وتستمر لما مجموعه l من الأحرف. إذا كانت l سالبة ، فإن السلسلة الفرعية
ستتألف من أحرف تسبق أنا بدلاً من أن تنجح.

PRNG توفر مساحة الاسم PRNG إنشاء ومعالجة زائفة للأرقام. ال
المولد الأساسي هو مولد تشفير تيار RC4 ، تم تمهيده بشكل صحيح. هذا
توفير دفق من البتات شبه العشوائية الآمنة المشفرة في حدود المعقول
التكلفة المستهلكة. (لكن حذار ، التهيئة مكلفة إلى حد ما.)

وظيفة باطلة srandom (int s)
قم بتهيئة المولد ، باستخدام عدد صحيح (كبير بشكل تعسفي) كبذرة.

وظيفة باطلة dev_srandom (int nbits)
قم بتهيئة المولد ، باستخدام وحدات البت من الإنتروبيا التي تم الحصول عليها من بعض الأشياء المعقولة
مصدر الانتروبيا. في أنظمة UNIX ، يكون هذا المصدر / dev / urandom. طلب المزيد
قد يؤدي الانتروبيا الأولية أكثر من النظام إما إلى التمهيد (كما هو الحال في UNIX)
أو معلق ، لذا استخدمه بحذر.

دالة int randbits (int n)
إرجاع n-بت عدد شبه عشوائي ، في النطاق 0 .. (2 ** ن) -1. مفيد للأشياء
مثل RSA.

دالة int randint (int n)
إرجاع رقم شبه عشوائي في النطاق 0..ن-1.

تبديل وظيفة باطل (* (بولي [*]) أ)
ينفذ خلطًا صحيحًا فعالاً موضعيًا (cf Knuth) للمصفوفة أ.

أمر
يتم استخدام مساحة اسم الأوامر بواسطة أوامر المستوى الأعلى كما هو موضح أدناه. إنها
مفيد أيضًا في بعض الأحيان في حد ذاته.

سلسلة Library_path
يحتوي على مسار بحث المكتبة الحالي ، وقائمة أدلة مفصولة بنقطتين إلى
يتم البحث عن ملفات المكتبة.

دالة int undefine (اسم السلسلة)
ينفذ أمر المستوى الأعلى undefine. قم بإزالة الاسم المشار إليه بواسطة اسم السلسلة
من مساحة الاسم. هذا يزيل كل التعريفات المرئية للاسم.

int function undefine (سلسلة [*] أسماء)
قم بإزالة كل اسم من أسماء المصفوفات من مساحة الاسم. هذا يزيل كل شيء
تعريفات مرئية لكل اسم.

حذف وظيفة int (اسم السلسلة)
حاول إزالة الأمر باستخدام اسم السلسلة المحدد من أمر المستوى الأعلى
قائمة ، وإرجاع 1 إذا نجحت.

دالة int lex_file (مسار سلسلة)
محاولة جعل الملف في المسار المحدد هو المصدر الحالي لرمز Nickle ، و
العودة 1 إذا نجحت. لاحظ أن هذا `` يشتمل '' بشكل فعال على الملف بواسطة
دفعها إلى كومة من الملفات لتتم معالجتها.

دالة int lex_library (اسم ملف سلسلة)
مثل lex_file () ، لكنه يبحث في الدلائل التي قدمها ملف Library_path متغير
للملف الأول مع اسم الملف المحدد.

دالة int lex_string (رمز السلسلة)
حاول أن تجعل كود Nickle الموجود في كود السلسلة هو الإدخال التالي.

تحرير دالة int (سلسلة [*] أسماء)
تنفذ أمر تحرير المستوى الأعلى. الأسماء في المصفوفة هي مسار
أسماء مساحات الاسم التي تؤدي إلى اسم الرمز ، وهو الأخير.

int function new (اسم السلسلة ، poly func)
يربط الدالة func باسم سلسلة أوامر المستوى الأعلى: بمعنى ، يجعلها جزءًا من
مفردات قيادة المستوى الأعلى.

int function new_names (اسم السلسلة ، بولي func)
يربط الدالة func باسم سلسلة أوامر المستوى الأعلى: بمعنى ، يجعلها جزءًا من
مفردات قيادة المستوى الأعلى. على عكس new () ، فإن أسماء السلاسل المعطاة لـ func at
يتم تمرير المستوى الأعلى بدون تقييم كمصفوفة من أسماء السلسلة أو كمفردة
اسم السلسلة.

int function pretty_print (ملف f ، سلسلة [*] أسماء)
ينفذ أمر طباعة المستوى الأعلى. يتم النظر إلى كل من سلاسل الأسماء التي تم تمريرها
up والشفرة المطابقة للملف f.

عرض وظيفة int (سلسلة fmt ، بولي فال)
يستخدم printf () لعرض قيمة val بتنسيق fmt.

تاريخنا
يحتفظ Nickle بسجل قيمة عالي المستوى ، وهو مفيد كعامل مساعد لسطر الأوامر
التحرير عند الحساب. تحتوي مساحة اسم المحفوظات على وظائف للوصول إلى هذا
التاريخ.

عرض وظيفة int (سلسلة fmt)
يقوم بتنفيذ أمر المحفوظات ذي المستوى الأعلى بدون وسيطات. عرض أحدث
قيم التاريخ بتنسيق fmt.

عرض دالة int (سلسلة fmt ، عدد صحيح)
ينفذ أمر المستوى الأعلى للتاريخ بحجة واحدة. إظهار آخر عدد
قيم التاريخ بتنسيق fmt.

عرض دالة int (سلسلة fmt ، int first ، int last)
ينفذ أمر المستوى الأعلى للتاريخ مع وسيطتين.

بولي وظيفة إدراج (بولي فال)
أدخل val في قائمة المحفوظات ، وأعده.

اكتنف
العديد من أنظمة التشغيل لديها فكرة ما عن `` متغيرات البيئة ''. البيئة
يحتوي مساحة الاسم على وظائف لمعالجة هذه.

فحص دالة int (اسم السلسلة)
تُرجع 1 إذا كان المتغير بالاسم المحدد موجودًا في البيئة ، و 0
غير ذلك.

دالة السلسلة get (اسم السلسلة)
يحاول استرداد قيمة متغير البيئة وإرجاعها بامتداد
الاسم المعطى. يطرح استثناء غير صالح وسيطة إذا لم يكن المتغير متاحًا.

وظيفة int unset (اسم السلسلة)
يحاول إلغاء تعيين متغير البيئة بالاسم المحدد وإرجاع ملف
دلالة على النجاح.

مجموعة وظيفة السلسلة (اسم السلسلة ، قيمة السلسلة)
يحاول ضبط متغير البيئة بالاسم المعطى على القيمة المحددة ،
ويعيد إشارة إلى النجاح.

أوامر


لدى Nickle مجموعة من الأوامر التي يمكن إعطاؤها في المستوى الأعلى.

قم بإنهاء خروج نيكل.

إنهاء E خروج Nickle برمز حالة عدد صحيح E.

إلغاء تعريف NAME {، NAME}
قم بإزالة هذه الأسماء من النظام.

تحميل E تحميل ملف معطى باسم السلسلة E.

مكتبة ه
قم بتحميل مكتبة من خلال اسم السلسلة E. انظر مناقشة NICKLEPATH
متغير البيئة في البيئة أدناه ، ومناقشة
الأمر :: library_path أعلاه.

E # E طباعة expr1 في قاعدة expr2.

إطبع الإسم
عرض نسخة منسقة من الكائن المشار إليه بواسطة NAME. التعليقات والأصلية
تشكيل فقدت. إذا كان NAME متغيرًا ، فقم بطباعة النوع بالإضافة إلى القيمة.

تعديل الاسم
قم باستدعاء $ EDITOR على الكائن المحدد ، وأعد دمج نتائج التحرير.
هذا هو الأكثر فائدة مع الوظائف.

تاريخ
اعرض أحدث 10 قيم مطبوعة. يمكن الوصول إليها من خلال $n أين n
هو الرقم المعروض على يمين القيمة في هذه القائمة.

تاريخ E
عرض قيم التاريخ الأحدث E.

تاريخ E,E
عرض قيم التاريخ من العدد الصحيح الأول E حتى الثاني.

ديبوجير


عندما يصل استثناء غير معالج إلى أعلى مستوى أثناء التنفيذ ، يتلقى المستخدم شرطة
موجه ، مشيرًا إلى أن وضع التصحيح نشط. في هذا الوضع ، بيئة سطر الأوامر
هو ذلك الذي أُثير فيه الاستثناء غير المعالج. بالإضافة إلى عدد من التصحيح
الأوامر متاحة للمستخدم:

trace احصل على تتبع backtrace للمكدس يظهر الحالة الحالية ، كما هو الحال مع الأمر GDB where.

لأعلى حرك المكدس لأعلى (أي باتجاه تعبير المستوى الأعلى) ala GDB.

لأسفل التحرك لأسفل في المكدس (أي باتجاه السياق الحالي) علاء GDB.

تم ترك وضع التصحيح والتخلي عن التنفيذ.

بالإضافة إلى ذلك ، يتم تحديد مساحة اسم التصحيح في وضع التصحيح. هذا في المقام الأول
لاستخدامها في تصحيح أخطاء Nickle نفسها.

يجمع()
قم بتشغيل جامع القمامة.

تفريغ (وظيفة)
اطبع رمز البايت المترجم للوظيفة.

البيئة


EDITOR المحرر المستخدم بواسطة أمر التحرير ، الموصوف في COMMANDS أعلاه.

نيكلرك
موقع ملف .nicklerc الخاص بالمستخدم ، والذي سيتم تحميله في بداية
إعدام نيكل إن أمكن.

HOME يُستخدم للعثور على .nicklerc الخاص بالمستخدم إذا لم يتم تعيين NICKLERC.

نيكل باث
مسار مفصول بنقطتين تكون عناصره عبارة عن أدلة تحتوي على كود Nickle. ال
مكتبة الأمر والعلم -l ، الموصوفين أعلاه ، ابحث في هذا المسار عن اسم الملف
مطابقة الملف المحدد. مسار المكتبة الافتراضي في حالة عدم وجود هذا المتغير
هو / usr / share / nickle.

نيكلستارت
اسم الملف الذي يجب تحميله كملف تمهيد عند بدء تشغيل Nickle.
الافتراضي في غياب هذا المتغير هو التحميل
/usr/share/nickle/builtin.5c.

أمثلة


مثال (مأخوذ من bc دليل:

الأس الدالة الحقيقية (س الحقيقي) {
حقيقي أ = 1 ؛
كثافة العمليات ب = 1 ؛
الصورة الحقيقية = 1 ؛
int i = 1؛
بينما (1) {
أ = أ * س ؛
ب = ب * ط ؛
ج الحقيقي = أ / ب ؛
إذا (القيمة المطلقة (ج) <1e-6)
عائدات؛
ق = ق + ج ؛
ط + +؛
}
}

يحدد دالة لحساب قيمة تقريبية للدالة الأسية e ** x و

لـ (i = 1 ؛ i <10 ؛ i ++)
printf ("٪ g \ n" ، الأس (i)) ؛

يطبع القيم التقريبية للدالة الأسية للأعداد الصحيحة العشرة الأولى.

VERSION


يصف هذا المستند الإصدار 1.99.2 من نيكل ، بالإضافة إلى بعض الميزات الأحدث. كان
وزعت مع الإصدار 2.77 من نيكل.

استخدم نيكل على الإنترنت باستخدام خدمات onworks.net


خوادم ومحطات عمل مجانية

قم بتنزيل تطبيقات Windows و Linux

أوامر لينكس

Ad