سؤال

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

أنا أدرك أنني أستطيع استخدام IronPython. أنا لا أريد ذلك.

تحديث:

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

from pyparsing import Literal, OneOrMore, Optional, Word, printables, replaceWith

CTRL_MODIFIER = Literal('C').setParseAction(replaceWith('Ctrl'))
META_MODIFIER = Literal('M').setParseAction(replaceWith('Alt'))
MODIFIER = CTRL_MODIFIER | META_MODIFIER # Note operator overloading

SEPARATOR = Literal('-').setParseAction(replaceWith('+'))

MODIFIER_LIST = OneOrMore(MODIFIER + SEPARATOR)

KEY = Word(printables) # This is a "word" composed of any number of printable characters.

# The lambda functions here just join the tokens with the literal string 
# on which .join is called.
STROKE = (Optional(MODIFIER_LIST) + KEY).setParseAction(
    lambda tokens: ' '.join([str(token) for token in tokens]))
BINDING = OneOrMore(STROKE).setParseAction(
    lambda tokens: ', '.join([str(token) for token in tokens]))

# Example usage:
# >>> BINDING.transformString('M-/')
# Alt + /
# >>> BINDING.transformString('C-x C-f')
# Ctrl + x, Ctrl + f
# >>> BINDING.transformString('C-x f')
# Ctrl + x, f
# >>> BINDING.transformString('C-x M-c M-butterfly')
# Ctrl + x, Alt + c, Alt + butterfly

أود أن أكون قادرا على كتابة النحو في .NET مع سهولة في أسطر قليلة.

هل كانت مفيدة؟

المحلول

ألق نظرة على: سخرية يسمح لك بتحديد قواعد اللغة الخاصة بك في رمز C #

نصائح أخرى

بامكانك ان تحاول nparsec., ، ولكن يبدو أنه لا يتم تطويره بنشاط أكثر.

Project Oslo، والتي لن يتم إصدارها لعدة سنوات أخرى، ستكون نسخة مفرطة من البخوات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top