.NET에 존재하는 pyparsing에 가장 가까운 것은 무엇입니까?
문제
내가 특히 관심이있는 것은 불필요한 cruft없이 코드의 문법을 일반 코드로 정의하는 능력입니다.
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).
제휴하지 않습니다 StackOverflow