compiler/benchmarks/PPCLRPParser_johanfabry_39.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 18 Aug 2015 16:57:08 +0100
changeset 520 9ccc84deaea0
child 529 439c4057517f
permissions -rw-r--r--
Added benchmarks for Johan's LRP Parser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
520
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/compiler/benchmarks' }"
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Smalltalk }"
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
PPCompositeParser subclass:#PPCLRPParser_johanfabry_39
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:'program variable block bra ket identifier machine body event
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
		transition epsilon wildcard state onentry running onexit comment
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
		lineTerminator statebody spawn integer errorNode success failed
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
		lastError styler timeoutIdentifier timeoutInteger endOfComment
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
		error'
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
	classVariableNames:''
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
	poolDictionaries:''
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
	category:'PetitCompiler-Benchmarks-Core'
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
!PPCLRPParser_johanfabry_39 class methodsFor:'accessing'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
ignoredNames
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
    ^super ignoredNames , #(styler failed lastError)
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
! !
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
!PPCLRPParser_johanfabry_39 methodsFor:'accessing'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
error
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
    ^error
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
    "Modified (format): / 18-08-2015 / 16:56:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
failed
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    ^failed
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
lastError
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    ^lastError
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
start
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
    ^program end
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
styler
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
    ^styler ifNil:[styler := PPCLRPRubricStyler new]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
styler: aSHStyler
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
    styler := aSHStyler.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
