나는 최근에 나만의 프로그래밍 언어를 만들고 싶어 파서 세계에 대해 심도있게 뛰어 들었다. 그러나 파서 작성에는 두 가지 방법이 있습니다. 파서 생성기 및 파서 조합기. 흥미롭게도, 어떤 경우에 어떤 접근 방식이 더 나은지 설명하는 자료를 찾을 수 없었습니다. 오히려, 많은 자원 (과 사람들은) 나는 주제 만 설명하는 다른 방법을 알고하지 …
나는 AST의 목표를 이해하고 있다고 생각하며, 전에 몇 가지 트리 구조를 구축했지만 결코 AST는 아닙니다. 노드가 텍스트가 아니고 숫자가 아니기 때문에 혼란 스럽습니다. 그래서 코드를 파싱 할 때 토큰 / 문자열을 입력하는 좋은 방법을 생각할 수 없습니다. 예를 들어, AST의 다이어그램을 볼 때 변수와 값은 등호의 리프 노드였습니다. 이것은 나에게 …
나는 위키 피 디아에서 GCC 컴파일러 스위트에 대해 연구했다 여기 이가 왔을 때 : GCC는 Bison으로 생성 된 LALR 파서를 사용하기 시작했지만 점차 손으로 쓰는 재귀-강하 파서로 전환했다. 2004 년 C ++, 2006 년 C 및 Objective-C 용. 현재 모든 프런트 엔드는 손으로 쓴 재귀-강하 파서를 사용합니다. 마지막 문장으로 (그리고 …
HTML을 만들 때 왜 엄격한 구문 분석이 선택되지 않았는지 궁금합니다. 대부분의 인터넷 기록에서 브라우저는 모든 종류의 마크 업을 허용했으며이를 분석하기 위해 최선을 다했습니다. 이 프로세스는 성능을 저하시키고 사람들이 횡설수설을 할 수있게하며 쓸모없는 기능을 중단하는 것을 어렵게 만듭니다. HTML이 엄격하게 구문 분석되지 않는 특별한 이유가 있습니까?
C ++ 11에는 std::sto@문자열에서 무엇이든 int / floats / longs를 쉽게 풀 수있는 함수 군 이 있다는 것을 알았습니다 . 그러나 그 반대가 시행되지 않는다는 것에 놀랐습니다. 표준위원회에 왜 std::itosints / floats / what (뒤로)에서 현으로가는 기능 군이 포함되지 않았 습니까?
주석은 일반적으로 프로그래밍 언어 및 마크 업에서 어떻게 처리됩니까? 일부 사용자 정의 마크 업 언어에 대한 파서를 작성하고 있으며 가장 놀랄만 한 원칙 을 따르고 싶습니다 . 따라서 일반적인 규칙을 결정하려고합니다. 예를 들어, 토큰에 포함 된 주석이 토큰과 '간섭'해야합니까? 일반적으로 다음과 같습니다. Sys/* comment */tem.out.println() 유효한? 또한 언어가 줄 바꿈에 …
"Inglish"라는 엄청나게 강력한 파서를 특징으로하는 텍스트 어드벤처 게임 인 Hobbit 에 대해 흥미를 느꼈습니다. 잉글리쉬는 "호기심 많은지도에 대해 간달프에게 물어보고 검을 들고 트롤을 죽여라"와 같은 고급 문장을 입력 할 수 있도록 허용했다. 파서는 복잡하고 직관적으로 대명사, 부사 ( "고블린을 악의적으로 공격"), 구두점 및 전치사를 도입했으며 플레이어가 이전에는 불가능했던 방식으로 게임 …
메모리 (및 리소스 잠금)는 프로그램 실행 중 결정적인 지점에서 OS로 반환됩니다. 프로그램 자체의 제어 흐름은 주어진 리소스를 할당 해제 할 수있는 위치를 알기에 충분합니다. 인간 프로그래머가 fclose(file)프로그램을 수행 할 때 작성 위치를 알고있는 것처럼. GC는 제어 흐름이 실행될 때 런타임 중에 직접 파악하여이 문제를 해결합니다. 그러나 제어 흐름에 대한 진실의 …
기존 파서는 전체 입력을 소비하고 단일 파싱 트리를 생성합니다. 연속 스트림을 소비하고 구문 분석 포리스트를 생성하는 스트림을 찾고 있습니다 [ 편집 :이 용어를 사용하는 것이 왜 전통적이지 않은지에 대한 의견의 토론 참조 ]. 내 직감은 내가 그런 파서 를 필요로하는 (또는 내가 필요 하다고 생각할 수있는) 사람이 될 수 없다고 …
회사에 중요한 도구가 될 도메인 특정 언어를 구현하는 임무를 맡았습니다. 이 언어는 단순하지만 사소한 것이 아니라 이미 중첩 루프, 문자열 연결 등을 허용하며 프로젝트가 진행됨에 따라 다른 구문이 추가 될 것입니다. 나는 문법이 사소한 것이 아닌 한, 직접 렉서 / 파서를 작성하는 것은 시간이 걸리고 오류가 발생하기 쉬운 프로세스라는 것을 …
총 이미지를 파악하는 단계적으로 컴파일과 해석을 이해하려고합니다. 그래서 http://www.cs.man.ac.uk/~pjj/farrell/comp3.html 이 기사 를 읽는 동안 질문을했습니다 . 그것은 말한다 : 컴파일러의 다음 단계를 파서라고합니다. 컴파일러의이 부분은 언어의 문법을 이해합니다. 구문 오류를 식별하고 오류가없는 프로그램을 다른 언어로 해석하거나 작성할 수있는 내부 데이터 구조로 변환합니다. 그러나 토크 나이저가 구문 오류가있는 주어진 스트림을 올바르게 …
학습 목적으로 프로그래밍 언어를 작성하는 중입니다. 나는 이미 내 언어의 하위 집합에 대한 렉서와 재귀 강하 파서를 썼다 (나는 현재 + - * /괄호 와 같은 수학 표현을 지원한다 ). 파서는 나에게 추상 구문 트리를 다시 건네주고, 여기 Evaluate에서 표현식의 결과를 얻기 위해 메소드를 호출한다 . 모든 것이 잘 작동합니다. …
이 질문은 Software Engineering Stack Exchange에서 답변을 얻을 수 있기 때문에 Stack Overflow에서 마이그레이션 되었습니다. 7 년 전에 이주했습니다 . 문제 : 문자열 형태로 명령을 실행하십시오. 명령 예 : /user/files/ list all; 다음과 같습니다. /user/files/ ls -la; 다른 것: post tw fb "HOW DO YOU STOP THE TICKLE MONSTER?;" 다음과 …
펜 및 종이 스타일 RPG 시스템을위한 일반 규칙 파서를 만들고 싶습니다. 규칙은 일반적으로 주사위의 1 ~ N 개의 엔티티 1 ~ N 개의 역할과 엔티티의 여러 속성을 기반으로 값을 계산할 수 있습니다. 예를 들면 다음과 같습니다. 플레이어는 STR 18을 가지고 있으며, 현재 장착 된 무기는 +1 STR의 보너스를 주지만 DEX …