compiler/tests/PPCNodeCompilingTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 06 Nov 2014 01:41:10 +0000
changeset 415 f30eb7ea54cd
parent 414 0eaf09920532
child 416 b0fd54ee0412
permissions -rw-r--r--
Compatibility fixes: * do not use 'class methods size', use 'class methodDictionary size' * do not use 'class methods do:', use 'class methodDo:'
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/compiler/tests' }"
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
PPAbstractParserTest subclass:#PPCNodeCompilingTest
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
	instanceVariableNames:'parser context tree result'
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
	classVariableNames:''
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	poolDictionaries:''
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	category:'PetitCompiler-Tests-Nodes'
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
396
ec569977267a Fixed PPCGuard>>compileCharacter:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 391
diff changeset
    10
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
!PPCNodeCompilingTest methodsFor:'context'!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
context	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
	^ context := PPCProfilingContext new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
! !
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
!PPCNodeCompilingTest methodsFor:'test support'!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
assert: whatever parse: input
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	result := super assert: whatever parse: input.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
compileTree: root 
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
	^ self compileTree: root params: #()
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
compileTree: root params: params
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	| compiler mock |
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
	compiler := PPCCompiler new.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
	compiler profile: true.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
	mock := nil asParser.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
	^ (compiler compileTree: root as: #PPGeneratedParser parser: mock params: params) new.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
! !
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
!PPCNodeCompilingTest methodsFor:'tests - compiling'!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
testCompileAction
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
	tree := PPCActionNode new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
		block: [ :res | res collect: [:each | each asUppercase ]];
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
		child: #letter asParser plus asCompilerTree;
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
			
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
	self assert: parser parse: 'foo' to: { $F . $O . $O}.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
	self assert: parser parse: 'bar' to: { $B . $A . $R}.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
	self assert: parser fail: ''.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
testCompileAnd
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
	tree := PPCAndNode new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
		child: #digit asParser asCompilerNode;
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
	self assert: parser parse: '1' to: $1 end: 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
	self assert: parser fail: 'a'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
	self assert: parser fail: ''.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
testCompileAny
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
	tree := PPCAnyNode new.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
	self assert: parser parse: 'a' to: $a.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
	self assert: parser parse: '_' to: $_.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
	self assert: parser parse: '
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
' to: Character cr.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
testCompileCharSetPredicate
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
	tree := PPCCharSetPredicateNode new 
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
		predicate: (PPCharSetPredicate on: [ :e | e = $a ]);
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
	self assert: parser parse: 'a'  to: $a.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
	self assert: parser fail: 'b'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
testCompileCharacter
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
	tree := PPCCharacterNode new character: $a; yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
	self assert: parser parse: 'a'  to: $a.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
	self assert: parser fail: 'b'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
	parser := self compileTree: (PPCCharacterNode new character: $#; yourself).
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
	self assert: parser parse: '#'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
	parser := self compileTree: (PPCCharacterNode new character: Character lf; yourself).
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
	self assert: parser parse: String lf.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
testCompileChoice
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
    95
        tree := PPCChoiceNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
    96
                children: { #digit asParser asCompilerNode. #letter asParser asCompilerNode };
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
    97
                yourself.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
    98
                
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
    99
        parser := self compileTree: tree.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   100
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   101
        self assert: parser class methodDictionary size = 4.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   102
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   103
        self assert: parser parse: '1' to: $1.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   104
        self assert: parser parse: 'a' to: $a.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   105
        self assert: parser fail: '_'.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   106
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   107
    "Modified: / 06-11-2014 / 00:48:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
testCompileLiteral
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   111
        tree := PPCLiteralNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   112
                literal: 'foo';
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   113
                yourself.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   114
        parser := self compileTree: tree.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   115
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   116
        self assert: parser class methodDictionary size = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   117
        self assert: parser parse: 'foo'  to: 'foo'.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   118
        self assert: parser parse: 'foobar'  to: 'foo' end: 3.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   119
        self assert: parser fail: 'boo'.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   120
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   121
    "Modified: / 06-11-2014 / 00:48:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
testCompileLiteral2
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
	|  |
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
	tree := PPCLiteralNode new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
		literal: '''''';
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
	self assert: parser parse: ''''''  to: ''''''.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
testCompileNil
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
	tree := PPCNilNode new.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
	self assert: parser parse: 'a' to: nil end: 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
	self assert: parser parse: '' to: nil end: 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
testCompileNot
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
	tree := PPCNotNode new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
		child: #digit asParser asCompilerNode;
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
	self assert: parser parse: 'a' to: nil end: 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
	self assert: parser fail: '1'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
	self assert: parser parse: '' to: nil end: 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
testCompileNotCharSetPredicate
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   156
        tree := PPCNotCharSetPredicateNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   157
                predicate: (PPCharSetPredicate on: [ :e | e = $a ]);
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   158
                yourself.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   159
        parser := self compileTree: tree.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   160
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   161
        self assert: parser class methodDictionary size = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   162
        self assert: parser parse: 'b' to: nil end: 0.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   163
        self assert: context invocationCount = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   164
                
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   165
        self assert: parser fail: 'a'.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   166
        self assert: parser parse: '' to: nil end: 0.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   167
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   168
    "Modified: / 06-11-2014 / 00:48:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
testCompileNotLiteral
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   172
        tree := PPCNotLiteralNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   173
                literal: 'foo';
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   174
                yourself.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   175
        parser := self compileTree: tree.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   176
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   177
        self assert: parser class methodDictionary size = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   178
        self assert: parser parse: 'bar' to: nil end: 0.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   179
        self assert: context invocationCount = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   180
                
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   181
        self assert: parser fail: 'foo'.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   182
        self assert: parser parse: '' to: nil end: 0.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   183
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   184
    "Modified: / 06-11-2014 / 00:48:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
testCompileNotMessagePredicate
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   188
        tree := PPCNotMessagePredicateNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   189
                message: #isDigit;
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   190
                yourself.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   191
        parser := self compileTree: tree.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   192
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   193
        self assert: parser class methodDictionary size = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   194
        self assert: parser parse: 'a' to: nil end: 0.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   195
        self assert: context invocationCount = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   196
                
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   197
        self assert: parser fail: '1'.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   198
        self assert: parser parse: '' to: nil end: 0.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   199
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   200
    "Modified: / 06-11-2014 / 00:48:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
testCompileOptional
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
	tree := PPCOptionalNode new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
		child: ($a asParser asCompilerNode);
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
	self assert: parser parse: 'b' to: nil end: 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
	self assert: parser parse: 'a' to: $a.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
	self assert: parser parse: '' to: nil end: 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
testCompilePluggable
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
	tree := PPCPluggableNode new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
		block: [:ctx | ctx next ];
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
		
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
	self assert: parser parse: 'foo' to: $f end: 1.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
	self assert: parser parse: 'bar' to: $b end: 1.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
	self assert: parser parse: '' to: nil.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
testCompilePlus
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
	tree := PPCPlusNode new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
		child: ($a asParser asCompilerNode);
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
	self assert: parser parse: 'aaa' to: #($a $a $a) end: 3.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
	self assert: parser parse: 'ab' to: #( $a ) end: 1.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
	self assert: parser fail: 'b'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
testCompileSequence
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
	tree := PPCSequenceNode new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
		children: {  $a asParser asCompilerNode . $b asParser asCompilerNode . $c asParser asCompilerNode  }
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
	self assert: parser parse: 'abc' to: #($a $b $c) end: 3.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
	self assert: parser parse: 'abcd' to: #( $a $b $c ) end: 3.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
	self assert: parser fail: 'ab'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
testCompileStar
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
	tree := PPCStarNode new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
		child: ($a asParser asCompilerNode);
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
	self assert: parser parse: 'aaa' to: #($a $a $a) end: 3.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
	self assert: parser parse: 'ab' to: #( $a ) end: 1.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
	self assert: parser parse: 'b' to: #( ) end: 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
testCompileStarAny
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
	tree := PPCStarAnyNode new.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
	self assert: parser parse: 'abc' to: #($a $b $c).
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
	self assert: parser parse: 'a' to: #($a).
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
	self assert: parser parse: '' to: #().
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
testCompileStarCharSetPredicate
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   268
        tree := PPCStarCharSetPredicateNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   269
                predicate: (PPCharSetPredicate on: [:e | e = $a ]);
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   270
                yourself.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   271
        parser := self compileTree: tree.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   272
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   273
        self assert: parser class methodDictionary size = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   274
        self assert: parser parse: 'aaa1' to: #( $a $a $a) end: 3.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   275
        self assert: context invocationCount = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   276
        self assert: parser parse: 'bba' to: #() end: 0.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   277
        self assert: context invocationCount = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   278
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   279
    "Modified: / 06-11-2014 / 00:48:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
testCompileStarMessagePredicate
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   283
        tree := PPCStarMessagePredicateNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   284
                message: #isLetter;
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   285
                yourself.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   286
        parser := self compileTree: tree.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   287
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   288
        self assert: parser class methodDictionary size = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   289
        self assert: parser parse: 'abc1' to: #( $a $b $c) end: 3.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   290
        self assert: context invocationCount = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   291
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   292
        self assert: parser parse: '123a' to: #() end: 0.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   293
        self assert: context invocationCount = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   294
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   295
    "Modified: / 06-11-2014 / 00:48:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
testCompileSymbolAction
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
	tree := PPCSymbolActionNode new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
		block: #second;
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
		child: #letter asParser plus asCompilerTree;
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
		
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
	self assert: parser parse: 'foo' to: $o.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
	self assert: parser parse: 'bar' to: $a.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
	self assert: parser fail: ''.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
testCompileToken
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
	tree := PPCTokenNode new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
		child: #letter asParser plus asCompilerTree;
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
		tokenClass: PPToken;
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
	self assert: parser parse: 'abc'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
	self assert: result class = PPToken.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
	self assert: result inputValue = 'abc'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
	self assert: parser fail: '1a'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
testCompileTokenSequence
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
	tree := PPCTokenSequenceNode new.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
	tree children: { #digit asParser asCompilerNode. #letter asParser asCompilerNode }.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
	self assert: parser parse: '1a' to: parser.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
	self assert: context rememberCount = 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
	self assert: context lwRememberCount = 1.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
	self assert: context restoreCount = 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
	self assert: context lwRestoreCount = 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
	self assert: parser parse: '1ab' to: parser end: 2.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
	self assert: context lwRememberCount = 1.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
	self assert: context lwRestoreCount = 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
	self assert: parser fail: 'a1'. 	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
	self assert: context lwRememberCount = 1.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
	self assert: context lwRestoreCount = 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
	self assert: parser fail: 'aa'. 	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
	self assert: context lwRememberCount = 1.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
	self assert: context lwRestoreCount = 0.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
	self assert: parser fail: '11'. 	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
	self assert: context lwRememberCount = 1.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
	self assert: context lwRestoreCount = 1.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
testCompileTokenStarMessagePredicate
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   356
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   357
        tree := PPCTokenStarMessagePredicateNode new message: #isLetter.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   358
        parser := self compileTree: tree params: {#guards -> false}.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   359
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   360
        self assert: parser class methodDictionary size = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   361
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   362
        self assert: parser parse: 'foo' to: parser.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   363
        self assert: context invocationCount = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   364
        self assert: context lwRememberCount  = 0.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   365
        self assert: context lwRestoreCount  = 0.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   366
        self assert: context rememberCount = 0.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   367
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   368
        self assert: parser parse: 'foo123' to: parser end: 3.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   369
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   370
    "Modified: / 06-11-2014 / 00:49:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
! !
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
!PPCNodeCompilingTest methodsFor:'tests - guard'!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
testSequenceTokenGuard
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
	tree := PPCSequenceNode new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
		children: { 
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
			'foo' asParser trimmingToken asCompilerTree optimizeTree. 
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
			'bar' asParser trimmingToken asCompilerTree optimizeTree. 
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
		}
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
	self assert: parser parse: 'foobar'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
	self assert: result first inputValue = 'foo'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
	self assert: result second inputValue = 'bar'.	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
	self assert: parser parse: ' foobar'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
	self assert: result first inputValue = 'foo'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
	self assert: result second inputValue = 'bar'.	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
	self assert: parser fail: ' foo'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
testTrimmingTokenGuard
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398
	tree := PPCChoiceNode new
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
		children: { 
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
			'foo' asParser trimmingToken asCompilerTree optimizeTree. 
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   401
			'bar' asParser trimmingToken asCompilerTree optimizeTree
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   402
		}
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
		yourself.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   404
	parser := self compileTree: tree.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
	self assert: parser parse: 'foo'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
	self assert: result inputValue = 'foo'.	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   409
	self assert: parser parse: 'bar'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
	self assert: result inputValue = 'bar'.	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
	self assert: parser parse: ' foo'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   413
	self assert: result inputValue = 'foo'.	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   414
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
	self assert: parser parse: ' bar'.	
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   416
	self assert: result inputValue = 'bar'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
	self assert: parser fail: 'zorg'.
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
	self assert: (context invocations noneSatisfy: [ :e | e beginsWith: 'token' ]).
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
! !
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
!PPCNodeCompilingTest methodsFor:'tests - inlining'!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
testInlineAny
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   425
        tree := PPCSequenceNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   426
                children: { PPCInlineAnyNode new. $a asParser asCompilerNode }.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   427
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   428
        parser := self compileTree: tree.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   429
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   430
        self assert: parser class methodDictionary size = 3.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   431
        self assert: parser parse: '.a' to: #($. $a).
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   432
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   433
    "Modified: / 06-11-2014 / 01:12:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
testInlineCharSetPredicate
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   437
        tree := PPCPlusNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   438
                child: (PPCInlineCharSetPredicateNode new 
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   439
                        predicate: (PPCharSetPredicate on: [ :e | e = $a ]);
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   440
                        yourself);
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   441
                yourself.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   442
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   443
        parser := self compileTree: tree.
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   445
        self assert: parser class methodDictionary size = 2.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   446
        self assert: parser parse: 'a'  to: #($a).
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   447
        self assert: parser fail: 'b'.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   448
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   449
    "Modified: / 06-11-2014 / 01:12:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
testInlineCharacter
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   453
        tree := PPCSequenceNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   454
                children: { PPCInlineCharacterNode new character: $b . $a asParser asCompilerNode }.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   455
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   456
        parser := self compileTree: tree.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   457
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   458
        self assert: parser class methodDictionary size = 3.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   459
        self assert: parser parse: 'ba' to: #($b $a).
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   460
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   461
    "Modified: / 06-11-2014 / 01:12:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   462
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
testInlineLiteral
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   465
        tree := PPCSequenceNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   466
                children: { PPCInlineLiteralNode new literal: 'foo'. $a asParser asCompilerNode }.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   467
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   468
        parser := self compileTree: tree.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   469
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   470
        self assert: parser class methodDictionary size = 3.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   471
        self assert: parser parse: 'fooa' to: #('foo' $a).
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   472
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   473
    "Modified: / 06-11-2014 / 01:12:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
testInlineNil
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   477
        tree := PPCSequenceNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   478
                children: { PPCInlineNilNode new . $a asParser asCompilerNode }.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   479
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   480
        parser := self compileTree: tree.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   481
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   482
        self assert: parser class methodDictionary size = 3.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   483
        self assert: parser parse: 'a' to: #(nil $a).
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   484
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   485
    "Modified: / 06-11-2014 / 01:12:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   486
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
testInlineNotLiteral
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   489
        tree := PPCSequenceNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   490
                children: { PPCInlineNotLiteralNode new literal: 'foo'. $a asParser asCompilerNode }.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   491
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   492
        parser := self compileTree: tree.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   493
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   494
        self assert: parser class methodDictionary size = 3.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   495
        self assert: parser parse: 'a' to: #(nil $a).
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   496
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   497
    "Modified: / 06-11-2014 / 01:12:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   498
!
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   499
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
testInlinePluggable
415
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   501
        tree := PPCSequenceNode new
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   502
                children: { PPCInlinePluggableNode new block: [ :ctx | tree. ctx next ]. $a asParser asCompilerNode }.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   503
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   504
        parser := self compileTree: tree.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   505
        
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   506
        self assert: parser class methodDictionary size = 3.
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   507
        self assert: parser parse: 'ba' to: #($b $a).
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   508
f30eb7ea54cd Compatibility fixes:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 414
diff changeset
   509
    "Modified: / 06-11-2014 / 01:20:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
391
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   510
! !
553a5456963b Ported PetitCompiler-(Tests).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
396
ec569977267a Fixed PPCGuard>>compileCharacter:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 391
diff changeset
   512
!PPCNodeCompilingTest class methodsFor:'documentation'!
ec569977267a Fixed PPCGuard>>compileCharacter:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 391
diff changeset
   513
ec569977267a Fixed PPCGuard>>compileCharacter:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 391
diff changeset
   514
version_HG
ec569977267a Fixed PPCGuard>>compileCharacter:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 391
diff changeset
   515
ec569977267a Fixed PPCGuard>>compileCharacter:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 391
diff changeset
   516
    ^ '$Changeset: <not expanded> $'
ec569977267a Fixed PPCGuard>>compileCharacter:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 391
diff changeset
   517
! !
ec569977267a Fixed PPCGuard>>compileCharacter:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 391
diff changeset
   518