GDBMIParser.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 23 Sep 2014 23:48:13 +0100
changeset 45 deb908479a37
parent 40 GDBParser.st@0ce76b671515
child 52 0618438f6ba5
permissions -rw-r--r--
Code refactored to use Magritte to meta-describe GDB objects. This should give greate flexibility without reinventing the wheel.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
     1
"{ Encoding: utf8 }"
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
     2
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ Package: 'jv:libgdbs' }"
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
     5
Object subclass:#GDBMIParser
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
     6
	instanceVariableNames:'source lookahead token token2CommandMappingBlock recorder'
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
     8
	poolDictionaries:'GDBCommandStatus'
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
     9
	category:'GDB-Private'
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    12
!GDBMIParser class methodsFor:'instance creation'!
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    14
on: aStringOrStream
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
    ^ self new on: aStringOrStream
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
    "Created: / 27-05-2014 / 23:50:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
! !
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    20
!GDBMIParser methodsFor:'accessing'!
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    21
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
    22
recorder
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
    23
    ^ recorder
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
    24
!
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
    25
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
    26
recorder:something
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
    27
    recorder := something.
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
    28
!
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
    29
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    30
token2CommandMappingBlock: aBlock
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    31
    token2CommandMappingBlock := aBlock.
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    32
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    33
    "Created: / 19-06-2014 / 21:34:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    34
! !
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    35
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    36
!GDBMIParser methodsFor:'initialization'!
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
on: aStringOrStream
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
    source := aStringOrStream readStream
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    "Created: / 27-05-2014 / 23:50:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
! !
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    44
!GDBMIParser methodsFor:'parsing'!
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
parseCString
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
    self expect: $".
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    48
    ^ self parseCStringRest: ''.
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    "Created: / 27-05-2014 / 23:51:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    51
    "Modified (format): / 18-06-2014 / 07:19:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
