Skip to content

title: مرجعُ قواعدِ النحو description: كلُّ قاعدةٍ مُعلَنةٍ في مصدرِ حقيقةِ اللغة، ومرساتُها وتنزيلُها

مرجعُ قواعدِ النحو

صفحةٌ مولَّدةٌ من language-truth/grammar/ — لا تُحرَّرُ بيد.

المقيسالقيمة
قواعدُ مُعلَنة107
لها مجلَّدُ مرساةٍ في rules_matrix103
تنزيلُها مشتقٌّ بالتنفيذ (derived)105

🔑 عمودُ «مرساة» هو الأهمُّ في هذا الجدول. مجلَّدُ البذورِ يحملُ معرّفَ القاعدةِ حرفًا، فالقاعدةُ بلا مجلَّدٍ قاعدةٌ غيرُ محروسة — يُقاسُ ذلك ولا يُفترَض.

العمودُ «تنزيل»: derived تعني أنّ ما تُنزَّلُ إليه القاعدةُ اشتُقَّ بتشغيلِ المترجِّم لا كُتِبَ باليد — والسجلُّ يحملُ أسماءَ البذورِ التي اشتُقَّ منها شاهدًا.

أعِدْ إنتاجَ الأرقامِ أعلاه:

bash
python scripts/gen_tracks.py --fetch sadlang

البنية العليا — البرنامج، التصريح الأعلى، الجملة، الكتلة

القاعدةالاسممرساةتنزيلأوپكودات
gr.program.programبرنامجderived6
gr.program.declarationتصريحderived17
gr.program.statementجملةderived8
gr.program.blockكتلةderived15
صيغُ EBNF لهذه الطبقة

gr.program.program — برنامج

ebnf
Program = { Declaration } EOF ;

gr.program.declaration — تصريح

ebnf
Declaration = FunctionDecl | ClassDecl | StructDecl | EnumDecl
            | TraitDecl | ImplDecl | ImportDecl | ExportDecl
            | VarDecl | Statement ;

gr.program.statement — جملة

ebnf
Statement = IfStatement | WhileStatement | ForStatement | MatchStatement
          | TryStatement | ReturnStatement | BreakStatement | ContinueStatement
          | BlockStatement | ExpressionStatement ;

gr.program.block — كتلة

ebnf
Block = { Statement } 'نهاية' ;

الجمل التنفيذية — إذا/بينما/لكل/طابق/حاول/ارمي/ارجع/توقف/استمر/تعبير

القاعدةالاسممرساةتنزيلأوپكودات
gr.stmt.ifجملة إذاderived2
gr.stmt.whileجملة بينماderived8
gr.stmt.forجملة لكلderived14
gr.stmt.matchجملة طابقderived6
gr.stmt.tryجملة حاولderived12
gr.stmt.throwجملة ارميderived9
gr.stmt.returnجملة ارجعderived17
gr.stmt.breakجملة توقفderived15
gr.stmt.continueجملة استمرderived16
gr.stmt.expressionجملة تعبيرderived2
gr.stmt.switchجملة حالةderived8
صيغُ EBNF لهذه الطبقة

gr.stmt.if — جملة إذا

ebnf
IfStatement = 'إذا' '(' Expression ')' Block
              { 'وإلا' 'إذا' '(' Expression ')' Block }
              [ 'وإلا' Block ] ;

gr.stmt.while — جملة بينما

ebnf
WhileStatement = 'بينما' '(' Expression ')' Block ;

gr.stmt.for — جملة لكل

ebnf
ForStatement = 'لكل' Identifier [ ',' Identifier ] 'في' Expression Block
             | 'لكل' Identifier 'من' Expression 'الى' Expression Block ;

gr.stmt.match — جملة طابق

ebnf
MatchStatement = 'طابق' [ '(' ] Expression [ ')' ]
                 { 'عندما' Pattern [ 'إذا' Expression ] [ ':' ] { Statement } }
                 [ 'افتراضي' [ ':' ] { Statement } ] 'نهاية' ;

gr.stmt.try — جملة حاول

ebnf
TryStatement = 'حاول' Block
               { 'امسك' Identifier Block }
               [ 'أخيراً' Block ] 'نهاية' ;

gr.stmt.throw — جملة ارمي

ebnf
ThrowStatement = 'ارمي' Expression ;

gr.stmt.return — جملة ارجع

