Java 프런트 엔드와 함께 DSL을 가지고 있으며 백 엔드 파트를 더 쉽게 작성할 수 있도록 프런트 엔드 부분에서 얻을 수있는 AST를 직렬화하고 싶습니다. 다른 프로그래밍 언어로 코드를 생성합니다. 이 목적을 위해 XML보다 나은 것이 있습니까?AST를 구문 분석 가능한 형식으로 serialize
2
A
답변
4
XML은 많은 텍스트를 생성하며 대서양 횡단은 엄청나게 커질 수 있습니다. (필자는 파서를 만들고 파서는 XML을 생성 할 것입니다. 왜냐하면 고객이 요구했기 때문입니다 ...하지만 실제로 사용하지는 않습니다. IMHO, AST를 읽고 쓰는 데 걸리는 시간을 피하기 위해 나무를 조밀하게 인코딩하는 사용자 지정 형식을 디자인하는 것이 좋습니다. 예를 들어, 침전 수에 대한 :
(nodetype =value childnodes)
곳() 괄호 (트리 노드를 열고과 함께 NODETYPE은 어쩌면 글자 수를 최소화하기 위해 높은 기수 형식의 노드 유형을 [나타내는 정수입니다 ], =는 노드가 값을 가지고 있다면 존재한다. (생각하면 = 기호가 필요 없다.) 값이 제공된다. 자식 노드는 닫히기 전에 인라인된다. 그들이 존재한다면, 분명히 왼쪽 빤으로 시작합니다. 필요한 공간이 없습니다! 실제로 을 읽어야 할 때 가끔이라고 읽으면, 괄호를 들여 쓰기 위해 간단한 벙어리 도구를 만들 수 있습니다.
[오래된 타이머는 이것을 LISP S- 표현식으로 인식 할 것이고, 이것은 1950 년대 후반부터 트리 인코딩으로 사용되어 왔습니다].
(우리는 나무를 읽고 쓰는 것이 얼마나 비용이 많이 들더라도 값 비싸기 때문에 메모리에있는 트리를 처리하고 최종 답변을 내뱉는 것이 더 쉽고 효율적입니다. .
관련 문제
- 1. 구문 분석 가능한 형식으로 Bacula 상태 가져 오기
- 2. JSON을 데이터 교환 형식으로 구문 분석
- 3. serialize 된 구문 분석 중 <string, string> jquery
- 4. HTML을 인쇄 가능한 형식으로
- 5. xml을이 형식으로 구문 분석하는 방법
- 6. ConfigObj 방법은 내가 형식으로 설정 파일을 구문 분석 ConfigObj를 사용
- 7. 구문 분석 HTTP 데이터
- 8. 구문 분석 XML 파일
- 9. 구문 분석 또는
- 10. C++ 구문 분석 INT
- 11. CLR 개체 형식이 serialize 가능한 이유는 무엇입니까?
- 12. iOS 파일 구문 분석
- 13. 구문 오류가있는 코드 구문 분석
- 14. 구문 분석/구문 분석이란 무엇입니까?
- 15. 구문 분석 오류 : 구문 오류
- 16. PHP XML 구문 분석
- 17. 구문 분석 JSON 응답 문제
- 18. Xerces를 사용하여 XSD 구문 분석
- 19. Ruby에서 이진 파일 구문 분석
- 20. iphone을위한 간단한 html 구문 분석
- 21. crontab 스타일 줄 구문 분석
- 22. PHP를 바꾸지 않고 구문 분석
- 23. 구문 분석 JSON 아이폰 OS
- 24. antlr3 AST를 serialize하는 방법
- 25. 파이썬 AST를 메소드로 컴파일
- 26. VB6 : HTML 구문 분석 용 (HTML 구문 분석 용)
- 27. libxml2를의 HTML 구문 분석 내가 HTML을 구문 분석 libxml2를 사용하고
- 28. PHP를 구문 분석 한 다음 asp.net을 구문 분석
- 29. 구문 분석 오류 : 구문 분석 오류, PHP 루프 예상
- 30. 파이썬 docstring 구문 분석 (일반적으로 파이썬에서 언어 구문 분석)
나는 거의 항상 위에 설명 된 것과 비슷한 S- 표현식을 사용합니다. 이렇게하면 백엔드 생성은 함수 바인딩 및 평가를 사용하여 수행 할 수 있습니다. (예를 들어, 1 + 2는 (+ 1 2)가되고 "+"는 그 자체에 대해 "1"과 "2"를 생성하는 것을 알고있는 funtion으로 평가됩니다.) 직렬화를 더 빨리하는 postfix 표현식을 사용할 수도 있습니다 그러나 스택 머신이 아닌 다른 것으로 백엔드하기가 어렵고 읽기가 더 어렵습니다. – TechNeilogy