!
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
parseCStringEscape: char
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
    |ascii c |
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
    char == $" ifTrue:[
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    58
	^ $".
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    char == $b ifTrue:[
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    62
	^ Character backspace
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
    ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    char == $t ifTrue:[
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    65
	^ Character tab
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    char == $n ifTrue:[
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    68
	^ Character cr
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    char == $r ifTrue:[
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    71
	^ Character return
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    char == $f ifTrue:[
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    74
	^ Character newPage
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
"/    char == $u ifTrue:[
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
"/        ascii := 0.
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
"/        c := source peekOrNil.
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
"/        4 timesRepeat:[
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
"/            (c isDigitRadix:16) ifFalse:[
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
"/                self syntaxError:'invalid hex character constant'
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
"/                        position:source position-2 to:(source position - 1).
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
"/                ^ Character value:ascii
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
"/            ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
"/            ascii := (ascii bitShift:4).
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
"/            ascii := ascii + c digitValue.
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
"/            source next. c := source peekOrNil.
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
"/        ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
"/        ^ Character value:ascii
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
"/    ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    char == $x ifTrue:[
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    93
	ascii := 0.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    94
	c := self peekOrNil.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    95
	2 timesRepeat:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    96
	    (c isDigitRadix:16) ifFalse:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    97
		self error:'Invalid hex character escape'.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    98
		^ Character value:ascii
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    99
	    ].
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   100
	    ascii := (ascii bitShift:4).
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   101
	    ascii := ascii + c digitValue.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   102
	    self next. c := self peekOrNil.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   103
	].
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   104
	^ Character value:ascii
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
    "OctalEscape ::= \ OctalDigit |
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   107
		     \ OctalDigit OctalDigit
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   108
		     \ ZeroToThree OctalDigit OctalDigit"
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    (char between:$0 and:$3) ifTrue:[
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   111
	ascii := char digitValue.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   112
	c := self peekOrNil.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   113
	(c between: $0 and: $7) ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   114
	    self next.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   115
	    ascii := (ascii bitShift:3).
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   116
	    ascii := ascii + c digitValue.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   117
	].
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   118
	c := self peekOrNil.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   119
	(c between: $0 and: $7) ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   120
	    self next.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   121
	    ascii := (ascii bitShift:3).
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   122
	    ascii := ascii + c digitValue.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   123
	].
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   124
	^ Character value:ascii
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
    ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
    (char between:$4 and: $7) ifTrue:[
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   127
	ascii := char digitValue.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   128
	c := self peekOrNil.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   129
	(c between: $0 and: $7) ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   130
	    self next.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   131
	    ascii := (ascii bitShift:3).
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   132
	    ascii := ascii + c digitValue.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   133
	].
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   134
	^ Character value:ascii
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
    ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
    ^ char
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
    "Created: / 28-05-2014 / 00:02:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
!
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   142
parseCStringRest: alreadyRead
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   143
    | buffer inString nextChar |
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   144
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   145
    buffer := (String new: 50) writeStream.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   146
    buffer nextPutAll: alreadyRead.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   147
    nextChar := self next.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   148
    inString := true.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   149
    [inString] whileTrue:[
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   150
        nextChar isNil ifTrue:[
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   151
            self error: 'Unexpected end of input'.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   152
        ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   153
        nextChar == $\ ifTrue:[
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   154
            nextChar := self next.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   155
            nextChar := self parseCStringEscape:nextChar.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   156
        ] ifFalse:[
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   157
            (nextChar == $") ifTrue:[
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   158
                (self peekOrNil == $") ifTrue:[
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   159
                    self next
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   160
                ] ifFalse:[
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   161
                    inString := false
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   162
                ]
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   163
            ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   164
        ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   165
        inString ifTrue:[
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   166
            buffer nextPut:nextChar.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   167
            nextChar := self next
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   168
        ]
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   169
    ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   170
    ^ buffer contents
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   171
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   172
    "Created: / 18-06-2014 / 07:17:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   173
!
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   174
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   175
parseNl
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   176
    | c |
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   177
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   178
    c := self peek.
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   179
    (c == Character return or:[ c == Character cr ]) ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   180
	self next
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   181
    ].
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   182
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   183
    "Created: / 30-05-2014 / 09:52:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   184
    "Modified: / 31-05-2014 / 00:38:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   185
!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   186
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   187
parseNonBlankSequence
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   188
    ^ String streamContents:[ :buffer | 
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   189
        [ self peek isNil or: [ self peek isSeparator ] ] whileFalse:[
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   190
            buffer nextPut: self next.
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   191
        ]
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   192
    ]
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   193
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   194
    "Created: / 24-06-2014 / 23:19:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   195
!
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   196
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   197
parseOutput
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   198
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   199
    output → ( out-of-band-record )* [ result-record ] '(gdb)' nl
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   200
    out-of-band-record → async-record | stream-record
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   201
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   202
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   203
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   204
    | peek events |
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   205
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   206
    events := GDBEventSet new.
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   207
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   208
    peek := self peek.
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   209
    peek == Character space ifTrue:[ self next ].
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   210
    peek := self peek.
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   211
    peek == Character cr ifTrue:[ self next ].
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   212
    [
33
7abcdaaa5229 Fixed parsing of command - reset token before parsing new response.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   213
        token := nil.
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   214
        peek := self peek.
9
5cc8797f6523 Make simple example with -gdb-exit command working
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   215
        peek isNil ifTrue:[ 
5cc8797f6523 Make simple example with -gdb-exit command working
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   216
            source atEnd ifTrue:[ ^ events ].
5cc8797f6523 Make simple example with -gdb-exit command working
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   217
        ].
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   218
        peek isDigit ifTrue:[ self parseToken. peek := self peek ].
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   219
        peek ~~ $(
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   220
    ] whileTrue:[
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   221
        ('*+=' includes: self peek) ifTrue:[
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   222
            events add: self parseAsyncRecord.
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   223
        ] ifFalse:[
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   224
            ('~@&' includes: self peek) ifTrue:[
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   225
                events add: self parseStreamRecord.
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   226
            ] ifFalse:[
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   227
                peek == $^ ifTrue:[
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   228
                    events add: self parseResultRecord.
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   229
                ] ifFalse:[
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   230
                    self error:'Invalid MI record'.
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   231
                ].
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   232
            ].
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   233
        ].
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   234
        events last token: token.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   235
    ].
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   236
    self expect: '(gdb)'.
25
58e042a191a9 More work on GDB session recorder.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   237
    [ self peek == Character space ] whileTrue:[ self next ].
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   238
    self parseNl.
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   239
    recorder notNil ifTrue:[ 
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   240
        recorder recordResponseEnd.
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   241
    ].
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   242
    ^ events
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   243
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   244
    "Created: / 30-05-2014 / 09:52:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
7abcdaaa5229 Fixed parsing of command - reset token before parsing new response.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   245
    "Modified: / 06-09-2014 / 00:44:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   246
!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   247
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   248
parseResultClass
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   249
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   250
    result-class → 'done' | 'running' | 'connected' | 'error' | 'exit'
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   251
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   252
    | c1 c2 |
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   253
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   254
    c1 := self peek.
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   255
    c1 == $d ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   256
	self expect: 'done'.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   257
	^ CommandStatusDone.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   258
    ].
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   259
    c1 == $r ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   260
	self expect: 'running'.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   261
	^ CommandStatusDone.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   262
    ].
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   263
    c1 == $c ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   264
	self expect: 'connected'.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   265
	^ CommandStatusConnected.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   266
    ].
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   267
    c1 == $e ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   268
	self next.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   269
	c2 := self peek.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   270
	c2 == $x ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   271
	    self expect: 'xit'.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   272
	    ^ CommandStatusExit.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   273
	].
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   274
	c2 == $r ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   275
	    self expect: 'rror'.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   276
	    ^ CommandStatusError.
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   277
	].
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   278
    ].
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   279
    ^ self error:'Unsupported result class'
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   280
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   281
    "Created: / 31-05-2014 / 00:16:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   282
    "Modified: / 01-06-2014 / 23:21:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   283
