什么我在特别感兴趣是定义在码作为普通代码语法没有任何不必要的冗余代码的能力。

我知道我可以使用IronPython的。我不想。

更新:

要进一步解释什么是我要找的,我包括一些示例代码pyparsing。这是一个不完整的解析器Emacs的快捷键转换为更传统的符号。这个例子,当然,足够小,字符串函数就足够了,但它只是为了显示pyparsing的清洁和简洁。

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 ,但它似乎并没有被积极开发任何更多。

项目OSLO,这将不会被释放了几年的时间,并且将是pyparsing的过度设计的版本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top