success
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
    ^success
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
! !
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
!PPCLRPParser_johanfabry_39 methodsFor:'block creation'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
createSTBlockFrom: aBlockNode withVariables: aDictionary
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    |compiled retval keys|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    keys := OrderedCollection new: aDictionary size.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    aDictionary associations do: [:asoc|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
        keys add: asoc key.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    ].
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    compiled := (self methodizeBlock: aBlockNode withArguments: keys) compiledMethod.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    retval := compiled valueWithReceiver: Object new arguments: {aDictionary}.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    ^retval.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
methodizeBlock: parsedBlock withArguments: anArray
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    |method retval inspoint|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    method := 'captureV: PPCLRPScopeVariables'.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
     
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    retval := PPSmalltalkParser new method parse: method , '^[1]'.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    inspoint := retval body statements first.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    parsedBlock scope: inspoint value scope.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    parsedBlock parent: inspoint.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    inspoint value: parsedBlock.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    retval source: retval asString.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    anArray do: [:aVarName|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
        retval := retval rewriteLRPVarNamedWrite: aVarName.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
        retval := retval rewriteLRPVarNamedRead: aVarName.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    ].
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    ^retval
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
! !
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
!PPCLRPParser_johanfabry_39 methodsFor:'error handing'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
failWithValue: anObject
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    failed := true.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    lastError := anObject.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
! !
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
!PPCLRPParser_johanfabry_39 methodsFor:'grammar'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
body
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    ^(variable / event / state / transition / timeoutIdentifier / timeoutInteger / epsilon / wildcard / comment / errorNode) star
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
errorNode
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    ^(bra,  (bra/ket)negate star , ket) token
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
        ==> [ :token |  
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
                PPCLRPErrorNode new start: token start stop: token stop; yourself.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
            ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
event
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
    ^ (bra, 'event' asParser trim, identifier, block,  ket) token 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
        ==> [:token | | ident |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
                ident := (token parsedValue at: 3).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
                (LRPEvent named: ident parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
                     trigger: (token parsedValue at: 4))
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
                nameRange: (ident start to: ident stop);
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
                yourself.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
            ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
integer 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
    ^(#digit asParser) plus flatten trim token
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
machine
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
    ^(bra , 'machine' asParser trim , identifier , body , ket) token
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
        ==> [:token | | ident bod stop |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
                ident := (token parsedValue at: 3).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
                bod := (token parsedValue at: 4).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
                bod isEmpty
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
                    ifTrue: [ stop := token stop - 1 ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
                 	ifFalse: [ stop := (bod at: 1) start - 1 ].
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
                (LRPMachine name: ident parsedValue body: bod)
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
                    start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
                    nameRange: (ident start to: stop);
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
                    yourself.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
            ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
onentry
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
    ^ (bra, 'onentry' asParser trim, (block/spawn) ,  ket ) token
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
        ==> [:token | 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
                (LRPOnEntry block: (token parsedValue at: 3))
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
                keywordEnd: (token parsedValue at: 3) start -1;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
                yourself.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
            ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
onexit
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
    ^ (bra, 'onexit' asParser trim, (block/spawn),  ket) token 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
        ==> [:token | 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
                (LRPOnExit block: (token parsedValue at: 3))
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
                keywordEnd: (token parsedValue at: 3) start -1;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
                yourself.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
            ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
program
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
    ^ (variable / machine / comment / spawn / errorNode) star
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
running
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
    ^ (bra, 'running' asParser trim, (block/spawn),  ket) token 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
        ==> [:token | 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
                (LRPRunning block: (token parsedValue at: 3))
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
                keywordEnd: (token parsedValue at: 3) start -1;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
                yourself.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
            ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
spawn
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
    ^(bra , 'spawn' asParser trim , identifier , identifier , ket) token
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
        ==> [ :token |  
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
                (LRPSpawn
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
                    machine: (token parsedValue at: 3) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
                    state: (token parsedValue at: 4) parsedValue)
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
                nameRange: ((token parsedValue at: 3) start to: (token parsedValue at: 4) stop)
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
                yourself.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
            ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
        
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
state
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
    ^(bra , 'state' asParser trim , identifier , statebody , ket) token
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
        ==> [ :token | | ident |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
                ident := (token parsedValue at: 3).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
                (LRPState name: ident parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
                    body: (token parsedValue at: 4))
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
                nameRange: (ident start to: ident stop);
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
                yourself.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
            ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
        
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
statebody
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
    ^(onentry / running / onexit / machine / comment / errorNode) star
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
        
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
variable
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
    ^ (bra , 'var' asParser trim , identifier , ':=' asParser trim , block , ket) token 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
        ==> [ :token | |ident|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
            ident := (token parsedValue at: 3).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
            (LRPVariable name: ident parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
                value: (token parsedValue at: 5))
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
            start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
            nameRange: (ident start to: ident stop);
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
            yourself.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
        ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
! !
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
!PPCLRPParser_johanfabry_39 methodsFor:'grammar-comments'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
comment
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
    ^ ((PPPredicateObjectParser blank / lineTerminator) star,  ( $; asParser , (endOfComment negate star) flatten,  endOfComment)) token
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
    ==> [ :token |  |text|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
            text := token parsedValue at: 2.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
                (LRPComment text: (text copyFrom: 2 to: text size -1))
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
                yourself.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
        ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
endOfComment
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
    ^ #eof asParser / lineTerminator
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
lineTerminator
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
    ^ (Character lf asParser) / (Character cr asParser , (Character lf asParser ) optional )
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
! !
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
!PPCLRPParser_johanfabry_39 methodsFor:'grammar-common'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
block
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
    ^PPSmalltalkParser new block
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
bra
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
    ^ $( asParser trim
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
identifier 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
    ^(#letter asParser ,(#letter asParser / #digit asParser /  $_ asParser) star)  flatten trim token
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
ket
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
    ^ $) asParser trim
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
! !
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
!PPCLRPParser_johanfabry_39 methodsFor:'grammar-transitions'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
epsilon
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
    ^ (bra, 'eps' asParser trim, identifier, '->' asParser trim, identifier,  identifier optional, ket) token
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
        ==> [ :token |  | trans name |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
                name := (token parsedValue at: 6).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
                name ifNil: [name := '' ] ifNotNil: [ name := name parsedValue ].
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
                trans := 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
                    (LRPEpsilonTransition
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
                        from: (token parsedValue at: 3) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
                        to: (token parsedValue at: 5) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
                        name: name).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
                self setTransitionRangesIn: trans for: token withArrowAt: 3. 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
                trans
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
        ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
timeoutIdentifier
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
    ^ (bra, 'ontime' asParser trim, identifier , identifier, '->' asParser trim, identifier,  identifier optional, ket) token
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
        ==> (self transitionActionHandlerFor: PPCLRPTimeoutTransition).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
timeoutInteger
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
    ^ (bra, 'ontime' asParser trim,  integer, identifier, '->' asParser trim, identifier,  identifier optional, ket) token
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
        ==> [ :token | | trans name |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
        name := (token parsedValue at: 7).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
        name ifNil: [name := '' ] ifNotNil: [ name := name parsedValue ].
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
        trans :=
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
            (LRPTimeoutTransition
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
                on: (Integer readFrom: (token parsedValue at: 3) parsedValue)
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
                from: (token parsedValue at: 4) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
                to: (token parsedValue at: 6) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
                name: name).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
        self setTransitionRangesIn: trans for: token withArrowAt: 4.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
        trans.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
    ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
transition
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
    ^ (bra, 'on' asParser trim, identifier, identifier, '->' asParser trim, identifier,  identifier optional , ket) token
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
        ==> (self transitionActionHandlerFor: PPCLRPTransition).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
wildcard
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
    ^ (bra, 'on' asParser trim, identifier,  '*->' asParser trim, identifier,  identifier optional, ket) token
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
        ==> [ :token |  | trans name |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
                name := (token parsedValue at: 6).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
                name ifNil: [name := '' ] ifNotNil: [ name := name parsedValue ].
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
                trans :=
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
                    (LRPWildcardTransition
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
                        on: (token parsedValue at: 3) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
                        to: (token parsedValue at: 5) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
                        name: name ).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
                self setTransitionRangesIn: trans for: token withArrowAt: 3. 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
                trans
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
            ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
        
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
! !
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
!PPCLRPParser_johanfabry_39 methodsFor:'parsing'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
parse: aString
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
    |parsedProgram |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
    failed := false.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
    parsedProgram := super parse: aString.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
    parsedProgram isPetitFailure ifTrue:[
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
        parsedProgram := 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
            {LRPErrorNode new 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
                start: 1;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
                stop: aString size; 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
                yourself.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
            }
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
    ].
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
    "visit pattern?"
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
    parsedProgram do:[:aNode|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
        (aNode onErrorNode: [:anErrorNode| ] parser: self)
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
    ].
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
    ^parsedProgram.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
parse: aString onError: aBlock
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
    |parsedProgram|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
    parsedProgram := self parse: aString.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
    failed ifTrue:[
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
        "visit pattern?"
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
        parsedProgram do:[:aNode|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
            (aNode onErrorNode: aBlock parser: self)
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
        ].
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
    ].
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
    ^parsedProgram.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
parse: aText styleOn: aViewOrMorph
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
    |parsedProgram|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
    parsedProgram := self parse: aText.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
    self styler view: aViewOrMorph; parser: self; nodes: parsedProgram; style: aText.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
    ^parsedProgram.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
! !
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
!PPCLRPParser_johanfabry_39 methodsFor:'transitions'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
setTransitionRangesIn: aTransition for: aToken withArrowAt: index
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
    | ident |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
    ident := (aToken parsedValue at: index + 3).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
    ident
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
        ifNil: [ aTransition nameRange: (1 to: 1) ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
        ifNotNil: [ aTransition nameRange: (ident start to: ident stop) ].
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
    aTransition
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
        start: aToken start stop: aToken stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
        arrowRange:
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
                    ((aToken parsedValue at: index) stop + 1
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
                        to: (aToken parsedValue at: index + 2) start -1);
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
        keywordEnd: (aToken parsedValue at: 3) start -1
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
transitionActionHandlerFor: aTransitionClass
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
    ^[ :token | | trans name|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
        name := (token parsedValue at: 7).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
        name ifNil: [name := '' ] ifNotNil: [ name := name parsedValue ].
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
        trans :=
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
            (aTransitionClass
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
                on: (token parsedValue at: 3) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
                from: (token parsedValue at: 4) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
                to: (token parsedValue at: 6) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
                name: name).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
        self setTransitionRangesIn: trans for: token withArrowAt: 4.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
        trans.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
    ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
! !
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398