!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   284
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   285
parseResultRecord
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   286
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   287
    result-record → '^' result-class ( ',' result )* nl
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   288
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   289
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   290
    | command result descriptor propertyName propertyDescriptor propertyValue |
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   291
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   292
    self expect: $^.
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   293
    result := GDBCommandResult new.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   294
    result status: self parseResultClass.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   295
    descriptor := GDBMAContainer new.
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   296
    (token notNil and:[ token2CommandMappingBlock notNil ]) ifTrue:[ 
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   297
        command := token2CommandMappingBlock value: token. 
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   298
        command notNil ifTrue:[
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   299
            result command: command.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   300
            descriptor := command resultDescription.        
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   301
        ].
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   302
    ].
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   303
    [ self peek == $, ] whileTrue:[
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   304
        self next. "/ eat $,
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   305
        propertyName := self parseVariable.
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   306
        propertyDescriptor := descriptor propertyDescriptorAt: propertyName.
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   307
        self expect: $=.
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   308
        propertyDescriptor isNil ifTrue:[ 
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   309
            propertyValue := self parseValue.
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   310
        ] ifFalse:[ 
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   311
            propertyValue := propertyDescriptor parseUsingGDBMIParser:self. 
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   312
        ]. 
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   313
        result propertyAt: propertyName put: propertyValue.
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   314
     ].             
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   315
    self parseNl.
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   316
    ^ GDBCommandResultEvent new result: result.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   317
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   318
    "Created: / 30-05-2014 / 09:52:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   319
    "Modified: / 23-09-2014 / 23:37:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   320
!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   321
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
parseToken
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   323
    token := 0.
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   324
    [ self peek isDigit ] whileTrue:[ 
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   325
        token := (token * 10) + (self next codePoint - $0 codePoint).
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   326
    ].
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
    "Created: / 28-05-2014 / 00:14:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   329
    "Modified: / 03-06-2014 / 00:49:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
