2009-10-22 7 views
11

C#에서 mathematica 표현식을 구문 분석 할 수있는 내장 구문 분석기가 있습니까?Mathematica 구문 구문 분석기?

커널 자체를 사용하여 표현식을 구문 분석하고 .NET/Link를 사용하여 트리 구조를 검색 할 수 있다는 것을 알고 있습니다 ...하지만 커널에 의존하지 않는 것을 찾고 있습니다.

+0

아마도 누군가 ANTLR에 파서를 작성 했습니까? – Nestor

+1

Mathematica 파서가 있습니다 (적어도 설명은 http://www.cs.berkeley.edu/~fateman/에 링크되어 있습니다) Common Lisp로 작성되었으므로, 내가 아는 한 CLR/.NET 구현. – Pillsy

답변

6

matheclipse-parser module은 자바로 파서를 구현하여 mathematica 표현식의 큰 하위 집합을 구문 분석 할 수 있습니다. 사용법은 readme.md 페이지를 참조하십시오. 어쩌면 파서를 C#으로 포팅 할 수 있을까요?

0

나는 그런 것들이 이미 존재한다고 생각하지 않는다. (나는 그것에 대해 알고 싶다). 그러나 Mathematica 내에서 어떤 표현식에 대해서도 함수 FullForm을 적용 할 수 있으며, Lisp에서 s- 표현식과 같은 일종의 구문 분석이 매우 쉽다는 점이 유용 할 수 있습니다. 예를 들어,

FullForm[a+b*c] 

모든 티카 표현의 기본 표현을 그리고 구문 분석 간단합니다

Plus[a, Times[b,c]] 

를 얻을 수 있습니다.

+0

예.하지만 나는 커널이 필요합니다. 어쨌든 ... 나는 네가 옳다고 생각해. 그러한 파서는 존재하지 않는 것 같습니다. 문제의 일부는 언어에 대해 발표 된 문법이 없다는 것입니다. 나는 또한 언어가 LALR 파서로 파싱 될 수 없다는 말을 들었다. – Nestor

1

mathematica 문법은 잘 설명되어 있지 않습니다. 하지만 AFAIK는 LALR (1) 및 LL (1); 괄호로 묶은/태그가 지정된 구문은 파서에게 LISP 및 XML과 마찬가지로 다음에 무엇을 기대할 지에 대한 단서를 제공합니다 ( ).

DMS Software Reengineering Toolkit에는 실제 작업에 사용 된 Mathematica 문법이 있습니다. 여기에는 순수 표현 형식뿐만 아니라 MMa 프로그램이 포함됩니다.

C#으로 원하기 때문에 아마도 도움이되지 않습니다.

당신이 Kernal에 액세스 할 수 있다면 나는 그것에 충실 할 것입니다.

16

필자는 Wolfram Research의 계약에 따라 OCaml 코드 300 줄에 Mathematica 파서를 작성했으며 문법이 clearly documented in their literature이고 Mathematica 자체로 재생하면 모호함을 쉽게 발견 할 수 있기 때문에 매우 쉽다는 것을 알게되었습니다.

+0

정말요? 흥미 롭 군. 왜 그들은 그들의 언어에 대한 파서를 원했을까요? 그들은 이미 그것을 가지고 있습니다, 그렇지 않습니까? – Nestor

+2

C로 작성된 Mathematica 파서는 OCaml로 작성된 Mathematica 파서보다 약 100 배 더 길다. 당시 Wolfram Workbench의 핵심은 파서를 포함하여 Mathematica의 원래 C 소스를 자바로 재 작성한 것으로 Wolfram Workbench의 핵심 요소였습니다. 특히이를 단순화하는 데 사용할 수있는 기법에 관심이있었습니다. –

+0

그건 매혹적인 존이야. 공유해 주셔서 감사합니다. 당신은 ANTLR 파서를 다시 작성하고 우리와 공유해야합니다 :-) (BTW, 나는 당신을 downvote didnt) – Nestor

관련 문제