ByteCodeCompilerWithBreakpointSupport.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 28 Jun 2011 21:58:50 +0200
changeset 2498 43bfd25f2552
child 2537 72fde5f496de
permissions -rw-r--r--
Initial checkin

"
 COPYRIGHT (c) 2006 by eXept Software AG
	      All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"
"{ Package: 'stx:libcomp' }"

ByteCodeCompiler subclass:#ByteCodeCompilerWithBreakpointSupport
	instanceVariableNames:'breakpoints'
	classVariableNames:''
	poolDictionaries:''
	category:'System-Compiler-Debugging'
!

!ByteCodeCompilerWithBreakpointSupport class methodsFor:'documentation'!

copyright
"
 COPYRIGHT (c) 2006 by eXept Software AG
	      All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"
!

documentation
"
    I'm an experimental compiler class that supports
    breakpoints. Once tested, the code will be merged
    to ByteCodeCompiler.

    [author:]
        Jan Vrany <jan.vrany@fit.cvut.cz>

    [instance variables:]

    [class variables:]

    [see also:]

"
! !

!ByteCodeCompilerWithBreakpointSupport methodsFor:'parsing-expressions'!

expression

    | expr bpnt |
    (breakpoints notEmpty
        and:[breakpoints first position < source position])
            ifTrue:[bpnt := breakpoints removeFirst].
    expr := super expression.

    bpnt ifNil:[^expr].

    ^BreakpointNode new
        breakpoint: bpnt;
        expression: expr;
        yourself

    "Created: / 16-06-2011 / 14:58:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!ByteCodeCompilerWithBreakpointSupport methodsFor:'private'!

notifying: anObject

    super notifying: anObject.
    breakpoints := anObject perform: #breakpoints ifNotUnderstood:[#()].
    breakpoints := breakpoints copy sort:[:a :b|a position < b position].

    "Created: / 16-06-2011 / 14:35:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!ByteCodeCompilerWithBreakpointSupport class methodsFor:'documentation'!

version_CVS
    ^ '$Header: /cvs/stx/stx/libcomp/ByteCodeCompilerWithBreakpointSupport.st,v 1.1 2011-06-28 19:58:50 vrany Exp $'
!

version_SVN
    ^ ' Id '
! !