ebnf
ReturnStatement = 'ارجع' [ Expression ] ;

gr.stmt.break — جملة توقف

ebnf
BreakStatement = 'توقف' ;

gr.stmt.continue — جملة استمر

ebnf
ContinueStatement = 'استمر' ;

gr.stmt.expression — جملة تعبير

ebnf
ExpressionStatement = Expression [ '؛' | ';' ] ;

gr.stmt.switch — جملة حالة

ebnf
SwitchStatement = 'حالة' Expression
                  { 'عندما' Expression [ ':' ] { Statement } }
                  [ 'افتراضي' [ ':' ] { Statement } ] 'نهاية' ;

التصريحات — متغير/ثابت/ساكن، دالة، معاملات، استيراد، تصدير، خارجي

القاعدةالاسممرساةتنزيلأوپكودات
gr.decl.variableتصريح متغيرderived4
gr.decl.type_refإشارة نوعderived8
gr.decl.functionتصريح دالةderived18
gr.decl.parametersالمعاملاتderived17
gr.decl.importتصريح استيرادderived2
gr.decl.exportتصريح تصديرderived17
gr.decl.reexportتصريح إعادة تصديرderived17
gr.decl.externتصريح خارجيderived2
gr.decl.arg_listقائمة وسائطderived17
صيغُ EBNF لهذه الطبقة

gr.decl.variable — تصريح متغير

ebnf
VarDeclaration = ( ('متغير' | 'ثابت' | 'ساكن') [ 'متطاير' ] { Modifier } [ Type ]
                 | 'متطاير' [ Type ] | Type ) Identifier [ '=' Expression ] ;

gr.decl.type_ref — إشارة نوع

ebnf
TypeRef = ('رقم' | 'رقم8' | 'رقم16' | 'رقم32'
         | 'طبيعي' | 'طبيعي8' | 'طبيعي16' | 'طبيعي32'
         | 'عشري' | 'عشري32'
         | 'نص' | 'منطقي' | 'مصفوفة' | 'خريطة' | 'أي'
         | 'فراغ' | 'عدم' | Identifier) ;

gr.decl.function — تصريح دالة

ebnf
FunctionDeclaration = 'دالة' [ 'لا_ترجع' ] [ 'مقاطعة' ] [ Type ] Identifier
                      '(' [ Parameters ] ')' [ 'غير_متزامن' ] Block ;

gr.decl.parameters — المعاملات

ebnf
Parameters = Parameter { ',' Parameter } ;  Parameter = [ Type ] Identifier [ '=' Expression ] ;

gr.decl.import — تصريح استيراد

ebnf
ModuleRef         = Identifier { '.' Identifier }
                  | StringLiteral ;
SourcePath        = ModuleRef
                  | ( '.' | '..' ) Identifier { '.' Identifier } ;
ImportItem        = Identifier [ 'كـ' Identifier ] ; ImportItems       = '*' | ImportItem { ( '،' | ',' ) ImportItem } ; ImportDeclaration = 'استورد' ModuleRef [ 'كـ' Identifier ]
                  | 'استورد' ImportItems 'من' SourcePath
                  | 'من' SourcePath 'استورد' ImportItems ;

gr.decl.export — تصريح تصدير

ebnf
ExportDeclaration = 'صدّر' Declaration ;

gr.decl.reexport — تصريح إعادة تصدير

ebnf
ReExportDeclaration = 'صدّر' '*'
                    | 'صدّر' '*' 'من' SourcePath
                    | 'صدّر' ImportItem { ( '،' | ',' ) ImportItem } 'من' SourcePath ;
(* ImportItem و SourcePath معرَّفتان في gr.decl.import *)

gr.decl.extern — تصريح خارجي

ebnf
ExternDeclaration = 'دالة' 'خارجية' [ '(' StringLiteral ')' ] [ Type ] Identifier '(' [ Parameters ] ')' ;

gr.decl.arg_list — قائمة وسائط

ebnf
ArgList = [ Expression { ( ',' | '،' ) Expression } ] ;

البرمجة الكائنية — صنف/أعضاء/حقل/طريقة/باني/هادم/خاصية/سمة/تنفيذ/امتداد/جديد/هذا/الأساس

