devtools/PPCompositeParserGenerator.st
author sr
Thu, 05 Jul 2018 09:23:34 +0200
changeset 628 379fc127ba99
parent 124 fc28ffa9eb82
permissions -rw-r--r--
order
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
100
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/devtools' }"
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Object subclass:#PPCompositeParserGenerator
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
	instanceVariableNames:'productions klass changeset'
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
	classVariableNames:''
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	poolDictionaries:''
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	category:'PetitParser-Utils'
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
!
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
!PPCompositeParserGenerator methodsFor:'accessing'!
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
changeset
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
    ^ changeset
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
!
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
klass
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    ^ klass
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
!
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
klass:something
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
    klass := something.
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
!
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
productions
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
    ^ productions
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
!
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
productions:something
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
    productions := something.
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
! !
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!PPCompositeParserGenerator methodsFor:'generating'!
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
generate
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    | instvars classchange |
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
    changeset := ChangeSet fromStream: Dart::Parser definition readStream.
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
    classchange := changeset anElement.
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
    classchange setupFromSource.
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    instvars := productions keys.
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
    instvars add: classchange instanceVariableNames.
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
    classchange instanceVariableNames: (instvars asSortedCollection  asStringWith:' ').
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
    productions do:[:p|
124
fc28ffa9eb82 Added parser printer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    48
        | method |
100
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
124
fc28ffa9eb82 Added parser printer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    50
        method := MethodDefinitionChange new
fc28ffa9eb82 Added parser printer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    51
            class: klass;
fc28ffa9eb82 Added parser printer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    52
            selector: p name asSymbol;
fc28ffa9eb82 Added parser printer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    53
            source: (PPPrinter print: p);
fc28ffa9eb82 Added parser printer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    54
            category: 'grammar';
fc28ffa9eb82 Added parser printer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    55
            yourself.
fc28ffa9eb82 Added parser printer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    56
        changeset add: method.            
100
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
    ].
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    "Created: / 10-01-2013 / 12:57:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
124
fc28ffa9eb82 Added parser printer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    60
    "Modified: / 11-01-2013 / 09:52:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
100
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
! !
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
!PPCompositeParserGenerator class methodsFor:'documentation'!
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
version
124
fc28ffa9eb82 Added parser printer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    66
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/devtools/PPCompositeParserGenerator.st,v 1.2 2013-01-11 09:57:49 vrany Exp $'
100
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
!
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
version_CVS
124
fc28ffa9eb82 Added parser printer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    70
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/devtools/PPCompositeParserGenerator.st,v 1.2 2013-01-11 09:57:49 vrany Exp $'
100
998b9fb92a06 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
! !