나는이 거대한 Maude 문자열을 가지고 있습니다.파서 작성 방법은 무엇입니까?
NamedElements
(
(
NamedElement
(
SpecTable
(
SpecColumns
(
(
SpecColumn
(
Name
(
"Id"
)
,
TypeVarChar
(
18
)
)
,
SpecColumn
(
name
(
"IsDeleted"
)
,
DataTypeBit
)
... ...
단 한 가지라고 NamedElements있다 : 이것은 그것의 작은 조각이다. 여기에는 많은 NamedElement 객체가 있습니다. 형식은 이해하기 쉽습니다. 이를 위해 파서 (parser)를 작성하여 Name과 같은 이름을 가진 모든 SpecColumn 객체를 얻는 것과 같은 작업을 수행 할 수 있어야합니다. 나는 이것을하는 최고의 방법을 확신하지 못한다.
내가 생각 한 몇 가지 :... 나는이 '('나는 새로운 객체가 나는 위의 객체에 속성으로이 개체를 추가 할 찾을 때까지 각 문자를 통해
루프가 나는 지속될 일치하는 찾을 때까지 ')'. 그러면 해당 객체에있는 내용이 마무리됩니다.
는 기본적으로, 내가 전에 이런 일을 해본 적이 없다,이 일을 몇 가지 설정 방법이 있는지 궁금 해서요, 또는 내가 위에서 설명한 것처럼 뭔가를해야 할 것인가?
https://en.wikipedia.org/wiki/Recursive_descent_parsing –
죄송합니다,이 질문에 잘 스택 오버플로의 범위에 적합하지 않지만, 여기에 몇 가지 제안 사항 : 1. 구글은 "재귀 하강 파서 ", 가장 쉬운 파싱 기술이며 많은 예제 구현을 찾을 수 있습니다. 2. 내가 작성한 [지나치게 간단한 JSON 구문 분석기] (https://github.com/H2CO3/libjsonz/tree/master/src/jsonz.c)를 살펴보십시오. –
문법을 지정하는 데 사용할 수있는 훌륭한 라이브러리가 있습니다. 언어에 대한 아이디어는 더 많은 지침을 제공하는 데 도움이되지만, C++에 대한 나의 추천이 될 것입니다. 그것도 놀라 울 정도로 빠릅니다. – OllieB