القاعدةالاسممرساةتنزيلأوپكودات
gr.oop.classتصريح صنفderived8
gr.oop.enumتصريح تعدادderived3
gr.oop.structتصريح بنيةderived6
gr.oop.memberعضو صنفderived7
gr.oop.fieldحقلderived7
gr.oop.methodطريقةderived7
gr.oop.constructorبانيderived5
gr.oop.destructorهادمderived6
gr.oop.propertyخاصيّةderived8
gr.oop.operatorتحميل عاملderived9
gr.oop.modifiersمعدّلات وصولderived8
gr.oop.traitتصريح سمةderived5
gr.oop.implكتلة تنفيذderived8
gr.oop.extensionكتلة امتدادderived9
gr.oop.newإنشاء كائنderived5
gr.oop.this_superهذا/الأساسderived9
صيغُ EBNF لهذه الطبقة

gr.oop.class — تصريح صنف

ebnf
ClassDecl = 'صنف' { 'مجرد' | 'محكم' } Identifier
            [ 'يرث' Identifier { ',' Identifier } ]
            [ 'نفّذ' Identifier { ',' Identifier } ]
            { ClassMember } 'نهاية' ;

gr.oop.enum — تصريح تعداد

ebnf
EnumDecl   = 'تعداد' Identifier EnumMember { [ ',' ] EnumMember } 'نهاية' ; EnumMember = Identifier [ Payload | '=' Expression ] ; Payload    = '(' [ Field { ( ',' | '،' ) Field } ] ')' ; Field      = [ Type ] Identifier ;

gr.oop.struct — تصريح بنية

ebnf
StructDecl = 'بنية' Identifier [ LifetimeParams ] { [ AccessMod ] ( Field | Constructor | Method ) } 'نهاية' ;

gr.oop.member — عضو صنف

ebnf
ClassMember = Property | Method | Constructor | Destructor | Operator | Field ;

gr.oop.field — حقل

ebnf
FieldDecl = ( 'متغير' | 'ثابت' ) Modifiers [ Type ] Identifier [ '=' Expression ] ;

gr.oop.method — طريقة

ebnf
MethodDecl = 'دالة' Modifiers [ 'غير_متزامن' ] [ ReturnType ] Identifier '(' Parameters ')' Block ;

gr.oop.constructor — باني

ebnf
ConstructorDecl = 'باني' Modifiers '(' Parameters ')' [ ':' 'الأساس' '(' ArgList ')' ] Block ;

gr.oop.destructor — هادم

ebnf
DestructorDecl = 'هدم' Modifiers '(' ')' Block ;

gr.oop.property — خاصيّة

ebnf
PropertyDecl = 'خاصية' Modifiers [ Type ] Identifier
               { ( 'احصل' '(' ')' Block | 'عيّن' '(' Identifier ')' Block ) }
               'نهاية' ;

gr.oop.operator — تحميل عامل

ebnf
OperatorDecl = 'عامل' Modifiers Operator '(' Parameters ')' Block ;

gr.oop.modifiers — معدّلات وصول

ebnf
Modifiers = { 'عام' | 'خاص' | 'محمي' | 'ساكن' | 'مجرد' } ;

gr.oop.trait — تصريح سمة

ebnf
TraitDecl = 'سمة' Identifier [ 'يرث' Identifier { ',' Identifier } ]
            { 'دالة' [ 'مجرد' ] [ ReturnType ] Identifier '(' Parameters ')' [ DefaultBody 'نهاية' ] }
            'نهاية' ;

gr.oop.impl — كتلة تنفيذ

ebnf
ImplDecl = 'نفّذ' ( Identifier 'لـ' Identifier | Identifier ) { 'دالة' FunctionDecl } 'نهاية' ;

gr.oop.extension — كتلة امتداد

ebnf
ExtensionDecl = 'امتداد' Identifier { 'دالة' FunctionDecl } 'نهاية' ;

gr.oop.new — إنشاء كائن

ebnf
NewExpr = ClassName '(' ArgList ')' [ 'جديد' ] ;

gr.oop.this_super — هذا/الأساس

ebnf
ThisSuper = 'هذا' | 'الأساس' '.' Member ;

التعابير وسلسلة الأسبقية — أنبوب/إسناد/ثلاثي/منطقي/بتّي/مقارنة/مدى/حسابي/أحادي/أس/لاحقي/أوّلي

