From 86d3ca5317ac777b6c54c633e568926be3dcee47 Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Mon, 13 Sep 2010 17:48:02 +0000 Subject: [PATCH] Update 'docs/PCHInternals.html' about how subexpressions are stored. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113760 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/PCHInternals.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/PCHInternals.html b/docs/PCHInternals.html index 109d5ed025..d46ae5ceec 100644 --- a/docs/PCHInternals.html +++ b/docs/PCHInternals.html @@ -391,23 +391,23 @@ precompiled header, which contains the serialized representation of that statement or expression. Each substatement or subexpression within an expression is stored as a separate record (which keeps most records to a fixed size). Within the precompiled header, the -subexpressions of an expression are stored prior to the expression +subexpressions of an expression are stored, in reverse order, prior to the expression that owns those expression, using a form of Reverse Polish Notation. For example, an expression 3 - 4 + 5 would be represented as follows:

- + + -
IntegerLiteral(3)
IntegerLiteral(5)
IntegerLiteral(4)
IntegerLiteral(3)
BinaryOperator(-)
IntegerLiteral(5)
BinaryOperator(+)
STOP

When reading this representation, Clang evaluates each expression -record it encounters, builds the appropriate abstract synax tree node, +record it encounters, builds the appropriate abstract syntax tree node, and then pushes that expression on to a stack. When a record contains N subexpressions--BinaryOperator has two of them--those expressions are popped from the top of the stack. The special STOP -- 2.40.0