this 자습서에 따라 IntelliJ Idea에 대한 UnrealScript
언어 (O-style, C 스타일 구문)에 대한 지원을 추가하려고합니다. 그러나 문법 및 렉서 생성에 어려움을 겪고 있습니다. this .bnf 파일 (5 호선)에서IntelliJ 플랫폼 언어 플러그인 개발 관련 질문
extends(".*expr")=expr
:특히,의 목적은 무엇인가?
name(".*expr")='expression'
this 문서 끝에있는 sample.bnf 파일?
일단 나는 작동중인 C 스타일의 문법을 갖기 위해 .bnf 파일에 고전적인 C 구문을 적용하고 있습니다. 나는 위에서 언급 한 언어에 따라 그것을 조정할 수 있습니다. Here은 제가 지금까지 해왔 던 것입니다. 나는 this 페이지에서 그것을 적용하고 있는데, 생성기가 지원하지 않는 왼쪽 재귀를 많이 사용하게된다. 따라서 어떻게 다음 규칙을 비 재귀 적으로 변환 할 수 있습니까?
logical-or-expression ::= logical-and-expression
| logical-or-expression '||' logical-and-expression
약간 더 정교한이 약은 어떻습니까?
direct-abstract-declarator ::= '(' abstract-declarator ')'
| {direct-abstract-declarator}? '[' {constant-expression}? ']'
| {direct-abstract-declarator}? '(' {parameter-type-list}? ')'
그러나이 외에도에서
, 나는 내가 그렇게 더 일반적으로, 달성하기 위해 노력하고있어 이론의 거대한 부족을 느낄 인 IntelliJ 플랫폼에 언어 지원을 추가하기위한 이론적 전제 조건은 무엇인가 ? 지금까지, 나는 일반적인 bnf/ebnf 표기법으로 만 친숙 해졌다. 용 도서를 읽을 필요가 있습니까? 그렇다면 컴파일러를 작성하지 않으므로 어떤 장을 집중해야합니까?