القاعدةالاسممرساةتنزيلأوپكودات
gr.expr.expressionتعبيرderived2
gr.expr.pipelineأنبوبderived8
gr.expr.assignmentإسنادderived6
gr.expr.ternaryشرطي ثلاثيderived7
gr.expr.null_coalesceتجميع فارغderived7
gr.expr.logical_orأو المنطقيderived8
gr.expr.logical_andو المنطقيderived8
gr.expr.bitwise_orأو البتّيderived2
gr.expr.bitwise_xorXOR البتّيderived2
gr.expr.bitwise_andو البتّيderived2
gr.expr.equalityمساواةderived2
gr.expr.comparisonمقارنةderived22
gr.expr.rangeمدىderived9
gr.expr.termحد جمعيderived2
gr.expr.factorحد ضربيderived2
gr.expr.unaryأحاديderived6
gr.expr.powerأسderived3
gr.expr.postfixلاحقيderived10
gr.expr.primaryأوّليderived11
gr.expr.lambdaلامداderived10
gr.expr.fstringنص منسَّقderived6
gr.expr.decoratorمُزخرِفderived16
gr.expr.directiveتعبير توجيهderived4
gr.expr.array_literalمصفوفة حرفيّةderived6
gr.expr.map_literalخريطة حرفيّةderived7
صيغُ EBNF لهذه الطبقة

gr.expr.expression — تعبير

ebnf
Expression = Pipeline ;

gr.expr.pipeline — أنبوب

ebnf
Pipeline = Assignment { '|>' Assignment } ;

gr.expr.assignment — إسناد

ebnf
Assignment = Ternary [ ( ':=' | '=' | '+=' | '-=' | '*=' | '/=' | '//=' | '%=' ) Assignment ] ;

gr.expr.ternary — شرطي ثلاثي

ebnf
Ternary = NullCoalesce [ '؟' Expression ':' Ternary ] ;

gr.expr.null_coalesce — تجميع فارغ

ebnf
NullCoalesce = LogicalOr { '؟؟' LogicalOr } ;

gr.expr.logical_or — أو المنطقي

ebnf
LogicalOr = LogicalAnd { ( '||' | 'أو' ) LogicalAnd } ;

gr.expr.logical_and — و المنطقي

ebnf
LogicalAnd = BitwiseOr { ( '&&' | 'و' ) BitwiseOr } ;

gr.expr.bitwise_or — أو البتّي

ebnf
BitwiseOr = BitwiseXor { '|' BitwiseXor } ;

gr.expr.bitwise_xor — XOR البتّي

ebnf
BitwiseXor = BitwiseAnd { '^' BitwiseAnd } ;

gr.expr.bitwise_and — و البتّي

ebnf
BitwiseAnd = Equality { '&' Equality } ;

gr.expr.equality — مساواة

ebnf
Equality = Comparison { ( '==' | '!=' ) Comparison } ;

gr.expr.comparison — مقارنة

ebnf
Comparison = Range { ( '<' | '<=' | '>' | '>=' | 'في' ) Range } ;

gr.expr.range — مدى

ebnf
Range = Term [ '..' [ Term ] ] ;

gr.expr.term — حد جمعي

ebnf
Term = Factor { ( '+' | '-' ) Factor } { ( '<<' | '>>' ) Factor } ;

gr.expr.factor — حد ضربي

ebnf
Factor = Unary { ( '*' | '/' | '//' | '%' ) Unary } ;

gr.expr.unary — أحادي

ebnf
Unary = '&' [ Lifetime ] [ 'متغير' | 'mut' ] Identifier
      | ( '!' | '-' | '++' | '--' | '~' ) Unary
      | Power ;

gr.expr.power — أس

ebnf
Power = Postfix [ '**' Power ] ;

gr.expr.postfix — لاحقي

ebnf
Postfix = Primary { PostfixOp } ; PostfixOp = Identifier '!' '(' ArgList ')' | '(' ArgList ')' [ 'جديد' ]
          | '.' Member [ '(' ArgList ')' ] | '؟.' Member [ '(' ArgList ')' ]
          | '[' IndexOrSlice ']' | ( '++' | '--' ) | '؟' '[' Expression ']' ;

gr.expr.primary — أوّلي