! !
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   332
!GDBMIParser methodsFor:'parsing-async events'!
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   333
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   334
parseAsyncRecord
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   335
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   336
    async-record → exec-async-output | status-async-output | notify-async-output
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   337
    "
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   338
    self peek == $* ifTrue:[
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   339
        self next.
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   340
        ^ self parseAsyncRecord: GDBExecutionEvent.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   341
    ].
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   342
    self peek == $+ ifTrue:[
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   343
        self next.
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   344
        ^ self parseAsyncRecord: GDBStatusEvent .
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   345
    ].
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   346
    self peek == $= ifTrue:[
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   347
        self next.
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   348
        ^ self parseAsyncRecord: GDBNotificationEvent.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   349
    ].
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   350
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   351
    ^ self error: 'Invalid async-record'
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   352
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   353
    "Created: / 30-05-2014 / 09:57:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   354
    "Modified: / 02-06-2014 / 22:19:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   355
!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   356
13
45ec9353003f Added classes for each async event type.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   357
parseAsyncRecord: eventClassBase
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   358
    "
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   359
    async-output → async-class ( ',' result )* nl
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   360
    "
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   361
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   362
    | type eventClass event propertyName propertyDescriptor descriptor propertyValue |
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   363
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   364
    type := self parseString.
13
45ec9353003f Added classes for each async event type.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   365
    eventClass := eventClassBase eventClassForType: type.
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   366
    event := eventClass new.
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   367
    event type: type.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   368
    descriptor := eventClass description.
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   369
    [ self peek == $, ] whileTrue:[
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   370
        self next. "/ eat $,
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   371
        propertyName := self parseVariable.
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   372
        propertyDescriptor := descriptor propertyDescriptorAt: propertyName.
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   373
        self expect: $=.
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   374
        propertyDescriptor isNil ifTrue:[ 
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   375
            propertyValue := self parseValue.
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   376
        ] ifFalse:[ 
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   377
            propertyValue := propertyDescriptor parseUsingGDBMIParser:self. 
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   378
        ]. 
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   379
        event propertyAt: propertyName put: propertyValue.
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   380
    ].
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   381
    self parseNl.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   382
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   383
    ^ event
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   384
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   385
    "Created: / 01-06-2014 / 23:43:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   386
    "Modified: / 19-06-2014 / 21:43:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   387
! !
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   388
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   389
!GDBMIParser methodsFor:'parsing-commands'!
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   390
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   391
parseCommand
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   392
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   393
    self peek isDigit ifTrue:[ 
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   394
        self parseToken
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   395
    ].
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   396
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   397
    ^ self peek == $- ifTrue:[ 
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   398
        self parseCommandMI
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   399
    ] ifFalse:[ 
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   400
        self parseCommandCLI
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   401
    ].
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   402
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   403
    "Created: / 24-06-2014 / 23:08:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   404
!
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   405
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   406
parseCommandCLI
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   407
    "raise an error: this method should be implemented (TODO)"
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   408
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   409
    ^ GDBCLICommand new
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   410
        token: token;
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   411
        value: self nextLine;
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   412
        yourself
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   413
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   414
    "Created: / 24-06-2014 / 23:10:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   415
!
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   416
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   417
parseCommandMI
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   418
    "raise an error: this method should be implemented (TODO)"
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   419
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   420
    | operation className class args |
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   421
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   422
    self next. "/ eat $-.
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   423
    operation := self parseVariable.
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   424
    className := ('GDBMI_' , (operation copyReplaceAll: $- with: $_)) asSymbol.
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   425
    class := Smalltalk at: className.
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   426
    args := OrderedCollection new.
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   427
    [ self peek isNil or:[ self peek == Character cr ] ] whileFalse:[  
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   428
        self skipSeparators.
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   429
        self peek == $" ifTrue:[ 
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   430
            args add: self parseCString
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   431
        ] ifFalse:[ 
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   432
            args add: self parseNonBlankSequence
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   433
        ].
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   434
    ].
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   435
    self next. "/ eat CR.
