[html] سياق السياق الحساسة التنفيذ


Answers

ومن الواضح أن الإبلاغ عن اختلاف من حيث أصغر تغيير في الهياكل لديك ليس ما تريد. تريد الإبلاغ عن بعض السياق.

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

بينما أنا لست متأكدا من أن هذا هو النهج الصحيح، وسأحاول أن تميز الهياكل الخاصة بك باستخدام قواعد اللغة ، على سبيل المثال، بنف. على سبيل المثال، قد تكون بعض القواعد النحوية قد تكون:

 action = 'SOP' sop_item_list ;
 sop_item_list = NATURAL ;
 sop_item_list = sop_item_list ',' NATURAL ;

الآن يمكن وصف عنصر سوب الفعلي شجرة بناء مجردة (إظهار الأطفال المتداخلة، يمكن فهرسة بواسطة الثوابت للوصول إلى فرعية):

 t1: action('SOP',sop_item_list(sop_item_list(NATURAL[1]),',',NATURAL[2]))

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

  replace t1[2] with op_item_list(sop_item_list(sop_item_list(NATURAL[1]),',',NATURAL[2]),',',NATURAL[3]

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

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

replace 'SOP' ... with 'SOP',...,3

والتي أعتقد أنها ما تبحث عنه في المثال المحدد.

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

وجود إجابتك من حيث أست، ينبغي أيضا جعل من السهل نسبيا لإنتاج هتمل كما تريدها. (الناس يعملون مع شمل في كل وقت، و شمل هو في الأساس تمثيل شجرة).

Question

ملخص والسؤال الأساسي

استخدام مس أسيس 2010 و فبا (تنهد ..)

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

أود استخدام شيء مثل علامات هتمل مثل <span class="references">These are references 1, 6</span> حتى أتمكن من مراجعة التغييرات باستخدام الشفرة وتخصيص كيفية إخراج نص التغيير. أو أي شيء آخر لإنجاز مهمتي.

أرى هذا كوسيلة لتوفير وسيلة قابلة للتوسيع لتخصيص الإخراج، وربما نقل الأشياء إلى منصة أكثر قوة وتستخدم في الواقع هتمل / كس.

هل أحد يعرف مشروع مماثل قد تكون قادرة على توجيه لي في الاتجاه الصحيح؟

مهمتي

لدي قاعدة بيانات الوصول مع جداول تعليمات تشغيل العمل - عادة 200-300 العمليات، وكثير منها تتغير من مراجعة واحدة إلى أخرى. لقد نفذت حاليا وظيفة التي يتكرر من خلال الجداول، يجد التعليمات التي تغيرت ومقارنتها.

لاحظ أن كل تعليمات العملية هي عادة جمل زوجين مع سطرين في نهاية مع بعض مراجع الوثيقة.

وتستند خوارزمي على "خوارزمية الفرق (س) والاختلافات" ، وأنها تعمل كبيرة.

يدعم أسيس النص "المنسق"، الذي يتم تمجيده ببساطة هتمل بسيط، لذلك يمكنني بسهولة إنشاء النص الكامل مع الإضافات المنسقة والحذف، أي إضافة علامات مثل <font color = "red"><strong><i>This text has been removed</i></strong></font> . الناتج الرئيسي من إجراء ديف هو النص الكامل للعملية التي تشمل غير تغيير، حذف، وإدراج النص مضمنة مع بعضها البعض. يضيف الإجراء ديف <del> و <ins> العلامات التي يتم استبدالها لاحقا بنص التنسيق لاحقا (النتيجة هي شيء مشابه لعرض التغييرات من تعديلات تبادل المكدس).

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

على سبيل المثال: إذا تم تغيير نوع من المواد الكيميائية من "الفئة أ" إلى "الفئة C"، فإن نص التغيير الذي يتم إنشاؤه بسهولة هو "تغيير" A "إلى" C "، والتي ليست مفيدة جدا لشخص مراجعة التغييرات. أكثر شيوعا هي مرجع الوثيقة في النهاية: إضافة سوب 3 إلى قائمة مثل "سوب 1، 2، 3" يولد النص "أد '3'". ومن الواضح أنها ليست مفيدة أيضا.

ما هو الأكثر فائدة هو إخراج مخصص للنص المعين كنص "سوب" بحيث يكون الناتج "إضافة إشارة إلى سوب 3".

لقد بدأت بالحل التالي:

كلمات المجموعة معا، على سبيل المثال علاج النص مثل "سوب 1، 2، 3" كرمز واحد للمقارنة. وهذا يولد النص "تغيير" سوب 1، 2 'إلى' سوب 1، 2، 3 ". هذا الحصول على تشوش عندما يكون هناك قائمة كبيرة وكنت تحاول تحديد ما تغيرت فعلا.

حيث أنا الآن

أنا الآن محاولة لإضافة علامات هتمل إضافية قبل تشغيل خوارزمية ديف. على سبيل المثال، سوف يتم تشغيل النص من خلال "معالج مسبق" يقوم بتحويل "سوب 1، 2" إلى سوب 1، 2

وبمجرد أن يقوم الإجراء ديف بإرجاع النص الكامل للتغيير، فإنني أسحبه من خلال الإشارة إلى "الفئة" الحالية من النص وعندما يكون هناك <del> أو <ins> أسلم النص بين العلامات ويستخدم كتلة SELECT CASE فوق الفصل لمعالجة كل تغيير.

هذا في الواقع يعمل بخير بالنسبة للجزء الأكبر، ولكن هناك العديد من القضايا التي يجب أن أعمل من خلال، مثل إضافة ديف تقرر أن أقصر مسار هو حذف بعض العلامات الافتتاحية وإدراج غيرها منها. يؤدي هذا إلى إنشاء سيناريو أن هناك <span> ولكن علامة </span> واحدة فقط.

السؤال النهائي

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

شكرا مقدما.

لاحظ أيضا:

الوقت لتشغيل نموذجي هو ما يقرب من 1.5 إلى 2.5 ثانية معي محاولة المزيد من الأشياء الفاخرة وحفنة من debug.prints. حتى تشغيل من خلال تمرير إضافي أو اثنين لن يكون القاتل.




Related