ebnf
Primary = 'إذا' '(' Expression ')' [ 'ثم' ] Expression 'وإلا' Expression
        | 'انتظر' Expression | 'انشر' Expression | 'هذا' | 'الأساس' '.' Member
        | DirectiveExpr | Lambda | Literal | FString | '|' Expression '|'
        | 'اعرض' Widget | Identifier [ '<' TemplateArgs '>' ]
        | '(' [ Expression { ',' Expression } ] ')' [ '=>' Expression ]
        | ArrayLiteral | MapLiteral | BuiltinType | SoftKeywordAsName ;

gr.expr.lambda — لامدا

ebnf
Lambda = 'لامدا' '(' Parameters ')' ( '=>' Expression | '=>' Block 'نهاية' | Block 'نهاية' ) ;

gr.expr.fstring — نص منسَّق

ebnf
FString = FSTRING_TOKEN ;

gr.expr.decorator — مُزخرِف

ebnf
Decorator = '@' Identifier [ '(' ArgList ')' ] ;

gr.expr.directive — تعبير توجيه

ebnf
DirectiveExpr = '@' Name '(' ArgList ')' ;

gr.expr.array_literal — مصفوفة حرفيّة

ebnf
ArrayLiteral = '[' [ ListComprehension | Expression { ( ',' | '،' ) Expression } ] ']' ;

gr.expr.map_literal — خريطة حرفيّة

ebnf
MapLiteral = '{' [ DictComprehension | SetComprehension | Expression ( ':' | '=' ) Expression { ',' ... } ] '}' ;

أنماط المطابقة — شامل/حرفيّ/متغيّر/نطاق (حصريّ وشامل)/عضو تعداد مؤهَّل (unit وADT)/باني غير مؤهَّل (ConstructorPattern)/قائمة/بنية/ربط/بدائل

القاعدةالاسممرساةتنزيلأوپكودات
gr.pattern.patternنمطderived6
gr.pattern.primaryنمط أوّليّderived9
gr.pattern.listنمط قائمةderived15
gr.pattern.structنمط بنيةderived12
gr.pattern.bindingنمط ربطderived8
gr.pattern.orنمط بدائلderived7
صيغُ EBNF لهذه الطبقة

gr.pattern.pattern — نمط

ebnf
Pattern = '_' | StructPattern | ListPattern
        | PrimaryPattern [ '@' Pattern ] | PrimaryPattern { '|' PrimaryPattern } ;

gr.pattern.primary — نمط أوّليّ

ebnf
PrimaryPattern = [ '-' ] Number [ ( '..' | '..=' ) [ '-' ] Number ]
               | String | BoolLit | NullLit
               | Identifier ( '.' Identifier [ CtorArgs ] | CtorArgs )? ;
CtorArgs       = '(' [ Pattern { ( ',' | '،' ) Pattern } ] ')' ;

gr.pattern.list — نمط قائمة

ebnf
ListPattern = '[' [ Pattern { ( ',' | '،' ) Pattern } [ ( ',' | '،' ) '*' Identifier ]
                  | '*' Identifier ] ']' ;

gr.pattern.struct — نمط بنية

ebnf
StructPattern = '{' [ Field { ( ',' | '،' ) Field } ] '}' ; Field = Identifier [ ':' Pattern ] ;

gr.pattern.binding — نمط ربط

ebnf
BindingPattern = Identifier '@' Pattern ;

gr.pattern.or — نمط بدائل

ebnf
OrPattern = PrimaryPattern '|' PrimaryPattern { '|' PrimaryPattern } ;

بنيات متقدمة — أنواع/قوالب/عمر/قيود + أنتج/باستخدام/أجّل/أطلق/اختر + استيعاب/ماكرو/اختبار/عقد/FFI/واجهة

