문제

에 따르면 ECMA스크립트 사양 섹션에서 7.8.1NullLiteral 다음과 같이 정의됩니다:

NullLiteral :: 
    없는

내가 이해하려고 하는 것은 이것이 트리 형태로 어떻게 표현되는지입니다. NullLiteral 섹션에 있는 다음 작품에 포함되어 있습니다. 7.6.1 그리고 7.8.

ReservedWord :: 
    Keyword 
    FutureReservedWord 
    NullLiteral 
    BooleanLiteral 
Literal :: 
    NullLiteral 
    BooleanLiteral 
    NumericLiteral 
    StringLiteral 

어떻게 보일지에 대한 나의 최선의 추측은 다음과 같습니다.

InputElementDiv
    |
  Token
    |
IdentifierName
    |
ReservedWord 
    |
 Literal 
    |
NullLiteral 
    |
   없는

하지만 이것은 나에게 옳지 않은 것 같습니다.

메모

내 연구에 따르면 실제로 언어 문법에서 CST를 생성하는 컴파일러는 거의 없는 것 같습니다.물론 그 이유를 이해할 수는 있지만 이것은 나에게 학습 연습이므로 파서 생성기 사용과 같은 보다 전문적인 구문 분석 수단으로 이동하기 전에 이 내용을 바로 익히고 싶습니다.

도움이 되었습니까?

해결책

표시된 트리는 문법에 포함되지 않습니다. 왜냐하면 문법은 파생을 제공하지 않기 때문입니다. IdentifierName 에게 ReservedWord, 그리고 파생을 제공하지 않습니다 ReservedWord 에게 Literal 어느 하나.

그만큼 ReservedWord 실제로 생산은 유효한 값을 제한하는 데에만 사용됩니다. IdentifierName, 이는 어휘 수준에서 확인되어야 합니다.CST로 만들지는 않습니다. 여기서는 IdentifierName.

Literal의 컨텍스트는 PrimaryExpression이므로 실제 CST의 일부는 다음과 같습니다.

   ...
    |
PrimaryExpression
    |
 Literal 
    |
NullLiteral 
    |
   null
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top