compiler/PPCMappedActionNode.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 16 Jun 2015 06:45:26 +0100
changeset 489 0ca7a70db0f5
parent 481 34ee0d3c72e7
child 498 f208cca9aea2
permissions -rw-r--r--
Fix in codegen for inlined sequence nodes. For inlined sequence nodes, generate nested ifs rather than sequential code which does not work when inlined. The reason is that #codeReturn: in inline generates instvar assignment, not method return, so in sequential code the next child of a sequence will be probed even if previous failed. If that happends, the whole sequence fail and therefore we must generate nested ifs to correctly handle this w.r.t. inlining.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
481
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/compiler' }"
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Smalltalk }"
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
PPCActionNode subclass:#PPCMappedActionNode
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:''
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'PetitParser-Parsers'
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
489
0ca7a70db0f5 Fix in codegen for inlined sequence nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 481
diff changeset
    12
481
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
!PPCMappedActionNode methodsFor:'visiting'!
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
accept: visitor
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
    ^ visitor visitMappedActionNode: self
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    "Created: / 02-06-2015 / 17:27:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
! !
34ee0d3c72e7 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
489
0ca7a70db0f5 Fix in codegen for inlined sequence nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 481
diff changeset
    21
!PPCMappedActionNode class methodsFor:'documentation'!
0ca7a70db0f5 Fix in codegen for inlined sequence nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 481
diff changeset
    22
0ca7a70db0f5 Fix in codegen for inlined sequence nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 481
diff changeset
    23
version_HG
0ca7a70db0f5 Fix in codegen for inlined sequence nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 481
diff changeset
    24
0ca7a70db0f5 Fix in codegen for inlined sequence nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 481
diff changeset
    25
    ^ '$Changeset: <not expanded> $'
0ca7a70db0f5 Fix in codegen for inlined sequence nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 481
diff changeset
    26
! !
0ca7a70db0f5 Fix in codegen for inlined sequence nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 481
diff changeset
    27