القاعدةالاسممرساةتنزيلأوپكودات
gr.adv.typeنوعderived17
gr.adv.lifetime_paramsمعاملات عمرderived17
gr.adv.template_declتصريح قالبderived5
gr.adv.template_paramsمعاملات قالبderived5
gr.adv.template_argsوسائط قالبderived5
gr.adv.where_clauseجملة حيثderived5
gr.adv.yieldجملة أنتجderived17
gr.adv.withجملة باستخدامderived7
gr.adv.deferجملة أجّلderived16
gr.adv.goجملة أطلقderived7
gr.adv.selectجملة اخترderived10
gr.adv.list_comprehensionاستيعاب قائمةderived17
gr.adv.set_comprehensionاستيعاب مجموعةderived17
gr.adv.dict_comprehensionاستيعاب قاموسderived18
gr.adv.macroتصريح ماكروderived6
gr.adv.property_testاختبار خصائصnot_derived
gr.adv.awaitتعبير انتظرderived2
gr.adv.contractعقد ذكيّderived6
gr.adv.ffi_extern_blockكتلة خارجيderived2
gr.adv.ffi_linkageاتفاقيّة ربطderived2
gr.adv.ffi_ctypeنوع Cnot_derived
gr.adv.inline_asmتجميع مضمَّنderived2
gr.adv.asm_dialectكتلة لهجة التجميعderived15
gr.adv.ui_declتصريح واجهةderived7
gr.adv.ui_stateتصريح حالة واجهةderived16
gr.adv.widgetتعبير عنصر واجهةderived2
gr.adv.ui_modifier_chainسلسلة معدّلاتderived2
gr.adv.ui_eventمعالج حدثderived2
صيغُ EBNF لهذه الطبقة

gr.adv.type — نوع

ebnf
Type = TypeCore [ '؟' | ( 'عدمي' | 'عدمية' ) Identifier<lookahead, same-line> ] ; TypeCore = 'رقم' | 'عشري' | 'نص' | 'منطقي' | 'فراغ' | 'عدم' | 'أي'
         | ( 'مصفوفة' | 'خريطة' ) [ '<' Type [ ',' Type ] '>' ] | Identifier ;

gr.adv.lifetime_params — معاملات عمر

ebnf
LifetimeParams = '<' Lifetime { ( ',' | '،' ) Lifetime } '>' ;

gr.adv.template_decl — تصريح قالب

ebnf
TemplateDecl = 'قالب' TemplateParams ( FunctionDecl | ClassDecl ) ;

gr.adv.template_params — معاملات قالب

ebnf
TemplateParams = '<' TParam { ( ',' | '،' ) TParam } '>' ; TParam = 'ثابت' Type Identifier [ '=' Expression ] | 'نوع' Identifier [ ':' Constraint { '+' Constraint } ] ;

gr.adv.template_args — وسائط قالب

ebnf
TemplateArgs = ( Type | Expression ) { ',' ( Type | Expression ) } ;

gr.adv.where_clause — جملة حيث

ebnf
WhereClause = 'حيث' ConstraintItem { ( ',' | '،' ) ConstraintItem } ;

gr.adv.yield — جملة أنتج

ebnf
YieldStatement = 'أنتج' [ 'from' ] [ Expression ] ;

gr.adv.with — جملة باستخدام

ebnf
WithStatement = 'باستخدام' Expression [ 'كـ' Identifier ] { Statement } 'نهاية' ;

gr.adv.defer — جملة أجّل

ebnf
DeferStatement = 'أجّل' ( Statement | { Statement } 'نهاية' ) ;

gr.adv.go — جملة أطلق

ebnf
GoStatement = 'أطلق' ( Expression | { Declaration } 'نهاية' ) ;

gr.adv.select — جملة اختر

ebnf
SelectStatement = 'اختر' { 'عندما' Expression ':' { Statement } } [ 'افتراضي' ':' { Statement } ] 'نهاية' ;

gr.adv.list_comprehension — استيعاب قائمة

ebnf
ListComprehension = 'لكل' Identifier [ '،' Identifier ] 'في' Expression [ 'إذا' Expression ] 'أنتج' Expression ;

gr.adv.set_comprehension — استيعاب مجموعة

ebnf
SetComprehension = 'لكل' Identifier [ '،' Identifier ] 'في' Expression [ 'إذا' Expression ] 'أنتج' Expression ;

gr.adv.dict_comprehension — استيعاب قاموس

ebnf
DictComprehension = 'لكل' Identifier [ '،' Identifier ] 'في' Expression [ 'إذا' Expression ] 'أنتج' Expression ( ':' | '=' ) Expression ;

gr.adv.macro — تصريح ماكرو

ebnf
MacroDecl = 'ماكرو' Identifier '(' [ Parameters [ '...' Identifier ] ] ')' { Statement } 'نهاية' ;

gr.adv.property_test — اختبار خصائص

ebnf
TestDecl = 'اختبر' '(' STRING ')' [ 'تكرارات' Number ] [ 'بذرة' Number ] { Statement } 'نهاية' ;

gr.adv.await — تعبير انتظر

ebnf
AwaitExpr = 'انتظر' Expression ;

gr.adv.contract — عقد ذكيّ

