재귀 파생 파서의 런타임에 대해 더 자세히 알고 싶습니다. 나는 또한 재귀 적 파서 (그리고 런타임과 스택 공간 사이의 절충)에 의해 사용되는 스택 공간에 관심이있다. 좋은 정보 출처는 무엇입니까? 나는 wikipedia article을 읽고 웹에서 검색했지만 자세한 내용은 발견하지 못했습니다.
주로 학습을 목적으로 재귀 적으로 괜찮은 파서를 하드 코딩하고 있습니다. 몇 가지 문제가 있습니다. 나는 예제로 CSS3 문법에서이 발췌를 사용합니다 : simple_selector = type_selector | universal;
type_selector = [ namespace_prefix ]? element_name;
namespace_prefi
응용 프로그램의 경우 산술 표현식과 변수를 사용하여 String을 구문 분석하려고합니다. 다음 문자열을 상상해보십시오 : ((A + B) * C)/(D - (E * F))
그래서 여기에는 실제 정수/이중 값이 없습니다. 첫 번째 자리 표시자를 가져 와서 자리 표시 자에 값을 넣고 (예를 들어 데이터베이스 쿼리를 통해) 다음 자리 표시자를 계속 진행할 수
현재 프로그래밍 언어 용 (아주) 작은 인터프리터/컴파일러를 작성하려고합니다. 언어에 대한 구문을 설정 했으므로 언어의 문법을 적어 둘 필요가 있습니다. 나는 약간의 연구 끝에 LL (1) 파서를 사용하는 것이 가장 쉬운 방법이라고 생각하기 때문에 LL (1) 파서를 사용하려고합니다. 본인은이 도메인에 익숙하지 않지만 수집 한 내용에서 BNF 또는 EBNF
숙제를위한 정규 표현식을위한 재귀 괜찮은 파서를 개발하려고합니다. 난 그냥 개발 한 문법이 정확한지 사회를 물어보고 싶은게 아니면 내가 곧 정상 궤도에있어 경우 : (최고에 나열된 순서에서 : -= Regex Grammar (EBNF) =-
<start> -> <expr> '\n'
<expr> -> <expr> { '|' <term> }
필자는 렉서가 소스 코드를 읽고 토큰을 생성 한 다음 파서로 보내지고 파서가 문법 프로덕션에서 터미널 심볼로 사용하는 렉서 및 파서의 일반적인 구성을 알고 있습니다. 일반적인 재귀 - 하강 파서에서는, 시작하는 비단 말을 나타내는 몇 가지 최상위 함수를 호출하는 것으로 시작합니다.이 함수는 다른 사람을 호출하고 렉서에서 토큰으로 토큰을 읽습니다. 그러나 내
Left recursion은 재귀 적 파생 구문 분석의 기초 위에 구축 된 많은 파서 생성기에서 큰 문제인 것으로 보입니다. 내가 그것을 지원하는 PEG 기반 파서 생성기를 찾고 있어요 - 어떤 언어로. http://tratt.net/laurie/research/publications/papers/tratt__direct_left_recursive_pars
각 재귀는 고정 : I는 n 차 나무 각 재귀 내 자신을 쓰기에 문제가있어 수정 편집 얘들 아, 를 참조하십시오. @element은 노드의 값이고 @children은 연결된 모든 하위 노드의 배열입니다. 이것은 내 방법입니다 : def each
yield(@element)
@children.each { |x|
x.each { |