質問

私は何で特に興味があることは、不要な嫌なものなしで普通のコードのようなコードで文法を定義する機能があります。

私はIronPythonのを使用することができます知っています。私はしたくありません。

UPDATE:

さらに私が探しているものを説明するために、私はいくつかのサンプル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#コードをアイロニーnoreferrer">

他のヒント

あなたは NParsec を試みることができるが、積極的に開発されていないようですこれ以上ます。

プロジェクト別の数年の間にリリースされることはありませんOSLO、およびpyparsingの過剰設計バージョンになるだろうされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top