ebnf
ContractDecl = 'عقد' Identifier [ 'يرث' Identifier { ',' Identifier } ] { ClassMember } 'نهاية' ;

gr.adv.ffi_extern_block — كتلة خارجي

ebnf
ExternBlock = 'خارجي' StringLiteral { 'دالة' [ Type ] Identifier '(' [ Parameters ] ')' } 'نهاية' ;

gr.adv.ffi_linkage — اتفاقيّة ربط

ebnf
Linkage = 'خارجي' StringLiteral | 'خارجية' '(' StringLiteral ')' ;

gr.adv.ffi_ctype — نوع C

ebnf
CType = BasicCType { '*' } [ '[' Number ']' ] ;

gr.adv.inline_asm — تجميع مضمَّن

ebnf
InlineAsm = '@تجميع' '(' STRING { ',' ( STRING | 'متطاير' ) } ')' ;

gr.adv.asm_dialect — كتلة لهجة التجميع

ebnf
AsmBlock = 'تجميع' [ 'متطاير' ] { AsmLabel | AsmInstruction | AsmClobber } 'نهاية' ; AsmInstruction = MNEMONIC [ Operand { '،' Operand } ] ; AsmLabel = IDENT ':' ; AsmClobber = 'يلوّث' '(' Target { '،' Target } ')' ; Operand = REGISTER | INTEGER | '[' MemExpr ']' | '{' IDENT '}' | LABEL ;

gr.adv.ui_decl — تصريح واجهة

ebnf
UIDeclaration = 'واجهة' Identifier [ 'يرث' Identifier ] { UIStateDecl | 'دالة' FunctionDecl } 'نهاية' ;

gr.adv.ui_state — تصريح حالة واجهة

ebnf
UIStateDecl = '@' ( 'حالة' | 'ربط' | 'بيئة' | 'محسوب' ) Identifier [ ':' Type ] [ '=' Expression ] ;

gr.adv.widget — تعبير عنصر واجهة

ebnf
WidgetExpr = WidgetName [ '(' [ Arg { ',' Arg } ] ')' ] ModifierChain [ ChildrenBlock 'نهاية' ] ;

gr.adv.ui_modifier_chain — سلسلة معدّلات

ebnf
ModifierChain = { '.' Identifier '(' [ ArgList ] ')' | UIEventHandler } ;

gr.adv.ui_event — معالج حدث

ebnf
UIEventHandler = '.' EventName '=>' ( Expression | Block 'نهاية' ) ;

القواعد المعجمية — معرّف/عدد صحيح/عشري/نص/نص خام/نص منسَّق/عمر/تعليق

القاعدةالاسممرساةتنزيلأوپكودات
gr.lex.identifierمُعرّفderived4
gr.lex.integerعدد صحيحderived2
gr.lex.doubleعدد عشريّderived2
gr.lex.stringنص حرفيّderived2
gr.lex.raw_stringنص خامderived2
gr.lex.fstringرمز نص منسَّقderived6
gr.lex.lifetimeتعليق عمرderived7
gr.lex.commentتعليقderived4
صيغُ EBNF لهذه الطبقة

gr.lex.identifier — مُعرّف

ebnf
Identifier = ( Letter | '_' | ArabicLetter ) { Letter | Digit | '_' | ArabicLetter } ;

gr.lex.integer — عدد صحيح

ebnf
IntegerLiteral = Digit { Digit | '_' } ;

gr.lex.double — عدد عشريّ

ebnf
DoubleLiteral = Digit { Digit } '.' Digit { Digit } [ ( 'e' | 'E' ) [ '+' | '-' ] Digit { Digit } ] ;

gr.lex.string — نص حرفيّ

ebnf
StringLiteral = '"' { Char | Escape } '"' ;

gr.lex.raw_string — نص خام

ebnf
RawString = 'r' '"' { Char } '"' ;

gr.lex.fstring — رمز نص منسَّق

ebnf
FStringToken = 'f' '"' { Char | '{' ... '}' } '"' ;

gr.lex.lifetime — تعليق عمر

ebnf
Lifetime = '\'' Identifier ;

gr.lex.comment — تعليق

ebnf
Comment = '#' { Char } NEWLINE | '#*' { Char } '*#' | '##' { Char } NEWLINE | '#**' { Char } '**#' ;

مُرخَّص بموجب رخصة MIT