ما هو أقرب شيء للنباتات الموجودة ل .NET؟
سؤال
ما أنا مهتم بشكل خاص به هو القدرة على تحديد القواعد النحوية في التعليمات البرمجية كصنونة عادية دون أي جراءة غير ضرورية.
أنا أدرك أنني أستطيع استخدام 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، والتي لن يتم إصدارها لعدة سنوات أخرى، ستكون نسخة مفرطة من البخوات.
لا تنتمي إلى StackOverflow