Какая самая близкая вещь к pyparsing из существующих для .NET?

StackOverflow https://stackoverflow.com/questions/1456409

  •  12-09-2019
  •  | 
  •  

Вопрос

Что меня особенно интересует, так это возможность определять грамматику в коде как обычный код без каких-либо ненужных ухищрений.

Я знаю, что мог бы использовать 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 ( НПарсек ), но, похоже, он больше не разрабатывается активно.

Project OSLO, который не будет выпущен еще несколько лет и будет представлять собой переработанную версию pyparsing.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top