tools/JavaBlockParser.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 15 Dec 2012 23:25:19 +0100
branchdevelopment
changeset 1883 b36e52129040
parent 1879 7d232ff32dde
permissions -rw-r--r--
Initial implementation of JavaCompiler using Oracle javac toolbox. Not yet finished.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
     1
"{ Package: 'stx:libjava/tools' }"
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
     2
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
     3
PPParser subclass:#JavaBlockParser
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
     4
	instanceVariableNames:''
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
     5
	classVariableNames:''
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
     6
	poolDictionaries:''
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
     7
	category:'Languages-Java-Parser'
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
     8
!
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
     9
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    10
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    11
!JavaBlockParser methodsFor:'parsing'!
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    12
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    13
parseOn: aStream
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    14
1426
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    15
    | openCount peekC start stop |
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    16
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    17
    aStream skipSeparators.
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    18
    peekC := aStream peek.
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    19
    peekC == #/ ifTrue:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    20
        aStream next.
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    21
        aStream skipComment
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    22
    ].
1426
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    23
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    24
    peekC ~~ ${ ifTrue:[
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    25
        ^ PPFailure message: ('unexpected char (got ', peekC, ' expecting { )') at: aStream position
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    26
    ].
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    27
    openCount := 1.
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    28
    aStream next.
1426
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    29
    start := aStream position.
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    30
    [ openCount ~~ 0 ] whileTrue:[
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    31
        aStream atEnd ifTrue:[
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    32
            ^ PPFailure message: ('unexpected end of input') at: aStream position
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    33
        ].
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    34
        peekC := aStream peek.
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    35
        peekC == ${ ifTrue:[
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    36
            aStream next.    
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    37
            openCount := openCount + 1
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    38
        ] ifFalse:[peekC == $} ifTrue:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    39
            aStream next.
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    40
            openCount := openCount - 1
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    41
        ] ifFalse:[peekC == $/ ifTrue:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    42
            aStream next.
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    43
            aStream peek == $*  ifTrue:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    44
                aStream next.
1426
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    45
                aStream rememberTokenStartPosition:2.
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    46
                aStream skipComment
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    47
            ] ifFalse:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    48
                aStream peek == $/ ifTrue:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    49
                    aStream next.
1426
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    50
                    aStream rememberTokenStartPosition:0.
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    51
                    aStream skipEOLComment
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    52
                ]
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    53
            ]
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    54
        ] ifFalse:[peekC == $" ifTrue:[
1424
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
    55
            aStream rememberTokenStartPosition.
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    56
            aStream nextString: $" character: false.
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    57
        ] ifFalse:[peekC == $' ifTrue:[
1424
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
    58
            aStream rememberTokenStartPosition.
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    59
            aStream  nextString: $' character: true.
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    60
        ] ifFalse:[
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    61
            aStream next
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1420
diff changeset
    62
        ]]]]]
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    63
    ].
1426
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    64
    stop := aStream position.
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    65
    JavaToken new
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    66
        type: #__Block__;
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    67
        value: nil;
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    68
        startPosition: start;
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    69
        endPosition: stop;
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    70
        yourself.
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    71
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    72
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    73
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    74
    "
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    75
        ( JavaBlockParser new trim , ';' asParser trim) parse: '{ } ;'
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    76
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    77
    "
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    78
1426
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
    79
    "Modified: / 17-03-2012 / 19:16:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    80
! !
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    81
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    82
!JavaBlockParser class methodsFor:'documentation'!
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    83
1879
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
    84
version_HG
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
    85
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
    86
    ^ '$Changeset: <not expanded> $'
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
    87
!
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
    88
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    89
version_SVN
1879
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
    90
    ^ '§Id§'
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents:
diff changeset
    91
! !