compiler/benchmarks/PPCLRPParser_johanfabry_39.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 02 Jul 2018 08:46:03 +0200
changeset 557 5ddba1e78795
parent 537 fb212e14d1f4
permissions -rw-r--r--
Tagged Smalltalk/X 8.0.0
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
537
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
    16
520
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
!PPCLRPParser_johanfabry_39 class methodsFor:'accessing'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
ignoredNames
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
    ^super ignoredNames , #(styler failed lastError)
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
!PPCLRPParser_johanfabry_39 methodsFor:'accessing'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
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
    ^error
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
    "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
    30
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
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
    ^failed
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
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
    ^lastError
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
start
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    ^program end
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
styler
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
    ^styler ifNil:[styler := PPCLRPRubricStyler new]
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
styler: aSHStyler
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    styler := aSHStyler.
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
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
    ^success
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
!PPCLRPParser_johanfabry_39 methodsFor:'block creation'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
createSTBlockFrom: aBlockNode withVariables: aDictionary
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    |compiled retval keys|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    keys := OrderedCollection new: aDictionary size.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
    aDictionary associations do: [:asoc|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
        keys add: asoc key.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    compiled := (self methodizeBlock: aBlockNode withArguments: keys) compiledMethod.
529
439c4057517f PPCConfiguration refactoring [1/10]: renamed PPCArguments to PPCCompilationOptions
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 520
diff changeset
    68
    retval := compiled valueWithReceiver: Object new options: {aDictionary}.
520
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    ^retval.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
methodizeBlock: parsedBlock withArguments: anArray
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    |method retval inspoint|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    method := 'captureV: PPCLRPScopeVariables'.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
     
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    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
    80
    inspoint := retval body statements first.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    parsedBlock scope: inspoint value scope.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    parsedBlock parent: inspoint.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    inspoint value: parsedBlock.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    retval source: retval asString.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
    anArray do: [:aVarName|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
        retval := retval rewriteLRPVarNamedWrite: aVarName.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
        retval := retval rewriteLRPVarNamedRead: aVarName.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    ].
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    ^retval
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
!PPCLRPParser_johanfabry_39 methodsFor:'error handing'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
failWithValue: anObject
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    failed := true.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    lastError := anObject.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
!PPCLRPParser_johanfabry_39 methodsFor:'grammar'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
body
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
    ^(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
   105
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
errorNode
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    ^(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
   109
        ==> [ :token |  
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
                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
   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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
event
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    ^ (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
   116
        ==> [:token | | ident |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
                ident := (token parsedValue at: 3).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
                (LRPEvent named: ident parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
                     trigger: (token parsedValue at: 4))
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
                nameRange: (ident start to: ident stop);
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
                yourself.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
integer 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
    ^(#digit asParser) plus flatten trim token
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
machine
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
    ^(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
   132
        ==> [:token | | ident bod stop |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
                ident := (token parsedValue at: 3).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
                bod := (token parsedValue at: 4).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
                bod isEmpty
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
                    ifTrue: [ stop := token stop - 1 ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
                 	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
   138
                (LRPMachine name: ident parsedValue body: bod)
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
                    start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
                    nameRange: (ident start to: stop);
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
                    yourself.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
onentry
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
    ^ (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
   147
        ==> [:token | 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
                (LRPOnEntry block: (token parsedValue at: 3))
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
                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
   151
                yourself.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
onexit
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
    ^ (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
   157
        ==> [:token | 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
                (LRPOnExit block: (token parsedValue at: 3))
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
                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
   161
                yourself.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
program
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
    ^ (variable / machine / comment / spawn / errorNode) star
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
running
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
    ^ (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
   171
        ==> [:token | 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
                (LRPRunning block: (token parsedValue at: 3))
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
                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
   175
                yourself.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
spawn
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
    ^(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
   181
        ==> [ :token |  
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
                (LRPSpawn
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
                    machine: (token parsedValue at: 3) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
                    state: (token parsedValue at: 4) parsedValue)
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
                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
   187
                yourself.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
state
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
    ^(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
   194
        ==> [ :token | | ident |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
                ident := (token parsedValue at: 3).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
                (LRPState name: ident parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
                    body: (token parsedValue at: 4))
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
                nameRange: (ident start to: ident stop);
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
                yourself.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
statebody
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
    ^(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
   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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
variable
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
    ^ (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
   212
        ==> [ :token | |ident|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
            ident := (token parsedValue at: 3).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
            (LRPVariable name: ident parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
                value: (token parsedValue at: 5))
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
            start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
            nameRange: (ident start to: ident stop);
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
            yourself.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
!PPCLRPParser_johanfabry_39 methodsFor:'grammar-comments'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
comment
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
    ^ ((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
   226
    ==> [ :token |  |text|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
            text := token parsedValue at: 2.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
                (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
   229
                start: token start stop: token stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
                yourself.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
endOfComment
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
    ^ #eof asParser / lineTerminator
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
lineTerminator
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
    ^ (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
   241
! !
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
!PPCLRPParser_johanfabry_39 methodsFor:'grammar-common'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
block
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
    ^PPSmalltalkParser new block
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
bra
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
    ^ $( asParser trim
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
identifier 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
    ^(#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
   255
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
ket
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
    ^ $) asParser trim
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
!PPCLRPParser_johanfabry_39 methodsFor:'grammar-transitions'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
epsilon
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
    ^ (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
   265
        ==> [ :token |  | trans name |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
                name := (token parsedValue at: 6).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
                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
   268
                trans := 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
                    (LRPEpsilonTransition
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
                        from: (token parsedValue at: 3) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
                        to: (token parsedValue at: 5) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
                        name: name).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
                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
   274
                trans
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
timeoutIdentifier
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
    ^ (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
   280
        ==> (self transitionActionHandlerFor: PPCLRPTimeoutTransition).
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
timeoutInteger
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
    ^ (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
   285
        ==> [ :token | | trans name |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
        name := (token parsedValue at: 7).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
        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
   288
        trans :=
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
            (LRPTimeoutTransition
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
                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
   291
                from: (token parsedValue at: 4) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
                to: (token parsedValue at: 6) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
                name: name).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
        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
   295
        trans.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
transition
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
    ^ (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
   301
        ==> (self transitionActionHandlerFor: PPCLRPTransition).
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
wildcard
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
    ^ (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
   306
        ==> [ :token |  | trans name |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
                name := (token parsedValue at: 6).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
                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
   309
                trans :=
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
                    (LRPWildcardTransition
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
                        on: (token parsedValue at: 3) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
                        to: (token parsedValue at: 5) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
                        name: name ).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
                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
   315
                trans
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
!PPCLRPParser_johanfabry_39 methodsFor:'parsing'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
parse: aString
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
    |parsedProgram |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
    failed := false.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
    parsedProgram := super parse: aString.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
    parsedProgram isPetitFailure ifTrue:[
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
        parsedProgram := 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
            {LRPErrorNode new 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
                start: 1;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
                stop: aString size; 
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
                yourself.
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
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
    "visit pattern?"
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
    parsedProgram do:[:aNode|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
        (aNode onErrorNode: [:anErrorNode| ] parser: self)
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
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
    ^parsedProgram.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
parse: aString onError: aBlock
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
    |parsedProgram|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
    parsedProgram := self parse: aString.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
    failed ifTrue:[
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
        "visit pattern?"
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
        parsedProgram do:[:aNode|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
            (aNode onErrorNode: aBlock parser: self)
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
    ^parsedProgram.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
parse: aText styleOn: aViewOrMorph
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
    |parsedProgram|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
    parsedProgram := self parse: aText.
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
    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
   365
    
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
    ^parsedProgram.
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
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
!PPCLRPParser_johanfabry_39 methodsFor:'transitions'!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
setTransitionRangesIn: aTransition for: aToken withArrowAt: index
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
    | ident |
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
    ident := (aToken parsedValue at: index + 3).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
    ident
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
        ifNil: [ aTransition nameRange: (1 to: 1) ]
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
        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
   377
    aTransition
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
        start: aToken start stop: aToken stop;
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
        arrowRange:
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
                    ((aToken parsedValue at: index) stop + 1
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
                        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
   382
        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
   383
!
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
transitionActionHandlerFor: aTransitionClass
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
    ^[ :token | | trans name|
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
        name := (token parsedValue at: 7).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
        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
   389
        trans :=
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
            (aTransitionClass
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
                on: (token parsedValue at: 3) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
                from: (token parsedValue at: 4) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
                to: (token parsedValue at: 6) parsedValue
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
                name: name).
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
        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
   396
        trans.
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
! !
9ccc84deaea0 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
537
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
   400
!PPCLRPParser_johanfabry_39 class methodsFor:'documentation'!
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
   401
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
   402
version_HG
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
   403
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
   404
    ^ '$Changeset: <not expanded> $'
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
   405
! !
fb212e14d1f4 PPCConfiguration refactoring: [9/10]: Renamed PPCConfiguration to PPCCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 529
diff changeset
   406