Removed syntax for inline assembly, use <primitive: [:asm | ... ]> syntax.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Tue, 22 Sep 2015 17:43:38 +0100
changeset 14fa42d3f1a578
parent 13 97090c2baa33
child 15 10a95d798b36
Removed syntax for inline assembly, use <primitive: [:asm | ... ]> syntax.

This one is easier to implement and less introusive, syntax-wise. And follows
Smalltalk tradiiton.
compiler/Make.proto
compiler/Make.spec
compiler/TFormatter.st
compiler/TInlineAssemblyBeginToken.st
compiler/TInlineAssemblyEndToken.st
compiler/TInlineAssemblyNode.st
compiler/TParser.st
compiler/TParserTests.st
compiler/TProgramNodeVisitor.st
compiler/TScanner.st
compiler/TTypechecker.st
compiler/abbrev.stc
compiler/bc.mak
compiler/jv_tea_compiler.st
compiler/libInit.cc
     1.1 --- a/compiler/Make.proto	Sun Sep 20 12:01:42 2015 +0100
     1.2 +++ b/compiler/Make.proto	Tue Sep 22 17:43:38 2015 +0100
     1.3 @@ -135,15 +135,11 @@
     1.4  $(OUTDIR)TCompilerError.$(O) TCompilerError.$(H): TCompilerError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
     1.5  $(OUTDIR)TEnvironmentProvider.$(O) TEnvironmentProvider.$(H): TEnvironmentProvider.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
     1.6  $(OUTDIR)TFormatter.$(O) TFormatter.$(H): TFormatter.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBFormatter.$(H) $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBProgramNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
     1.7 -$(OUTDIR)TInlineAssemblyBeginToken.$(O) TInlineAssemblyBeginToken.$(H): TInlineAssemblyBeginToken.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBToken.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
     1.8 -$(OUTDIR)TInlineAssemblyEndToken.$(O) TInlineAssemblyEndToken.$(H): TInlineAssemblyEndToken.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBToken.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
     1.9 -$(OUTDIR)TInlineAssemblyNode.$(O) TInlineAssemblyNode.$(H): TInlineAssemblyNode.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBBlockNode.$(H) $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBProgramNode.$(H) $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBStatementNode.$(H) $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBValueNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    1.10  $(OUTDIR)TMetaDefinition.$(O) TMetaDefinition.$(H): TMetaDefinition.st $(INCLUDE_TOP)/stx/goodies/ring/RGBehaviorDefinition.$(H) $(INCLUDE_TOP)/stx/goodies/ring/RGClassDescriptionDefinition.$(H) $(INCLUDE_TOP)/stx/goodies/ring/RGDefinition.$(H) $(INCLUDE_TOP)/stx/goodies/ring/RGGlobalDefinition.$(H) $(INCLUDE_TOP)/stx/goodies/ring/RGMetaclassDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    1.11  $(OUTDIR)TMethodDefinition.$(O) TMethodDefinition.$(H): TMethodDefinition.st $(INCLUDE_TOP)/stx/goodies/ring/RGDefinition.$(H) $(INCLUDE_TOP)/stx/goodies/ring/RGElementDefinition.$(H) $(INCLUDE_TOP)/stx/goodies/ring/RGMethodDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    1.12  $(OUTDIR)TNamespaceDefinition.$(O) TNamespaceDefinition.$(H): TNamespaceDefinition.st $(INCLUDE_TOP)/stx/goodies/ring/RGAbstractContainer.$(H) $(INCLUDE_TOP)/stx/goodies/ring/RGContainer.$(H) $(INCLUDE_TOP)/stx/goodies/ring/RGDefinition.$(H) $(INCLUDE_TOP)/stx/goodies/ring/RGNamespace.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    1.13  $(OUTDIR)TParser.$(O) TParser.$(H): TParser.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBParser.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    1.14  $(OUTDIR)TProgramNodeVisitor.$(O) TProgramNodeVisitor.$(H): TProgramNodeVisitor.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBProgramNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    1.15 -$(OUTDIR)TScanner.$(O) TScanner.$(H): TScanner.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBScanner.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(STCHDR)
    1.16  $(OUTDIR)TScope.$(O) TScope.$(H): TScope.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    1.17  $(OUTDIR)TSourceReader.$(O) TSourceReader.$(H): TSourceReader.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    1.18  $(OUTDIR)TSpecialFormNode.$(O) TSpecialFormNode.$(H): TSpecialFormNode.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBMessageNode.$(H) $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBProgramNode.$(H) $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBStatementNode.$(H) $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBValueNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
     2.1 --- a/compiler/Make.spec	Sun Sep 20 12:01:42 2015 +0100
     2.2 +++ b/compiler/Make.spec	Tue Sep 22 17:43:38 2015 +0100
     2.3 @@ -59,15 +59,11 @@
     2.4  	TCompilerError \
     2.5  	TEnvironmentProvider \
     2.6  	TFormatter \
     2.7 -	TInlineAssemblyBeginToken \
     2.8 -	TInlineAssemblyEndToken \
     2.9 -	TInlineAssemblyNode \
    2.10  	TMetaDefinition \
    2.11  	TMethodDefinition \
    2.12  	TNamespaceDefinition \
    2.13  	TParser \
    2.14  	TProgramNodeVisitor \
    2.15 -	TScanner \
    2.16  	TScope \
    2.17  	TSourceReader \
    2.18  	TSpecialFormNode \
    2.19 @@ -107,15 +103,11 @@
    2.20      $(OUTDIR_SLASH)TCompilerError.$(O) \
    2.21      $(OUTDIR_SLASH)TEnvironmentProvider.$(O) \
    2.22      $(OUTDIR_SLASH)TFormatter.$(O) \
    2.23 -    $(OUTDIR_SLASH)TInlineAssemblyBeginToken.$(O) \
    2.24 -    $(OUTDIR_SLASH)TInlineAssemblyEndToken.$(O) \
    2.25 -    $(OUTDIR_SLASH)TInlineAssemblyNode.$(O) \
    2.26      $(OUTDIR_SLASH)TMetaDefinition.$(O) \
    2.27      $(OUTDIR_SLASH)TMethodDefinition.$(O) \
    2.28      $(OUTDIR_SLASH)TNamespaceDefinition.$(O) \
    2.29      $(OUTDIR_SLASH)TParser.$(O) \
    2.30      $(OUTDIR_SLASH)TProgramNodeVisitor.$(O) \
    2.31 -    $(OUTDIR_SLASH)TScanner.$(O) \
    2.32      $(OUTDIR_SLASH)TScope.$(O) \
    2.33      $(OUTDIR_SLASH)TSourceReader.$(O) \
    2.34      $(OUTDIR_SLASH)TSpecialFormNode.$(O) \
     3.1 --- a/compiler/TFormatter.st	Sun Sep 20 12:01:42 2015 +0100
     3.2 +++ b/compiler/TFormatter.st	Tue Sep 22 17:43:38 2015 +0100
     3.3 @@ -11,106 +11,6 @@
     3.4  
     3.5  !TFormatter methodsFor:'visitor-double dispatching'!
     3.6  
     3.7 -acceptInlineAssemblyNode:aBlockNode 
     3.8 -    |seqNode multiline formattedBody formatter parent parentSelector|
     3.9 -
    3.10 -    (CStyleBlocks 
    3.11 -        and:[ (parent := aBlockNode parent) notNil and:[ parent isMessage ] ]) 
    3.12 -            ifTrue:
    3.13 -                [ parent receiver == aBlockNode 
    3.14 -                    ifTrue:
    3.15 -                        [ " I am the receiver of a message (i.e. typically a control structure) "
    3.16 -                        ^ self acceptInlineAssemblyNodeCStyle:aBlockNode ].
    3.17 -                parentSelector := parent selector.
    3.18 -                parentSelector == #timesRepeat: 
    3.19 -                    ifTrue:
    3.20 -                        [ " I am the receiver of a message (i.e. typically a control structure) "
    3.21 -                        self indent:-2 while:[ ^ self acceptInlineAssemblyNodeCStyle:aBlockNode ] ] ].
    3.22 -    seqNode := aBlockNode body.
    3.23 -    formatter := (self copy)
    3.24 -                lineStart:0;
    3.25 -                yourself.
    3.26 -    seqNode isNil ifTrue:[ 
    3.27 -        formattedBody := ''
    3.28 -    ] ifFalse:[
    3.29 -        formattedBody := formatter format:seqNode 
    3.30 -    ].
    3.31 -    multiline := (self lineLength + formattedBody size > self maxLineSize) 
    3.32 -                or:[ formatter isMultiLine ].
    3.33 -    (CStyleBlocks and:[ multiline ]) 
    3.34 -        ifTrue:
    3.35 -            [ self indent:-1 while:[ self acceptInlineAssemblyNodeCStyle:aBlockNode ].
    3.36 -            ^ self ].
    3.37 -    multiline ifTrue:[ self indent ].
    3.38 -    codeStream nextPutAll:'%['.
    3.39 -    SpaceAfterBlockStart 
    3.40 -        ifTrue:
    3.41 -            [ (formattedBody notEmpty and:[ aBlockNode arguments isEmptyOrNil ]) 
    3.42 -                ifTrue:[ codeStream space. ] ].
    3.43 -    self formatBlockArguments:aBlockNode.
    3.44 -    aBlockNode arguments isEmpty 
    3.45 -        ifFalse:
    3.46 -            [ codeStream nextPutAll:'| '.
    3.47 -            multiline ifTrue:[ self indent ] ].
    3.48 -    codeStream nextPutAll:formattedBody.
    3.49 -    SpaceBeforeBlockEnd 
    3.50 -        ifTrue:[ formattedBody notEmpty ifTrue:[ codeStream space. ] ].
    3.51 -    codeStream nextPutAll:'%]'
    3.52 -
    3.53 -    "Created: / 02-09-2015 / 06:49:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    3.54 -!
    3.55 -
    3.56 -acceptInlineAssemblyNodeCStyle: aBlockNode 
    3.57 -        | seqNode l multiline formattedBody formatter |
    3.58 -
    3.59 -        seqNode := aBlockNode body.
    3.60 -
    3.61 -        formatter := (self copy) lineStart: 0; yourself.
    3.62 -        formatter indentWhile:[
    3.63 -            formattedBody := formatter format: seqNode.
    3.64 -formattedBody asCollectionOfLines last isBlank ifTrue:[
    3.65 -     formattedBody := (formattedBody asCollectionOfLines copyButLast:1) asStringWith:Character cr.
    3.66 -].
    3.67 -        ].
    3.68 -        multiline := (l := self lineLength + formattedBody size) > self maxLineSize
    3.69 -                                or: [formatter isMultiLine].
    3.70 -        multiline := multiline or:[l > (MaxLengthForSingleLineBlocks ? 60)].
    3.71 -
    3.72 -        codeStream nextPutAll:'%['.
    3.73 -        multiline ifFalse:[
    3.74 -            SpaceAfterBlockStart 
    3.75 -                ifTrue:[
    3.76 -                    (formattedBody notEmpty and:[aBlockNode hasArguments not]) 
    3.77 -                        ifTrue:[
    3.78 -                            codeStream space.]].
    3.79 -        ].
    3.80 -        self indentWhile:[
    3.81 -            (BlockArgumentsOnNewLine or:[aBlockNode hasArguments not]) ifTrue:[
    3.82 -                multiline ifTrue:[
    3.83 -                    self indent.
    3.84 -                ].
    3.85 -            ].
    3.86 -
    3.87 -            self formatBlockArguments:aBlockNode.
    3.88 -            aBlockNode arguments isEmpty 
    3.89 -                ifFalse:[ 
    3.90 -                    codeStream nextPutAll: '| '.
    3.91 -                    multiline ifTrue: [self indent]].
    3.92 -        ].
    3.93 -        codeStream nextPutAll: formattedBody.
    3.94 -        multiline 
    3.95 -            ifTrue: [self indent]
    3.96 -            ifFalse:[ 
    3.97 -                SpaceBeforeBlockEnd 
    3.98 -                    ifTrue:[
    3.99 -                        formattedBody notEmpty 
   3.100 -                            ifTrue:[
   3.101 -                                codeStream space.]]].
   3.102 -        codeStream nextPutAll:'%]'.
   3.103 -
   3.104 -    "Created: / 02-09-2015 / 06:48:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   3.105 -!
   3.106 -
   3.107  acceptSimpleTypeNode: aTSimpleTypeNode
   3.108      codeStream nextPutAll: aTSimpleTypeNode name
   3.109  
     4.1 --- a/compiler/TInlineAssemblyBeginToken.st	Sun Sep 20 12:01:42 2015 +0100
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,27 +0,0 @@
     4.4 -"{ Package: 'jv:tea/compiler' }"
     4.5 -
     4.6 -"{ NameSpace: Smalltalk }"
     4.7 -
     4.8 -RBToken subclass:#TInlineAssemblyBeginToken
     4.9 -	instanceVariableNames:''
    4.10 -	classVariableNames:''
    4.11 -	poolDictionaries:''
    4.12 -	category:'Languages-Tea-Compiler-AST'
    4.13 -!
    4.14 -
    4.15 -
    4.16 -!TInlineAssemblyBeginToken methodsFor:'testing'!
    4.17 -
    4.18 -isTInlineAssemblyBegin
    4.19 -    ^ true
    4.20 -
    4.21 -    "Created: / 02-09-2015 / 06:20:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    4.22 -! !
    4.23 -
    4.24 -!TInlineAssemblyBeginToken class methodsFor:'documentation'!
    4.25 -
    4.26 -version_HG
    4.27 -
    4.28 -    ^ '$Changeset: <not expanded> $'
    4.29 -! !
    4.30 -
     5.1 --- a/compiler/TInlineAssemblyEndToken.st	Sun Sep 20 12:01:42 2015 +0100
     5.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.3 @@ -1,19 +0,0 @@
     5.4 -"{ Package: 'jv:tea/compiler' }"
     5.5 -
     5.6 -"{ NameSpace: Smalltalk }"
     5.7 -
     5.8 -RBToken subclass:#TInlineAssemblyEndToken
     5.9 -	instanceVariableNames:''
    5.10 -	classVariableNames:''
    5.11 -	poolDictionaries:''
    5.12 -	category:'Languages-Tea-Compiler-AST'
    5.13 -!
    5.14 -
    5.15 -!TInlineAssemblyEndToken methodsFor:'testing'!
    5.16 -
    5.17 -isTInlineAssemblyEnd
    5.18 -    ^ true
    5.19 -
    5.20 -    "Created: / 02-09-2015 / 06:20:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    5.21 -! !
    5.22 -
     6.1 --- a/compiler/TInlineAssemblyNode.st	Sun Sep 20 12:01:42 2015 +0100
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,33 +0,0 @@
     6.4 -"{ Package: 'jv:tea/compiler' }"
     6.5 -
     6.6 -"{ NameSpace: Smalltalk }"
     6.7 -
     6.8 -RBBlockNode subclass:#TInlineAssemblyNode
     6.9 -	instanceVariableNames:''
    6.10 -	classVariableNames:''
    6.11 -	poolDictionaries:''
    6.12 -	category:'Languages-Tea-Compiler-AST'
    6.13 -!
    6.14 -
    6.15 -!TInlineAssemblyNode methodsFor:'testing'!
    6.16 -
    6.17 -isBlock
    6.18 -        ^false
    6.19 -
    6.20 -    "Created: / 02-09-2015 / 06:29:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    6.21 -!
    6.22 -
    6.23 -isInlineAssembly
    6.24 -        ^true
    6.25 -
    6.26 -    "Created: / 02-09-2015 / 06:29:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    6.27 -! !
    6.28 -
    6.29 -!TInlineAssemblyNode methodsFor:'visitor'!
    6.30 -
    6.31 -acceptVisitor: aProgramNodeVisitor 
    6.32 -        ^aProgramNodeVisitor acceptInlineAssemblyNode: self
    6.33 -
    6.34 -    "Created: / 02-09-2015 / 06:30:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    6.35 -! !
    6.36 -
     7.1 --- a/compiler/TParser.st	Sun Sep 20 12:01:42 2015 +0100
     7.2 +++ b/compiler/TParser.st	Tue Sep 22 17:43:38 2015 +0100
     7.3 @@ -3,7 +3,7 @@
     7.4  "{ NameSpace: Smalltalk }"
     7.5  
     7.6  RBParser subclass:#TParser
     7.7 -	instanceVariableNames:'parsingInlineAssembly'
     7.8 +	instanceVariableNames:'parsingPrimitive'
     7.9  	classVariableNames:''
    7.10  	poolDictionaries:''
    7.11  	category:'Languages-Tea-Compiler-AST'
    7.12 @@ -28,25 +28,10 @@
    7.13      "Modified: / 13-09-2015 / 07:55:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    7.14  ! !
    7.15  
    7.16 -!TParser methodsFor:'accessing'!
    7.17 -
    7.18 -initializeParserWith: aString type: aSymbol 
    7.19 -        |stream|
    7.20 -
    7.21 -        stream := ReadStream on: aString.
    7.22 -        source := aString.
    7.23 -        self scanner: (TScanner 
    7.24 -                                perform: aSymbol
    7.25 -                                with: stream
    7.26 -                                with: self errorBlock)
    7.27 -
    7.28 -    "Created: / 02-09-2015 / 05:57:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    7.29 -! !
    7.30 -
    7.31  !TParser methodsFor:'initialization & release'!
    7.32  
    7.33  scanner: aScanner 
    7.34 -    parsingInlineAssembly := false.
    7.35 +    parsingPrimitive := false.
    7.36      super scanner: aScanner.
    7.37  
    7.38      "Created: / 02-09-2015 / 06:34:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    7.39 @@ -123,42 +108,6 @@
    7.40      "Created: / 14-09-2015 / 14:35:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    7.41  !
    7.42  
    7.43 -parseInlineAssembly
    7.44 -        | position blockNode firstLine prevScope|
    7.45 -
    7.46 -        position := currentToken start.
    7.47 -        firstLine := currentToken lineNumber.
    7.48 -        parsingInlineAssembly := true.
    7.49 -        self step. "/ To eat %[ token
    7.50 -        blockNode := self parseBlockArgsInto: TInlineAssemblyNode new.
    7.51 -"/        node arguments do:[:eachArg | eachArg parent:self].
    7.52 -        blockNode left: position.
    7.53 -        blockNode firstLineNumber:firstLine.
    7.54 -        prevScope := currentScope.
    7.55 -        currentScope := blockNode.
    7.56 -        self rememberLastNode:blockNode.
    7.57 -        blockNode body: (self parseStatements: false).
    7.58 -        RBParser isSmalltalkX ifTrue:[
    7.59 -            self addComments:(scanner getCommentsBeforeToken) afterNode:blockNode body.
    7.60 -        ].
    7.61 -        "/ ensure that right is set, even if parse aborted due to an error
    7.62 -        blockNode right: currentToken start-1.
    7.63 -
    7.64 -        (currentToken isTInlineAssemblyEnd ) 
    7.65 -                ifFalse: [self parserError: '''$]'' expected'].
    7.66 -        "/ fix right
    7.67 -        blockNode right: currentToken start.
    7.68 -        blockNode lastLineNumber:currentToken lineNumber.
    7.69 -        parsingInlineAssembly := false.
    7.70 -
    7.71 -        self step.
    7.72 -        self addComments:(scanner getCommentsBeforeToken) afterNode:blockNode.
    7.73 -        currentScope := prevScope.
    7.74 -        ^ blockNode
    7.75 -
    7.76 -    "Created: / 02-09-2015 / 06:25:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    7.77 -!
    7.78 -
    7.79  parseKeywordMessageWith: node 
    7.80      | message |
    7.81      message := super parseKeywordMessageWith: node.
    7.82 @@ -186,98 +135,32 @@
    7.83      "Modified: / 21-08-2015 / 22:50:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    7.84  !
    7.85  
    7.86 -parseStatementList: tagBoolean into: sequenceNode 
    7.87 -        | statements return periods returnPosition returnLineNumber node valueNode|
    7.88 -        return := false.
    7.89 -        statements := OrderedCollection new.
    7.90 -        periods := OrderedCollection new.
    7.91 -        self addComments:(scanner getCommentsBeforeToken) beforeNode:sequenceNode.
    7.92 -        tagBoolean ifTrue: [self parseResourceTag].
    7.93 -        
    7.94 -        [
    7.95 -         "skip empty statements"
    7.96 -         emptyStatements ifTrue: 
    7.97 -                 [[currentToken isSpecial and: [currentToken value == $.]] whileTrue: 
    7.98 -                                 [periods add: currentToken start.
    7.99 -                                 self step]].
   7.100 +parseKeywordPragma
   7.101 +    | selectorParts arguments |
   7.102  
   7.103 -         self atEnd 
   7.104 -                or: [(currentToken isSpecial and: ['])}' includes: currentToken value ])
   7.105 -                or: [(currentToken isTInlineAssemblyEnd)]]
   7.106 -        ] whileFalse:[ 
   7.107 -            self addComments:(scanner getCommentsBeforeToken) beforeNode:node "value".
   7.108 +    selectorParts := OrderedCollection new: 2.
   7.109 +    arguments := OrderedCollection new: 2.
   7.110 +    [ currentToken isKeyword ] whileTrue: [
   7.111 +        selectorParts add: currentToken.
   7.112 +        self step.        
   7.113 +        "Hack to handle <primitive: [:asm | asm ret: 1 ]>
   7.114 +         style primitives"
   7.115 +        (selectorParts size == 1 
   7.116 +            and:[selectorParts last value = 'primitive:'
   7.117 +            and:[currentToken isSpecial 
   7.118 +            and:[currentToken value == $[]]]) ifTrue: [                        
   7.119 +            parsingPrimitive := true.
   7.120 +            arguments addLast: self parseBlock.
   7.121 +            parsingPrimitive := false.
   7.122 +        ] ifFalse:[
   7.123 +            arguments addLast: self parsePragmaLiteral 
   7.124 +        ]
   7.125 +    ].
   7.126 +    ^ RBPragmaNode
   7.127 +        selectorParts: selectorParts
   7.128 +        arguments: arguments.
   7.129  
   7.130 -            return ifTrue: [
   7.131 -                self class isSmalltalkX 
   7.132 -                    ifTrue:
   7.133 -                        ["could output a warning"]
   7.134 -                    ifFalse:
   7.135 -                        [self 
   7.136 -                            parserError: 'End of statement list encounted (statements after return)'
   7.137 -                            lastNode:node]].
   7.138 -            (currentToken isTInlineAssemblyBegin) ifTrue:[ 
   7.139 -                node := self parseInlineAssembly.
   7.140 -                statements add: node.
   7.141 -            ] ifFalse:[
   7.142 -            (currentToken isSTXPrimitiveCode) 
   7.143 -                ifTrue:[
   7.144 -                    " primPosition := currentToken start. "
   7.145 -                    node := RBSTXPrimitiveCCodeNode new codeToken: currentToken.
   7.146 -                    self addComments:(scanner getCommentsBeforeToken) afterNode:node.
   7.147 -                    statements add: node.
   7.148 -                    self step.
   7.149 -                ] ifFalse:[
   7.150 -                    (currentToken isSpecial and: [currentToken value == $^])
   7.151 -                        ifTrue: 
   7.152 -                                [
   7.153 -                                returnPosition := currentToken start.
   7.154 -                                returnLineNumber := currentToken lineNumber.
   7.155 -                                self step.
   7.156 -
   7.157 -                                valueNode := self parseAssignment.
   7.158 -                                node := RBReturnNode return: returnPosition value: valueNode.
   7.159 -                                node lineNumber:returnLineNumber.
   7.160 -                                scanner atEnd ifFalse:[
   7.161 -                                    self addComments:(scanner getCommentsBeforeToken) afterNode:node value.
   7.162 -                                ].
   7.163 -
   7.164 -                                statements add: node.
   7.165 -                                return := true]
   7.166 -                        ifFalse: 
   7.167 -                                [
   7.168 -                                node := self parseAssignment.
   7.169 -                                node notNil ifTrue:[
   7.170 -                                    self addComments:(scanner getCommentsAfterTokenIfInLine:node lastLineNumber) afterNode:node.
   7.171 -                                    scanner atEnd ifFalse:[
   7.172 -                                        self addComments:(scanner getCommentsAfterToken) afterNode:node.
   7.173 -                                        self addComments:(scanner getCommentsBeforeToken) afterNode:node.
   7.174 -                                    ].
   7.175 -
   7.176 -                                    statements add: node
   7.177 -                                ]].
   7.178 -                ].
   7.179 -            ].
   7.180 -
   7.181 -            (currentToken isSpecial and: [currentToken value == $.])
   7.182 -                ifTrue: 
   7.183 -                    [periods add: currentToken start.
   7.184 -                    self step]
   7.185 -                ifFalse: 
   7.186 -                    [return := true].
   7.187 -            emptyStatements 
   7.188 -                ifTrue: 
   7.189 -                    [[currentToken isSpecial and: [currentToken value == $.]] whileTrue: 
   7.190 -                                    [periods add: currentToken start.
   7.191 -                                    self step]]].
   7.192 -
   7.193 -        sequenceNode 
   7.194 -            statements: statements;
   7.195 -            periods: periods.
   7.196 -
   7.197 -        self addComments:(scanner getCommentsBeforeToken) afterNode:node "value".
   7.198 -        ^sequenceNode
   7.199 -
   7.200 -    "Created: / 02-09-2015 / 06:23:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   7.201 +    "Created: / 22-09-2015 / 16:49:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   7.202  !
   7.203  
   7.204  parseType
   7.205 @@ -318,7 +201,7 @@
   7.206  !
   7.207  
   7.208  parseTypeSpec: forReturn
   7.209 -    parsingInlineAssembly ifTrue:[ ^ nil ].
   7.210 +    parsingPrimitive ifTrue:[ ^ nil ].
   7.211      
   7.212      (currentToken isBinary and: [currentToken value == #<]) ifTrue: [
   7.213          | start stop type |    
     8.1 --- a/compiler/TParserTests.st	Sun Sep 20 12:01:42 2015 +0100
     8.2 +++ b/compiler/TParserTests.st	Tue Sep 22 17:43:38 2015 +0100
     8.3 @@ -36,17 +36,6 @@
     8.4      "Modified: / 14-09-2015 / 14:54:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     8.5  !
     8.6  
     8.7 -test_inline_assembly
     8.8 -    | method |    
     8.9 -
    8.10 -    method := TParser parseMethod: 'foo < ^ Integer > %[ :asm | asm ret: 1 %].'.
    8.11 -    self assert: method body statements size == 1.
    8.12 -    self assert: method body statements first isInlineAssembly.
    8.13 -
    8.14 -    "Created: / 02-09-2015 / 06:31:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    8.15 -    "Modified: / 14-09-2015 / 12:15:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    8.16 -!
    8.17 -
    8.18  test_locals
    8.19      | method |    
    8.20  
    8.21 @@ -89,6 +78,17 @@
    8.22      "Modified: / 21-08-2015 / 23:00:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    8.23  !
    8.24  
    8.25 +test_primitive_inline
    8.26 +    | method |    
    8.27 +
    8.28 +    method := TParser parseMethod: 'foo < ^ Integer > <primitive: [:asm | asm ret: self]>'.
    8.29 +    self assert: method body statements isEmpty.
    8.30 +    self assert: method pragmas size == 1.
    8.31 +    self assert: method pragmas anElement arguments first isBlock.
    8.32 +
    8.33 +    "Created: / 22-09-2015 / 16:51:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    8.34 +!
    8.35 +
    8.36  test_special_form
    8.37      | method |    
    8.38  
     9.1 --- a/compiler/TProgramNodeVisitor.st	Sun Sep 20 12:01:42 2015 +0100
     9.2 +++ b/compiler/TProgramNodeVisitor.st	Tue Sep 22 17:43:38 2015 +0100
     9.3 @@ -25,12 +25,6 @@
     9.4  
     9.5  !TProgramNodeVisitor methodsFor:'visitor-double dispatching'!
     9.6  
     9.7 -acceptInlineAssemblyNode: aMethodNode 
     9.8 -    self acceptBlockNode: aMethodNode.
     9.9 -
    9.10 -    "Created: / 02-09-2015 / 06:52:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    9.11 -!
    9.12 -
    9.13  acceptMethodNode: aMethodNode 
    9.14      super acceptMethodNode: aMethodNode.
    9.15      self visitNode: aMethodNode returnTypeSpec
    10.1 --- a/compiler/TScanner.st	Sun Sep 20 12:01:42 2015 +0100
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,66 +0,0 @@
    10.4 -"{ Package: 'jv:tea/compiler' }"
    10.5 -
    10.6 -"{ NameSpace: Smalltalk }"
    10.7 -
    10.8 -RBScanner subclass:#TScanner
    10.9 -	instanceVariableNames:''
   10.10 -	classVariableNames:''
   10.11 -	poolDictionaries:''
   10.12 -	category:'Languages-Tea-Compiler-AST'
   10.13 -!
   10.14 -
   10.15 -
   10.16 -!TScanner methodsFor:'private-scanning'!
   10.17 -
   10.18 -scanSpecialCharacter
   10.19 -        | character |
   10.20 -
   10.21 -        currentCharacter == $: ifTrue: 
   10.22 -                        [self step.
   10.23 -                        currentCharacter == $=
   10.24 -                                ifTrue: 
   10.25 -                                        [self step.
   10.26 -                                        ^ RBAssignmentToken start: tokenStart]
   10.27 -                                ifFalse: [^ RBSpecialCharacterToken value: $: start: tokenStart]].
   10.28 -
   10.29 -        currentCharacter == $% ifTrue:[ 
   10.30 -            RBParser isSmalltalkX ifTrue:[
   10.31 -                self step.
   10.32 -                currentCharacter == ${ ifTrue:[
   10.33 -                    self step.
   10.34 -                    ^ self scanSTXPrimitiveCode.
   10.35 -                ].
   10.36 -                currentCharacter == $[ ifTrue:[
   10.37 -                    self step.
   10.38 -                    ^ TInlineAssemblyBeginToken new
   10.39 -                        lineNumber: tokenLineNumber;
   10.40 -                        start: tokenStart;
   10.41 -                        yourself.
   10.42 -                ].
   10.43 -                currentCharacter == $] ifTrue:[
   10.44 -                    self step.
   10.45 -                    ^ TInlineAssemblyEndToken new
   10.46 -                        lineNumber: tokenLineNumber;
   10.47 -                        start: tokenStart;
   10.48 -                        yourself.
   10.49 -                ].
   10.50 -                characterType := #binary.
   10.51 -                ^ self scanBinary:RBBinarySelectorToken alreadyRead:$%.
   10.52 -            ].
   10.53 -            ^ self scanBinary: RBBinarySelectorToken
   10.54 -        ].
   10.55 -
   10.56 -        character := currentCharacter.
   10.57 -        self step.
   10.58 -        ^RBSpecialCharacterToken value: character start: tokenStart lineNumber: tokenLineNumber
   10.59 -
   10.60 -    "Created: / 02-09-2015 / 06:00:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   10.61 -! !
   10.62 -
   10.63 -!TScanner class methodsFor:'documentation'!
   10.64 -
   10.65 -version_HG
   10.66 -
   10.67 -    ^ '$Changeset: <not expanded> $'
   10.68 -! !
   10.69 -
    11.1 --- a/compiler/TTypechecker.st	Sun Sep 20 12:01:42 2015 +0100
    11.2 +++ b/compiler/TTypechecker.st	Tue Sep 22 17:43:38 2015 +0100
    11.3 @@ -9,6 +9,7 @@
    11.4  	category:'Languages-Tea-Compiler-Internals'
    11.5  !
    11.6  
    11.7 +
    11.8  !TTypechecker methodsFor:'visiting'!
    11.9  
   11.10  visitArgument: anRBVariableNode
   11.11 @@ -95,3 +96,10 @@
   11.12      "Modified: / 14-09-2015 / 14:22:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   11.13  ! !
   11.14  
   11.15 +!TTypechecker class methodsFor:'documentation'!
   11.16 +
   11.17 +version_HG
   11.18 +
   11.19 +    ^ '$Changeset: <not expanded> $'
   11.20 +! !
   11.21 +
    12.1 --- a/compiler/abbrev.stc	Sun Sep 20 12:01:42 2015 +0100
    12.2 +++ b/compiler/abbrev.stc	Tue Sep 22 17:43:38 2015 +0100
    12.3 @@ -7,18 +7,14 @@
    12.4  TCompiler TCompiler jv:tea/compiler 'Languages-Tea-Compiler' 0
    12.5  TCompilerContext TCompilerContext jv:tea/compiler 'Languages-Tea-Compiler' 0
    12.6  TCompilerError TCompilerError jv:tea/compiler 'Languages-Tea-Compiler-Exceptions' 1
    12.7 -TCompilerExamples TCompilerExamples jv:tea/compiler 'Languages-Tea-Compiler-Examples' 1
    12.8  TEnvironmentProvider TEnvironmentProvider jv:tea/compiler 'Languages-Tea-Compiler-Model-Provider' 0
    12.9  TFormatter TFormatter jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   12.10 -TInlineAssemblyBeginToken TInlineAssemblyBeginToken jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   12.11 -TInlineAssemblyEndToken TInlineAssemblyEndToken jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   12.12 -TInlineAssemblyNode TInlineAssemblyNode jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   12.13  TMetaDefinition TMetaDefinition jv:tea/compiler 'Languages-Tea-Compiler-Model' 0
   12.14  TMethodDefinition TMethodDefinition jv:tea/compiler 'Languages-Tea-Compiler-Model' 0
   12.15  TNamespaceDefinition TNamespaceDefinition jv:tea/compiler 'Languages-Tea-Compiler-Model' 0
   12.16  TParser TParser jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   12.17 +TParserTests TParserTests jv:tea/compiler 'Languages-Tea-Compiler-AST-Tests' 1
   12.18  TProgramNodeVisitor TProgramNodeVisitor jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   12.19 -TScanner TScanner jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   12.20  TScope TScope jv:tea/compiler 'Languages-Tea-Compiler-Bindings' 0
   12.21  TSourceReader TSourceReader jv:tea/compiler 'Languages-Tea-Compiler-Model' 0
   12.22  TSpecialFormNode TSpecialFormNode jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   12.23 @@ -45,8 +41,8 @@
   12.24  TVariableBinding TVariableBinding jv:tea/compiler 'Languages-Tea-Compiler-Bindings' 0
   12.25  TArgumentBinding TArgumentBinding jv:tea/compiler 'Languages-Tea-Compiler-Bindings' 0
   12.26  TLocalBinding TLocalBinding jv:tea/compiler 'Languages-Tea-Compiler-Bindings' 0
   12.27 +TCompilerExamples TCompilerExamples jv:tea/compiler 'Languages-Tea-Compiler-Examples' 1
   12.28  TMethodDefinitionTests TMethodDefinitionTests jv:tea/compiler 'Languages-Tea-Compiler-Model-Tests' 1
   12.29 -TParserTests TParserTests jv:tea/compiler 'Languages-Tea-Compiler-AST-Tests' 1
   12.30  TSemanticAnalyserTests TSemanticAnalyserTests jv:tea/compiler 'Languages-Tea-Compiler-Internals-Tests' 1
   12.31  TSourceReaderTests TSourceReaderTests jv:tea/compiler 'Languages-Tea-Compiler-Model-Tests' 1
   12.32  TTypecheckerTests TTypecheckerTests jv:tea/compiler 'Languages-Tea-Compiler-Internals-Tests' 1
    13.1 --- a/compiler/bc.mak	Sun Sep 20 12:01:42 2015 +0100
    13.2 +++ b/compiler/bc.mak	Tue Sep 22 17:43:38 2015 +0100
    13.3 @@ -82,15 +82,11 @@
    13.4  $(OUTDIR)TCompilerError.$(O) TCompilerError.$(H): TCompilerError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    13.5  $(OUTDIR)TEnvironmentProvider.$(O) TEnvironmentProvider.$(H): TEnvironmentProvider.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    13.6  $(OUTDIR)TFormatter.$(O) TFormatter.$(H): TFormatter.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBFormatter.$(H) $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBProgramNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    13.7 -$(OUTDIR)TInlineAssemblyBeginToken.$(O) TInlineAssemblyBeginToken.$(H): TInlineAssemblyBeginToken.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBToken.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    13.8 -$(OUTDIR)TInlineAssemblyEndToken.$(O) TInlineAssemblyEndToken.$(H): TInlineAssemblyEndToken.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBToken.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    13.9 -$(OUTDIR)TInlineAssemblyNode.$(O) TInlineAssemblyNode.$(H): TInlineAssemblyNode.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBBlockNode.$(H) $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBProgramNode.$(H) $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBStatementNode.$(H) $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBValueNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
   13.10  $(OUTDIR)TMetaDefinition.$(O) TMetaDefinition.$(H): TMetaDefinition.st $(INCLUDE_TOP)\stx\goodies\ring\RGBehaviorDefinition.$(H) $(INCLUDE_TOP)\stx\goodies\ring\RGClassDescriptionDefinition.$(H) $(INCLUDE_TOP)\stx\goodies\ring\RGDefinition.$(H) $(INCLUDE_TOP)\stx\goodies\ring\RGGlobalDefinition.$(H) $(INCLUDE_TOP)\stx\goodies\ring\RGMetaclassDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
   13.11  $(OUTDIR)TMethodDefinition.$(O) TMethodDefinition.$(H): TMethodDefinition.st $(INCLUDE_TOP)\stx\goodies\ring\RGDefinition.$(H) $(INCLUDE_TOP)\stx\goodies\ring\RGElementDefinition.$(H) $(INCLUDE_TOP)\stx\goodies\ring\RGMethodDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
   13.12  $(OUTDIR)TNamespaceDefinition.$(O) TNamespaceDefinition.$(H): TNamespaceDefinition.st $(INCLUDE_TOP)\stx\goodies\ring\RGAbstractContainer.$(H) $(INCLUDE_TOP)\stx\goodies\ring\RGContainer.$(H) $(INCLUDE_TOP)\stx\goodies\ring\RGDefinition.$(H) $(INCLUDE_TOP)\stx\goodies\ring\RGNamespace.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
   13.13  $(OUTDIR)TParser.$(O) TParser.$(H): TParser.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBParser.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
   13.14  $(OUTDIR)TProgramNodeVisitor.$(O) TProgramNodeVisitor.$(H): TProgramNodeVisitor.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBProgramNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
   13.15 -$(OUTDIR)TScanner.$(O) TScanner.$(H): TScanner.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBScanner.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(STCHDR)
   13.16  $(OUTDIR)TScope.$(O) TScope.$(H): TScope.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
   13.17  $(OUTDIR)TSourceReader.$(O) TSourceReader.$(H): TSourceReader.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
   13.18  $(OUTDIR)TSpecialFormNode.$(O) TSpecialFormNode.$(H): TSpecialFormNode.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBMessageNode.$(H) $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBProgramNode.$(H) $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBStatementNode.$(H) $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBValueNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    14.1 --- a/compiler/jv_tea_compiler.st	Sun Sep 20 12:01:42 2015 +0100
    14.2 +++ b/compiler/jv_tea_compiler.st	Tue Sep 22 17:43:38 2015 +0100
    14.3 @@ -79,18 +79,14 @@
    14.4          TCompiler
    14.5          TCompilerContext
    14.6          TCompilerError
    14.7 -        (TCompilerExamples autoload)
    14.8          TEnvironmentProvider
    14.9          TFormatter
   14.10 -        TInlineAssemblyBeginToken
   14.11 -        TInlineAssemblyEndToken
   14.12 -        TInlineAssemblyNode
   14.13          TMetaDefinition
   14.14          TMethodDefinition
   14.15          TNamespaceDefinition
   14.16          TParser
   14.17 +        (TParserTests autoload)
   14.18          TProgramNodeVisitor
   14.19 -        TScanner
   14.20          TScope
   14.21          TSourceReader
   14.22          TSpecialFormNode
   14.23 @@ -117,8 +113,8 @@
   14.24          TVariableBinding
   14.25          TArgumentBinding
   14.26          TLocalBinding
   14.27 +        (TCompilerExamples autoload)
   14.28          (TMethodDefinitionTests autoload)
   14.29 -        (TParserTests autoload)
   14.30          (TSemanticAnalyserTests autoload)
   14.31          (TSourceReaderTests autoload)
   14.32          (TTypecheckerTests autoload)
    15.1 --- a/compiler/libInit.cc	Sun Sep 20 12:01:42 2015 +0100
    15.2 +++ b/compiler/libInit.cc	Tue Sep 22 17:43:38 2015 +0100
    15.3 @@ -35,15 +35,11 @@
    15.4  _TCompilerError_Init(pass,__pRT__,snd);
    15.5  _TEnvironmentProvider_Init(pass,__pRT__,snd);
    15.6  _TFormatter_Init(pass,__pRT__,snd);
    15.7 -_TInlineAssemblyBeginToken_Init(pass,__pRT__,snd);
    15.8 -_TInlineAssemblyEndToken_Init(pass,__pRT__,snd);
    15.9 -_TInlineAssemblyNode_Init(pass,__pRT__,snd);
   15.10  _TMetaDefinition_Init(pass,__pRT__,snd);
   15.11  _TMethodDefinition_Init(pass,__pRT__,snd);
   15.12  _TNamespaceDefinition_Init(pass,__pRT__,snd);
   15.13  _TParser_Init(pass,__pRT__,snd);
   15.14  _TProgramNodeVisitor_Init(pass,__pRT__,snd);
   15.15 -_TScanner_Init(pass,__pRT__,snd);
   15.16  _TScope_Init(pass,__pRT__,snd);
   15.17  _TSourceReader_Init(pass,__pRT__,snd);
   15.18  _TSpecialFormNode_Init(pass,__pRT__,snd);