추상 구문 트리가 메모리에서 어떻게 발생하는지, 각 구문의 트리가 될 것인가, 아니면 단일 루트 트리가 될 것인가를 결정하는 데 문제가 있습니까? .AST for this Mini-language
샘플 소스 :
P: 10
if A < 15:
P: 9
다음은 BNF-문법입니다 : SPC
흰색 공간과 NL
개행 문자를 나타냅니다
<Prog> ::= <Stmts>
<Stmts> ::= <Stmt> | <Stmt> <Stmt>
<Stmt> ::= <IfStmt> NL | <AssignStmt> NL
<AssignStmt> ::= <Id> : <Aexp> | <Indents> <AssignStmt>
<IfStmt> ::= if <Lexp> : NL <Stmts> | <Indents> <IfStmt>
<Aexp> ::= <Id> | <Int> | <Aexp> <AOP> <Aexp>
<Lexp> ::= <Aexp> <LOP> <Aexp>
<LOP> ::= < | > | &
<AOP> ::= + | - | * |/
<Int> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | <Int> <Int>
<Id> ::= A | B | C | D | E | F | P
<Indents> ::= SPC | SPC <Indents>
. 예, 7 개의 식별자 만 허용합니다. 그리고 양의 정수.
쉽게 알아볼 수 있지만 많은 부분을 검색했지만 대부분의 AST 예제는 이해하기 쉽지 않은 수학적 표현만을 사용합니다. 문법이 잘못되었다고 생각되면 그렇게 말하십시오. 또한 문법은 파이썬에서 영감을 얻었습니다. 나는 Lexical Analysis 문서를 읽었지 만 단어 트리는 언급하지 않았습니다.
미리 감사드립니다.
답장을 보내 주셔서 감사합니다. 예를 들어 어떤 언어로 트리 구조를 사용하는 것이 좋습니까? 정확히 명세서의 관계로 간주되는 것은 무엇입니까? – Triztian
내 대답에 명확한 부분이 있습니까? –
아니요, 저는 귀하의 답변에 대해 더 깊이 생각해 왔으며 매우 명확합니다. 감사. – Triztian