32
d9c96b33afd6 Temporary commit: more work on simulator...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
   436
    ^ (class arguments: args asArray) token: token.
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   437
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   438
    "Created: / 24-06-2014 / 23:10:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
32
d9c96b33afd6 Temporary commit: more work on simulator...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
   439
    "Modified: / 26-08-2014 / 08:02:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   440
! !
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   441
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   442
!GDBMIParser methodsFor:'parsing-misc'!
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   443
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   444
parseResult
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   445
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   446
    result → variable = value
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   447
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   448
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   449
    | name value |
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   450
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   451
    name := self parseVariable.
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   452
    self expect: $=.
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   453
    value := self parseValue.
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   454
    ^ name -> value
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   455
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   456
    "Created: / 30-05-2014 / 10:15:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   457
    "Modified: / 31-05-2014 / 00:39:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   458
!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   459
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   460
parseString
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   461
    ^ String streamContents:[:s|
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   462
        [ self peek notNil and:[self peek isLetterOrDigit or:['-_' includes: self peek ] ] ] whileTrue:[
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   463
            s nextPut: self next.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   464
        ]
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   465
    ].
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   466
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   467
    "Created: / 30-05-2014 / 10:32:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   468
    "Modified: / 24-06-2014 / 23:30:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   469
!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   470
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   471
parseVariable
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   472
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   473
    variable → string
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   474
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   475
    ^ self parseString
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   476
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   477
    "Created: / 30-05-2014 / 10:31:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   478
! !
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   479
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   480
!GDBMIParser methodsFor:'parsing-stream output'!
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   481
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   482
parseStreamRecord
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   483
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   484
    stream-record → console-stream-output | target-stream-output | log-stream-output
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   485
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   486
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   487
    self peek == $~ ifTrue:[
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   488
        self next.
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   489
        ^ self parseStreamRecord: GDBConsoleOutputEvent.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   490
    ].
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   491
    self peek == $@ ifTrue:[
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   492
        self next.
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   493
        ^ self parseStreamRecord: GDBTargetOutputEvent.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   494
    ].
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   495
    self peek == $& ifTrue:[
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   496
        self next.
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   497
        ^ self parseStreamRecord: GDBLogOutputEvent.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   498
    ].
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   499
    self error:'Invalid stream record'
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   500
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   501
    "Created: / 30-05-2014 / 09:57:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   502
    "Modified: / 02-06-2014 / 22:21:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   503
!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   504
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   505
parseStreamRecord: eventClass
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   506
    | value |
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   507
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   508
    value := self parseCString.
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   509
    self parseNl.
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   510
    ^ eventClass new value: value; yourself
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   511
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   512
    "Created: / 01-06-2014 / 23:41:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   513
! !
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   514
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   515
!GDBMIParser methodsFor:'parsing-utils'!
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   517
expect: aStringOrChar
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   518
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
    | c |
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   520
    aStringOrChar isCharacter ifTrue:[
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   521
	(self atEnd or:[(c := self next) ~= aStringOrChar]) ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   522
	    self error:('Expected ''%1'' got ''%2''.' bindWith: aStringOrChar with: c).
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   523
	].
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   524
	^self.
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   525
    ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   526
    aStringOrChar isString ifTrue:[
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   527
	aStringOrChar do:[:expected|
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   528
	    (self atEnd or:[(c := self next) ~= expected]) ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   529
		self error:('Expected ''%1''.' bindWith: aStringOrChar).
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   530
	    ].
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   531
	].
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   532
	^self.
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   533
    ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   534
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   535
    self error:'Invalid expected value'.
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   536
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   537
    "Created: / 19-11-2012 / 20:08:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   538
    "Modified: / 28-05-2014 / 00:17:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   539
