문제

사실, 아마도 본격적인 렉스/야크가 아닐 수도 있습니다. WebApp을 관리하기 위해 Command-Interpreter 프론트 엔드를 구현하고 있습니다. 나는 문법 정의를 취하고 그것을 내 객체의 메소드를 직접 호출하는 파서로 바꿀 무언가를 찾고 있습니다. ASP.NET MVC가 어떤 컨트롤러 방법을 호출 할 것인지, 인수를 조랑하는 방법을 파악할 수있는 방법과 유사합니다.

따라서 사용자가 내 명령에 "foo를 create"유형의 경우, 메소드를 투명하게 호출해야합니다.

private void Create(string id) { /* ... */ }

아, 그리고 그것이 해당 컨트롤러 메소드의 (예 :) 속성에서 도움말 텍스트를 생성 할 수 있다면 그것은 대단합니다.

도움이 되었습니까?

해결책

Lex/YACC가 어떤 도움이 될지 확신 할 수 없습니다. 기본 토큰 화기와 손으로 글을 더 빠른 통역사 만 있으면됩니다. 여전히 구문 분석 경로에 있다면 참조하십시오 반어.

사이드 노트로 : PowerShell과 그 사령부를 고려 했습니까?

다른 팁

나는 gplex/gppg로 몇 가지 작은 프로젝트를 수행했는데, 이는 C#에서 LEX/YACC의 매우 간단한 재 구현입니다. 위의 다른 도구를 사용하지 않았으므로 실제로 비교할 수는 없지만 제대로 작동했습니다.

GPPG를 찾을 수 있습니다 여기 그리고 gplex 여기.

즉, 전체 LEX/YACC 솔루션은 아마도 문제에 대한 과잉 일 것입니다. IronpyThon을 사용하여 바인딩 세트를 생성하는 것이 좋습니다. IT는 .NET 코드와 쉽게 인터페이스를 쉽게 인터페이스하고, 비 프로그래머는 기본 구문을 상당히 사용할 수있는 것으로 보이며, 사용하려면 많은 유연성/전원을 제공합니다.

또한보십시오 antlr, C# 지원이 있습니다.

아직 초기 CTP이므로 프로덕션 앱에서 사용할 수 없지만 Oslo/Mgrammar에 관심이있을 수 있습니다.http://msdn.microsoft.com/en-us/oslo/

Jison은 최근에 많은 견인력을 얻고 있습니다. JavaScript의 들소 포트입니다. 매우 간단한 특성 때문에 Jison Parsing/Lexing 템플릿을 PHP에 포팅하고 이제 C#에 포팅했습니다. 여전히 매우 새롭지 만 기회가 있다면 여기에서 살펴보십시오. https://github.com/robertleeplummerjr/jison/tree/master/ports/csharp/jison

알파 소프트웨어를 두려워하지 않고 자신의 언어를 만들기 위해 Lex / YACC의 대안을 원한다면 오슬로. 세션 TL27 및 TL31의 세션 녹음을 통해 앉는 것이 좋습니다. 지난 몇 년간 PDC. TL31은 Oslo를 사용하여 도메인 특정 언어의 생성을 직접 처리합니다.

Coco/R은 .NET 구현이있는 컴파일러 생성기입니다. 당신은 그것을 시험해 볼 수 있지만, 그러한 도서관이 일하게하는 것이 자신의 토큰 화기를 작성하는 것보다 빠를 지 확실하지 않습니다.

http://www.ssw.uni-linz.ac.at/research/projects/coco/

내가 제안 할게 CSFLEX -C# Flex 포트 - 가장 유명한 UNIX 스캐너 생성기.

나는 Lex/YACC가 이미 SDK 중 하나에 있다고 생각합니다 (예 : RTM). Windows 또는 .NET Framework SDK.

가든 포인트 파서 생성기 여기 C#에 대해 YACC/Bison 기능을 제공합니다. 그것은 donwload를 할 수 있습니다 여기. GPPG를 사용한 유용한 예가 제공됩니다 여기

Anton이 말했듯이 PowerShell은 아마도 갈 길일 것입니다. LEX/ YACC 구현을 원한다면 말콤 크로우 좋은 세트가 있습니다.

편집하다: 컴파일러 도구에 직접 링크

레코드를 위해 C#에 대한 C#에서 Lexer 및 LALR Parser의 구현 :

http://code.google.com/p/naive-language-tools/

LEX/YACC와 유사해야하지만 해당 도구 (NLT)는 생성기가 아닙니다! 따라서 속도를 잊어 버리십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top