[squeak-dev] The Trunk: Regex-Core-ul.46.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Mar 26 19:33:01 UTC 2016


Levente Uzonyi uploaded a new version of Regex-Core to project The Trunk:
http://source.squeak.org/trunk/Regex-Core-ul.46.mcz

==================== Summary ====================

Name: Regex-Core-ul.46
Author: ul
Time: 26 March 2016, 7:18:24.505619 pm
UUID: d7cbc4e5-32ee-4ea3-9228-ff39b3c76af7
Ancestors: Regex-Core-ul.45

Few more RxMatchOptimizer tweaks:
- prefixes, nonPrefixes, predicates, nonPredicates can never be empty
- #predicateTester creates better blocks
- removed the never sent #addNonPrefix: method

RxMatcher >> #atEndOfLine considers line feed as end of line as well.

=============== Diff against Regex-Core-ul.45 ===============

Item was removed:
- ----- Method: RxMatchOptimizer>>addNonPrefix: (in category 'private') -----
- addNonPrefix: aCharacter
- 
- 	^(nonPrefixes ifNil: [ nonPrefixes := CharacterSet new ]) add: aCharacter!

Item was changed:
  ----- Method: RxMatchOptimizer>>addNonPrefixes: (in category 'private') -----
  addNonPrefixes: aSet
  
+ 	aSet size = 0 ifTrue: [ ^aSet ].
  	^nonPrefixes
  		ifNil: [ nonPrefixes := aSet ]
  		ifNotNil: [ nonPrefixes addAll: aSet ]!

Item was changed:
  ----- Method: RxMatchOptimizer>>addPrefixes: (in category 'private') -----
  addPrefixes: aSet
  
+ 	aSet size = 0 ifTrue: [ ^aSet ].
  	^prefixes
  		ifNil: [ prefixes := aSet ]
  		ifNotNil: [ prefixes addAll: aSet ]!

Item was changed:
  ----- Method: RxMatchOptimizer>>nonPredicateTester (in category 'private') -----
  nonPredicateTester
  
+ 	| p |
- 	| p size |
  	nonPredicates ifNil: [ ^nil ].
+ 	nonPredicates size = 1 ifTrue:  [
- 	(size := nonPredicates size) = 0 ifTrue: [ ^nil ].
- 	size = 1 ifTrue:  [
  		| predicate |
  		predicate := nonPredicates anyOne.
+ 		^[ :char :matcher | (predicate value: char) not ] ].
- 		^[ :char :matcher | (predicate value: char) not] ].
  	p := nonPredicates asArray.
+ 	^[ :char :matcher | (p allSatisfy: [ :some | some value: char ]) not ]!
- 	^[ :char :m | (p allSatisfy: [:some | some value: char ]) not ]!

Item was changed:
  ----- Method: RxMatchOptimizer>>nonPrefixTester (in category 'private') -----
  nonPrefixTester
  
- 	| size |
  	nonPrefixes ifNil: [ ^nil ].
+ 	nonPrefixes size = 1 ifTrue: [
- 	(size := nonPrefixes size) = 0 ifTrue: [ ^nil ].
- 	size = 1 ifTrue: [
  		| nonPrefixChar |
  		nonPrefixChar := nonPrefixes anyOne.
  		^[ :char :matcher | char ~~ nonPrefixChar ] ].
  	^[ :char : matcher | (nonPrefixes includes: char) not ]!

Item was changed:
  ----- Method: RxMatchOptimizer>>predicateTester (in category 'private') -----
  predicateTester
  
+ 	| p |
- 	| p size |
  	predicates ifNil: [ ^nil ].
+ 	predicates size = 1 ifTrue: [
- 	(size := predicates size) = 0 ifTrue: [ ^nil ].
- 	size = 1 ifTrue: [
  		| pred |
  		pred := predicates anyOne.
  		^[ :char :matcher | pred value: char ] ].
  	p := predicates asArray. 
  	^[ :char :matcher | p anySatisfy: [:some | some value: char ] ]!

Item was changed:
  ----- Method: RxMatchOptimizer>>prefixTester (in category 'private') -----
  prefixTester
  
+ 	| p |
- 	| p size |
  	prefixes ifNil: [ ^nil ].
+ 	prefixes size = 1 ifTrue: [
- 	(size := prefixes size) = 0 ifTrue: [ ^nil ].
- 	size = 1 ifTrue: [
  		| prefixChar |
  		prefixChar := prefixes anyOne.
+ 		ignoreCase ifTrue: [ 
+ 			| lowercasePrefixChar |
+ 			lowercasePrefixChar := prefixChar asLowercase.
+ 			prefixChar := prefixChar asUppercase.
+ 			prefixChar == lowercasePrefixChar ifFalse: [
+ 				^[ :char :matcher | char == prefixChar or: [ char == lowercasePrefixChar ] ] ] ].
- 		ignoreCase ifTrue: [ ^[ :char :matcher | char sameAs: prefixChar ] ].
  		^[ :char :matcher | char == prefixChar ] ].
+ 	ignoreCase ifTrue: [
+ 		prefixes copy do: [ :each |
+ 			| character |
+ 			(character := each asUppercase) == each ifFalse: [
+ 				prefixes add: character ].
+ 			(character := each asUppercase) == each ifFalse: [
+ 				prefixes add: character ] ] ].
+ 	prefixes size < 10 ifTrue: [ "10 is an empirical value"
+ 		p := prefixes asArray.
+ 		^[ :char :matcher | p instVarsInclude: char ] ].
+ 	^[ :char :matcher | prefixes includes: char ]!
- 	ignoreCase ifFalse: [ ^[ :char :matcher | prefixes includes: char ] ].
- 	p := prefixes collect: [ :each | each asUppercase ].
- 	^[ :char :matcher | p includes: char asUppercase ]!

Item was changed:
  ----- Method: RxMatcher>>atEndOfLine (in category 'testing') -----
  atEndOfLine
  
+ 	| peek |
+ 	(peek := stream peek ifNil: [ ^true ]) == Cr ifTrue: [ ^true ].
+ 	^peek == Lf!
- 	^self atEnd or: [stream peek = Cr]!



More information about the Squeak-dev mailing list