compiler/PPCTokenCodeGenerator.st
changeset 502 1e45d3c96ec5
parent 464 f6d77fee9811
child 503 ff58cd9f1f3c
child 515 b5316ef15274
equal deleted inserted replaced
464:f6d77fee9811 502:1e45d3c96ec5
    29 ! !
    29 ! !
    30 
    30 
    31 !PPCTokenCodeGenerator methodsFor:'visiting'!
    31 !PPCTokenCodeGenerator methodsFor:'visiting'!
    32 
    32 
    33 visitOptionalNode: node
    33 visitOptionalNode: node
    34     compiler codeStoreValueOf: [ self visit: node child ] intoVariable: self retvalVar.
    34     compiler 
       
    35           codeAssignParsedValueOf:[ self visit:node child ]
       
    36           to:self retvalVar.
    35     compiler codeAssign: 'false.' to: 'error'.
    37     compiler codeAssign: 'false.' to: 'error'.
    36     compiler codeReturn.
    38     compiler codeReturn.
    37 !
    39 !
    38 
    40 
    39 visitTokenNode: node
    41 visitTokenNode: node
    58         self addGuard: node ifTrue: nil  ifFalse: [ compiler addOnLine: '^ false' ].
    60         self addGuard: node ifTrue: nil  ifFalse: [ compiler addOnLine: '^ false' ].
    59     ].
    61     ].
    60 
    62 
    61     
    63     
    62     compiler codeAssign: 'context position + 1.' to: startVar.
    64     compiler codeAssign: 'context position + 1.' to: startVar.
    63     compiler codeStoreValueOf: [ self visit: node child ] intoVariable: #whatever.
    65     compiler codeAssignParsedValueOf:[ self visit:node child ] to:#whatever.
    64     compiler add: 'error ifTrue: [ ^ error := false ].'.
    66     compiler add: 'error ifTrue: [ ^ error := false ].'.
    65 
    67 
    66     compiler codeAssign: 'context position.' to: endVar.
    68     compiler codeAssign: 'context position.' to: endVar.
    67 
    69 
    68     compiler codeTranscriptShow: 'current token type: ', id storeString.
    70     compiler codeTranscriptShow: 'current token type: ', id storeString.
   107                                                             stop: context position
   109                                                             stop: context position
   108                                                             value: nil.'
   110                                                             value: nil.'
   109                to: 'currentTokenValue := ', self retvalVar.
   111                to: 'currentTokenValue := ', self retvalVar.
   110     
   112     
   111     compiler addComment: 'Consume Whitespace:'.
   113     compiler addComment: 'Consume Whitespace:'.
   112     compiler codeStoreValueOf: [ self visit: node whitespace ] intoVariable: #whatever.
   114     compiler 
       
   115           codeAssignParsedValueOf:[ self visit:node whitespace ]
       
   116           to:#whatever.
   113     compiler nl.
   117     compiler nl.
   114     
   118     
   115     compiler add: '^ true'.
   119     compiler add: '^ true'.
   116 
   120 
   117     self fromTokenMode.
   121     self fromTokenMode.
   139     node allNodes size > 2 ifTrue: [ 
   143     node allNodes size > 2 ifTrue: [ 
   140         self addGuard: node ifTrue: nil  ifFalse: [ compiler addOnLine: '^ false' ].
   144         self addGuard: node ifTrue: nil  ifFalse: [ compiler addOnLine: '^ false' ].
   141     ].
   145     ].
   142 
   146 
   143     compiler codeAssign: 'context position + 1.' to: startVar.
   147     compiler codeAssign: 'context position + 1.' to: startVar.
   144     compiler codeStoreValueOf: [ self visit: node child ] intoVariable: #whatever.
   148     compiler codeAssignParsedValueOf:[ self visit:node child ] to:#whatever.
   145 
   149 
   146     compiler add: 'error ifTrue: [ ^ error := false ].'.
   150     compiler add: 'error ifTrue: [ ^ error := false ].'.
   147 
   151 
   148         compiler codeAssign: 'context position.' to: endVar.
   152         compiler codeAssign: 'context position.' to: endVar.
   149     
   153     
   150         compiler addComment: 'Consume Whitespace:'.
   154         compiler addComment: 'Consume Whitespace:'.
   151         compiler codeStoreValueOf: [ self visit: node whitespace ] intoVariable: #whatever.
   155         compiler 
       
   156               codeAssignParsedValueOf:[ self visit:node whitespace ]
       
   157               to:#whatever.
   152         compiler nl.
   158         compiler nl.
   153     
   159     
   154     
   160     
   155         compiler codeTranscriptShow: 'current token type: ', id storeString.
   161         compiler codeTranscriptShow: 'current token type: ', id storeString.
   156         compiler codeAssign: id storeString, '.' to: 'currentTokenType'.
   162         compiler codeAssign: id storeString, '.' to: 'currentTokenType'.