@@ -51,6 +51,7 @@ public void Dispose( )
5151 Context . Dispose ( ) ;
5252 }
5353
54+ // <Generate>
5455 public Value Generate ( Parser parser , IParseTree tree , DiagnosticRepresentations additionalDiagnostics )
5556 {
5657 if ( parser . NumberOfSyntaxErrors > 0 )
@@ -60,17 +61,21 @@ public Value Generate( Parser parser, IParseTree tree, DiagnosticRepresentations
6061
6162 return Visit ( tree ) ;
6263 }
64+ // </Generate>
6365
6466 public override Value VisitParenExpression ( [ NotNull ] ParenExpressionContext context )
6567 {
6668 return context . Expression . Accept ( this ) ;
6769 }
6870
71+ // <VisitConstExpression>
6972 public override Value VisitConstExpression ( [ NotNull ] ConstExpressionContext context )
7073 {
7174 return Context . CreateConstant ( context . Value ) ;
7275 }
76+ // </VisitConstExpression>
7377
78+ // <VisitVariableExpression>
7479 public override Value VisitVariableExpression ( [ NotNull ] VariableExpressionContext context )
7580 {
7681 string varName = context . Name ;
@@ -81,6 +86,7 @@ public override Value VisitVariableExpression( [NotNull] VariableExpressionConte
8186
8287 return value ;
8388 }
89+ // </VisitVariableExpression>
8490
8591 public override Value VisitFunctionCallExpression ( [ NotNull ] FunctionCallExpressionContext context )
8692 {
@@ -94,6 +100,7 @@ public override Value VisitFunctionCallExpression( [NotNull] FunctionCallExpress
94100 return InstructionBuilder . Call ( function , args ) . RegisterName ( "calltmp" ) ;
95101 }
96102
103+ // <FunctionDeclarations>
97104 public override Value VisitExternalDeclaration ( [ NotNull ] ExternalDeclarationContext context )
98105 {
99106 return context . Signature . Accept ( this ) ;
@@ -103,6 +110,7 @@ public override Value VisitFunctionPrototype( [NotNull] FunctionPrototypeContext
103110 {
104111 return GetOrDeclareFunction ( new Prototype ( context ) ) ;
105112 }
113+ // </FunctionDeclarations>
106114
107115 // <VisitFunctionDefinition>
108116 public override Value VisitFunctionDefinition ( [ NotNull ] FunctionDefinitionContext context )
@@ -129,6 +137,7 @@ public override Value VisitTopLevelExpression( [NotNull] TopLevelExpressionConte
129137 }
130138 // </VisitTopLevelExpression>
131139
140+ // <VisitExpression>
132141 public override Value VisitExpression ( [ NotNull ] ExpressionContext context )
133142 {
134143 // Expression: PrimaryExpression (op expression)*
@@ -141,6 +150,7 @@ public override Value VisitExpression( [NotNull] ExpressionContext context )
141150
142151 return lhs ;
143152 }
153+ // </VisitExpression>
144154
145155 // <VisitConditionalExpression>
146156 public override Value VisitConditionalExpression ( [ NotNull ] ConditionalExpressionContext context )
@@ -158,7 +168,7 @@ public override Value VisitConditionalExpression( [NotNull] ConditionalExpressio
158168
159169 var thenBlock = Context . CreateBasicBlock ( "then" , function ) ;
160170 var elseBlock = Context . CreateBasicBlock ( "else" ) ;
161- var phiMergeBlock = Context . CreateBasicBlock ( "ifcont" ) ;
171+ var continueBlock = Context . CreateBasicBlock ( "ifcont" ) ;
162172 InstructionBuilder . Branch ( condBool , thenBlock , elseBlock ) ;
163173
164174 // generate then block
@@ -169,7 +179,7 @@ public override Value VisitConditionalExpression( [NotNull] ConditionalExpressio
169179 return null ;
170180 }
171181
172- InstructionBuilder . Branch ( phiMergeBlock ) ;
182+ InstructionBuilder . Branch ( continueBlock ) ;
173183
174184 // capture the insert in case generating else adds new blocks
175185 thenBlock = InstructionBuilder . InsertBlock ;
@@ -183,12 +193,12 @@ public override Value VisitConditionalExpression( [NotNull] ConditionalExpressio
183193 return null ;
184194 }
185195
186- InstructionBuilder . Branch ( phiMergeBlock ) ;
196+ InstructionBuilder . Branch ( continueBlock ) ;
187197 elseBlock = InstructionBuilder . InsertBlock ;
188198
189- // generate PHI merge block
190- function . BasicBlocks . Add ( phiMergeBlock ) ;
191- InstructionBuilder . PositionAtEnd ( phiMergeBlock ) ;
199+ // generate continue block
200+ function . BasicBlocks . Add ( continueBlock ) ;
201+ InstructionBuilder . PositionAtEnd ( continueBlock ) ;
192202 var phiNode = InstructionBuilder . PhiNode ( function . Context . DoubleType )
193203 . RegisterName ( "iftmp" ) ;
194204
@@ -294,6 +304,7 @@ public override Value VisitForExpression( [NotNull] ForExpressionContext context
294304
295305 protected override Value DefaultResult => null ;
296306
307+ // <EmitBinaryOperator>
297308 private Value EmitBinaryOperator ( Value lhs , BinaryopContext op , IParseTree rightTree )
298309 {
299310 var rhs = rightTree . Accept ( this ) ;
@@ -335,6 +346,7 @@ private Value EmitBinaryOperator( Value lhs, BinaryopContext op, IParseTree righ
335346 throw new CodeGeneratorException ( $ "Invalid binary operator { op . Token . Text } " ) ;
336347 }
337348 }
349+ // </EmitBinaryOperator>
338350
339351 // <InitializeModuleAndPassManager>
340352 private void InitializeModuleAndPassManager ( )
0 commit comments