--- a/GDBMIParser.st Wed Sep 13 22:11:51 2017 +0100
+++ b/GDBMIParser.st Tue Oct 03 21:15:12 2017 +0100
@@ -869,6 +869,16 @@
"Created: / 18-06-2014 / 07:39:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+parseValueAsListElementDescribedBy:descriptor
+ self peek isAlphaNumeric ifTrue:[
+ self parseVariable.
+ self expect: $=.
+ ].
+ ^ descriptor parseUsingGDBMIParser:self
+
+ "Created: / 11-11-2017 / 12:19:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
parseValueAsListOf: class
| description |
@@ -891,27 +901,52 @@
!
parseValueAsListOf:class describedBy:descriptor
- | list |
+ ^ self parseValueAsListOf:class describedBy:descriptor allowOmmitedBrackets: false
+
+ "Created: / 18-06-2014 / 21:00:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 11-11-2017 / 12:14:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+parseValueAsListOf:class describedBy:descriptor allowOmmitedBrackets: allowOmmitedBrackets
+ | list bracketsOmmited |
+
+
- self peek ~~ $[ ifTrue:[ ^ self parseValue ].
- self next. "/ eat ${
- self peek ~~ $] ifTrue:[
- list := OrderedCollection new.
+ self peek == $[ ifTrue:[
+ self next. "/ eat $[
+ bracketsOmmited := false.
+ ] ifFalse:[
+ allowOmmitedBrackets ifFalse:[
+ ^ self parseValue
+ ].
+ bracketsOmmited := true.
+ ].
+
+ list := OrderedCollection new.
+ bracketsOmmited ifTrue:[
[
- self peek isAlphaNumeric ifTrue:[
- self parseVariable.
- self expect: $=.
+ list add: (self parseValueAsListElementDescribedBy: descriptor).
+ ] doWhile:[
+ (self peek == $,) ifTrue:[ self next ].
+ self peek == ${
+ ].
+ ] ifFalse:[
+ self peek ~~ $] ifTrue:[
+ [
+ list add: (self parseValueAsListElementDescribedBy: descriptor).
+ ] doWhile: [
+ (self peek == $,) ifTrue:[ self next. true ] ifFalse:[ false ]
].
- list add: (descriptor parseUsingGDBMIParser:self)
- ] doWhile: [
- (self peek == $,) ifTrue:[ self next. true ] ifFalse:[ false ]
].
].
- self expect: $].
- ^ list
- "Created: / 18-06-2014 / 21:00:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 17-09-2014 / 08:03:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ bracketsOmmited ifFalse:[
+ self expect: $]. "/ eats $]
+ ].
+ ^ list asNilIfEmpty.
+
+ "Created: / 11-11-2017 / 12:14:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 12-11-2017 / 17:22:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
parseValueAsString