compiler/Dart__Parser.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 10 Jan 2013 13:21:04 +0000
changeset 1 46dd2b3b6974
child 2 8fedb5e096fc
permissions -rw-r--r--
Initial outline of Dart parser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'jv:dart/compiler' }"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Dart }"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
PPCompositeParser subclass:#Parser
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:''
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'Languages-Dart-Parser'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
PPParser subclass:#TokenParser
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
	instanceVariableNames:'tokenType'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
	classVariableNames:''
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	poolDictionaries:''
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
	privateIn:Parser
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
!Parser::TokenParser class methodsFor:'instance creation'!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
for: tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
    ^self new tokenType: tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
    "Created: / 14-03-2012 / 23:10:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
! !
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
!Parser::TokenParser methodsFor:'accessing'!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    ^ tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
tokenType:aSymbol
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    tokenType := aSymbol.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
! !
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
!Parser::TokenParser methodsFor:'parsing'!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
parseOn:aJavaScanner
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    "Parse aStream with the receiving parser and answer the parse-result or an instance of PPFailure. 
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
    Override this method in subclasses to specify custom parse behavior. Do not call this method from outside, 
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
    instead use #parse:."
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    | pos |
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    pos := aJavaScanner position.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    ^(aJavaScanner nextToken = tokenType) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
        aJavaScanner token
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
        aJavaScanner position: pos.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
        PPFailure message: (tokenType printString , ' token expected (got ', aJavaScanner tokenType , ' {',(aJavaScanner tokenValue ? '<nil>') printString,'})') at: aJavaScanner position
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
    ]
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
    "Modified: / 17-03-2012 / 13:34:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
! !
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
!Parser class methodsFor:'documentation'!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
version_HG
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    ^ '$Changeset: <not expanded> $'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
! !