jjryu 2013. 7. 18. 20:10

추상 구문 트리 노드



AST -> Node

.declarations()

.definitions()

.definedVariables() // (글로벌) 변수 정의 리스트

.constants() // 정수  정의 리스트

.definedFunctions() // 함수 정의 리스트

구조체  정의 리스트

공용체  정의 리스트

유저형  정의 리스트


BlockNode -> StmtNode

.variables() // 블록으로 선언된 변수

.stmts()



Token

.image


Type <-

ArrayType

FunctionType

IntegerType

NamedType

PointerType

VoidType


TypeRef <-

ArrayTypeRef

FunctionTypeRef

IntegerTypeRef

PointerTypeRef

StructTypeRef

UnionTypeRef

UserTypeRef

VoidTypeRef


Node <-

AST

TypeDefinition <-

CompositeTypeDefinition <-

StructNode

UnionNode

TypedefNode

StmtNode <-

BlockNode

IfNode

WhileNode

ExprNode <-

CondExprNode // 조건 연산식

BinaryOpNode

LogicalOrNode

LogicalAndNode

UnaryOpNode <-

UnaryArithmeticOpNode <-

PrefixOpNode

SuffixOpNode

LHSNode <-

VariableNode // 변수 참조식

DereferenceNode // 포인터 참조식

ArefNode // 배열 참조식

MemberNode // 멤버 참조식

PtrmemberNode // 멤버 참조식

LiteralNode <-

IntegerLiteralNode

StringLiteralNode

AddressNode // 주소식

SizeofTypeNode

SizeofExprNode

FuncallNode // 함수 호출식

CastNode

TypeNode