!
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   540
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   541
expectLineEnd
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   542
    self expect: Character cr.
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   543
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   544
    "Created: / 19-11-2012 / 20:06:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   545
!
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   546
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   547
expectSpace
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   548
    self expect: Character space.
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   549
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   550
    "Created: / 19-11-2012 / 20:06:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   551
! !
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   552
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   553
!GDBMIParser methodsFor:'parsing-values'!
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   554
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   555
parseConst
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   556
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   557
    const → c-string
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   558
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   559
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   560
    ^ self parseCString.
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   561
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   562
    "Created: / 30-05-2014 / 10:36:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   563
!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   564
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   565
parseList
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   566
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   567
    list → '[]' | '[' value ( ',' value )* ']' | '[' result ( ',' result )* ']'
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   568
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   569
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   570
    | list |
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   571
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   572
    self expect: $[.
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   573
    list := self parseListBody.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   574
    self expect: $].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   575
    ^ list
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   576
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   577
    "Created: / 30-05-2014 / 10:36:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   578
    "Modified: / 17-06-2014 / 22:14:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   579
!
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   580
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   581
parseListBody
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   582
    | value object |
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   583
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   584
    object := OrderedCollection new.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   585
    self peek ~~ $] ifTrue:[
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   586
        [
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   587
            ('"{[' includes: self peek) ifFalse:[ 
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   588
                self parseVariable.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   589
                self expect: $=.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   590
            ].
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   591
            value := self parseValue.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   592
            object add: value.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   593
        ] doWhile:[
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   594
            (self peek == $,) ifTrue:[ self next. true ] ifFalse:[ false ]     
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   595
        ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   596
    ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   597
    ^ object asArray
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   598
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   599
    "Created: / 17-06-2014 / 22:14:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   600
    "Modified: / 19-06-2014 / 09:32:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   601
!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   602
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   603
parseTuple
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   604
    | object |
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   605
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   606
    self expect: ${.
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   607
    object := self parseTupleBody.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   608
    self expect: $}.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   609
    ^ object
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   610
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   611
    "Created: / 30-05-2014 / 10:36:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   612
    "Modified (comment): / 14-06-2014 / 02:28:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   613
!
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   614
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   615
parseTupleBody
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   616
    | name value dict |
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   617
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   618
    dict := Dictionary new.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   619
    self peek ~~ $} ifTrue:[
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   620
        name := self parseVariable.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   621
        self expect: $=.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   622
        value := self parseValue.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   623
        dict at: name put: value.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   624
        [ self peek == $, ] whileTrue:[
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   625
            self next.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   626
            name := self parseVariable.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   627
            self expect: $=.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   628
            value := self parseValue.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   629
            dict at: name put: value.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   630
        ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   631
    ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   632
    ^ dict
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   633
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   634
    "Created: / 14-06-2014 / 02:19:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   635
!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   636
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   637
parseValue
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   638
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   639
    value → const | tuple | list
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   640
    "
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   641
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   642
    self peek == $" ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   643
	^ self parseConst
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   644
    ].
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   645
    self peek == ${ ifTrue:[
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   646
	^ self parseTuple.
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   647
    ].
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   648
    self peek == $[ ifTrue:[
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   649
	^ self parseList
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   650
    ].
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   651
    self error:'Invalid value'
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   652
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   653
    "Created: / 30-05-2014 / 10:31:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   654
! !
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   655
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   656
!GDBMIParser methodsFor:'parsing-values-typed'!
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   657
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   658
parseValueAsBoolean
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   659
    "
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   660
    bool → 'y' | 'n' | value
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   661
    "
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   662
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   663
    self peek == $" ifTrue:[
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   664
        | c |
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   665
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   666
        self expect: $".
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   667
        c := self next.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   668
        (c ~~ $y and:[ c ~~ $n ]) ifTrue:[ 
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   669
            ^ self parseCStringRest: c asString.  
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   670
        ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   671
        self peek ~~ $" ifTrue:[ 
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   672
            ^ self parseCStringRest: c asString.  
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   673
        ].
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   674
        self next.
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   675
        ^ c == $y
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   676
    ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   677
    ^ self parseValue
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   678
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   679
    "Created: / 18-06-2014 / 07:33:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   680
    "Modified: / 18-06-2014 / 20:55:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   681
!
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   682
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   683
parseValueAsInstanceOf: class
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   684
    | description |
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   685
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   686
    class == Boolean ifTrue:[ 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   687
        description := Magritte::MABooleanDescription new.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   688
    ] ifFalse:[
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   689
    class == Integer ifTrue:[ 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   690
        description := Magritte::MANumberDescription new
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   691
    ] ifFalse:[
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   692
    class == String ifTrue:[ 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   693
        description := Magritte::MAStringDescription new
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   694
    ] ifFalse:[
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   695
        description := class description. 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   696
    ]]].     
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   697
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   698
    ^ self parseValueAsListOf: class describedBy: description.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   699
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   700
    "Created: / 18-06-2014 / 20:28:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   701
    "Modified: / 23-09-2014 / 23:16:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   702
!
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   703
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   704
parseValueAsInstanceOf: class describedBy: descriptor
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   705
    | object propertyName propertyValue propertyDescriptor |
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   706
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   707
    self peek ~~ ${ ifTrue:[ ^ self parseValue ].
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   708
    self next. "/ eat ${
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   709
    object := class new.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   710
    self peek ~~ $} ifTrue:[
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   711
        [ 
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   712
            propertyName := self parseVariable.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   713
            propertyDescriptor := descriptor propertyDescriptorAt: propertyName.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   714
            self expect: $=.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   715
            propertyDescriptor isNil ifTrue:[ 
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   716
                propertyValue := self parseValue.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   717
            ] ifFalse:[ 
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   718
                propertyValue := propertyDescriptor parseUsingGDBMIParser:self. 
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   719
            ].
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   720
            object propertyAt: propertyName put: propertyValue
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   721
        ] doWhile: [ 
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   722
            (self peek == $,) ifTrue:[ self next. true ] ifFalse:[ false ]
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   723
        ].
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   724
    ].
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   725
    self expect: $}.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   726
    ^ object
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   727
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   728
    "Created: / 18-06-2014 / 20:28:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   729
    "Modified: / 18-06-2014 / 23:34:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   730
!
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   731
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   732
parseValueAsInteger
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   733
    "
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   734
    bool → ''' [0-9]+ ''' | value
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   735
    "
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   736
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   737
    self peek == $" ifTrue:[
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   738
        | c v |
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   739
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   740
        self expect: $".
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   741
        c := self next.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   742
        v := 0.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   743
        c isDigit ifTrue:[ 
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   744
            [ c isDigit ] whileTrue:[ 
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   745
                v := (v * 10) + (c codePoint - $0 codePoint).
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   746
                c := self next.
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   747
            ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   748
            c == $" ifTrue:[ 
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   749
                ^ v
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   750
            ] ifFalse:[ 
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   751
                ^ self parseCStringRest:v printString , c  
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   752
            ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   753
        ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   754
        ^ self parseCStringRest: c asString
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   755
    ].
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   756
    ^ self parseValue
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   757
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   758
    "Created: / 18-06-2014 / 07:39:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   759
!
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   760
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   761
parseValueAsListOf: class
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   762
    | description |
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   763
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   764
    class == Boolean ifTrue:[ 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   765
        description := Magritte::MABooleanDescription new.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   766
    ] ifFalse:[
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   767
    class == Integer ifTrue:[ 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   768
        description := Magritte::MANumberDescription new
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   769
    ] ifFalse:[
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   770
    class == String ifTrue:[ 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   771
        description := Magritte::MAStringDescription new
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   772
    ] ifFalse:[
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   773
        description := class description. 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   774
    ]]].     
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   775
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   776
    ^ self parseValueAsListOf: class describedBy: description.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   777
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   778
    "Created: / 18-06-2014 / 21:00:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   779
    "Modified: / 23-09-2014 / 23:17:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   780
!
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   781
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   782
parseValueAsListOf:class describedBy:descriptor
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   783
    | list |
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   784
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   785
    self peek ~~ $[ ifTrue:[ ^ self parseValue ].
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   786
    self next. "/ eat ${
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   787
    self peek ~~ $] ifTrue:[
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   788
        list := OrderedCollection new.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   789
        [ 
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   790
            self peek isAlphaNumeric ifTrue:[ 
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   791
                self parseVariable.
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   792
                self expect: $=. 
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   793
            ].
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   794
            list add: (descriptor parseUsingGDBMIParser:self)
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   795
        ] doWhile: [ 
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   796
            (self peek == $,) ifTrue:[ self next. true ] ifFalse:[ false ]
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   797
        ].
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   798
    ].
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   799
    self expect: $].
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   800
    ^ list
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   801
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   802
    "Created: / 18-06-2014 / 21:00:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   803
    "Modified: / 17-09-2014 / 08:03:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   804
!
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   805
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   806
parseValueAsString
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   807
    ^ self parseCString
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   808
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   809
    "Created: / 23-09-2014 / 22:22:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   810
! !
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   811
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   812
!GDBMIParser methodsFor:'streaming'!
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   813
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   814
atEnd
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   815
    ^ lookahead isNil and:[ source atEnd ].
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   816
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   817
    "Created: / 28-05-2014 / 00:17:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   818
    "Modified: / 14-06-2014 / 02:27:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   819
!
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   820
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   821
next
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   822
    | next |
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   823
    lookahead notNil ifTrue:[
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   824
        next := lookahead.
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   825
        lookahead := nil.
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   826
        ^ next.
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   827
    ].
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   828
    next := source next.
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   829
    recorder notNil ifTrue:[ 
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   830
        recorder recordResponseChar: next.
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   831
    ].
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   832
    ^ next
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   833
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   834
    "Created: / 23-10-2012 / 10:57:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   835
    "Modified: / 22-06-2014 / 21:56:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   836
!
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   837
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   838
nextLine
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   839
    | line |
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   840
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   841
    line := lookahead notNil 
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   842
                ifTrue:[ lookahead asString ,  source nextLine ] 
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   843
                ifFalse:[ source nextLine ].
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   844
    lookahead := nil.
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   845
    recorder notNil ifTrue:[ 
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   846
        recorder recordResponse: line.  
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   847
    ].
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   848
    ^ line
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   849
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   850
    "Created: / 23-10-2012 / 11:05:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   851
    "Modified: / 24-06-2014 / 23:28:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   852
!
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   853
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   854
peek
5
5cdb702e1bec stc fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   855
    lookahead notNil ifTrue:[
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   856
        ^ lookahead
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   857
    ].
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   858
    lookahead := source next.
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   859
    recorder notNil ifTrue:[ 
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   860
        lookahead notNil ifTrue:[
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   861
            recorder recordResponseChar: lookahead.
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   862
        ].
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   863
    ].
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   864
    ^ lookahead
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   865
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   866
    "Created: / 28-05-2014 / 00:18:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   867
    "Modified: / 23-06-2014 / 09:34:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   868
!
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   869
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   870
peekOrNil
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   871
    lookahead notNil ifTrue:[ ^ lookahead ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   872
    source atEnd ifTrue:[ ^ nil ].
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   873
    ^ self peek
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   874
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   875
    "Created: / 28-05-2014 / 00:15:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   876
!
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   877
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   878
skipSeparators
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   879
    [ self peek notNil and:[ self peek isSeparator ] ] whileTrue:[ self next ]
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   880
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   881
    "Created: / 19-11-2012 / 20:05:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   882
    "Modified: / 24-06-2014 / 23:31:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   883
! !
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   884