Add parsing

This commit is contained in:
2022-03-20 19:57:38 +01:00
parent be59171ebe
commit d5785629ea
18 changed files with 1052 additions and 192 deletions

View File

@@ -0,0 +1,40 @@
Class {
#name : #CarpArrayNode,
#superclass : #CarpExpressionNode,
#instVars : [
'expressions'
],
#category : #Carp
}
{ #category : #generated }
CarpArrayNode >> acceptVisitor: anExpressionVisitor [
^ anExpressionVisitor visitArray: self
]
{ #category : #generated }
CarpArrayNode >> compositeNodeVariables [
^ #( #expressions )
]
{ #category : #generated }
CarpArrayNode >> expressions [
^ expressions
]
{ #category : #generated }
CarpArrayNode >> expressions: anOrderedCollection [
self setParents: self expressions to: nil.
expressions := anOrderedCollection.
self setParents: self expressions to: self
]
{ #category : #'generated-initialize-release' }
CarpArrayNode >> initialize [
super initialize.
expressions := OrderedCollection new: 2.
]

View File

@@ -0,0 +1,32 @@
Class {
#name : #CarpCharacterNode,
#superclass : #CarpExpressionNode,
#instVars : [
'value'
],
#category : #Carp
}
{ #category : #generated }
CarpCharacterNode >> acceptVisitor: anExpressionVisitor [
^ anExpressionVisitor visitCharacter: self
]
{ #category : #generated }
CarpCharacterNode >> tokenVariables [
^ #( #value )
]
{ #category : #generated }
CarpCharacterNode >> value [
^ value
]
{ #category : #generated }
CarpCharacterNode >> value: aSmaCCToken [
value := aSmaCCToken
]

View File

@@ -0,0 +1,34 @@
Class {
#name : #CarpDerefNode,
#superclass : #CarpExpressionNode,
#instVars : [
'value'
],
#category : #Carp
}
{ #category : #generated }
CarpDerefNode >> acceptVisitor: anExpressionVisitor [
^ anExpressionVisitor visitDeref: self
]
{ #category : #generated }
CarpDerefNode >> nodeVariables [
^ #( #value )
]
{ #category : #generated }
CarpDerefNode >> value [
^ value
]
{ #category : #generated }
CarpDerefNode >> value: aCarpExpressionNode [
self value notNil ifTrue: [ self value parent: nil ].
value := aCarpExpressionNode.
self value notNil ifTrue: [ self value parent: self ]
]

View File

@@ -0,0 +1,11 @@
Class {
#name : #CarpExpressionNode,
#superclass : #SmaCCParseNode,
#category : #'Carp-Carp'
}
{ #category : #generated }
CarpExpressionNode >> acceptVisitor: anExpressionVisitor [
^ anExpressionVisitor visitExpression: self
]

View File

@@ -0,0 +1,7 @@
Class {
#name : #CarpExpressionNodeVisitor,
#superclass : #Object,
#traits : 'TCarpExpressionNodeVisitor',
#classTraits : 'TCarpExpressionNodeVisitor classTrait',
#category : #Carp
}

View File

@@ -0,0 +1,36 @@
Class {
#name : #CarpFile,
#superclass : #Object,
#instVars : [
'fileName',
'contents'
],
#category : #Carp
}
{ #category : #'instance creation' }
CarpFile class >> for: aFileName [
^ self new for: aFileName
]
{ #category : #accessing }
CarpFile >> contents [
^ contents
]
{ #category : #accessing }
CarpFile >> contents: aString [
contents := aString
]
{ #category : #accessing }
CarpFile >> fileName: aFileName [
fileName := aFileName
]
{ #category : #accessing }
CarpFile >> for: aFileName [
self fileName: aFileName.
self contents: (CarpParser parse: aFileName asFileReference contents).
]

View File

@@ -0,0 +1,40 @@
Class {
#name : #CarpListNode,
#superclass : #CarpExpressionNode,
#instVars : [
'expressions'
],
#category : #Carp
}
{ #category : #generated }
CarpListNode >> acceptVisitor: anExpressionVisitor [
^ anExpressionVisitor visitList: self
]
{ #category : #generated }
CarpListNode >> compositeNodeVariables [
^ #( #expressions )
]
{ #category : #generated }
CarpListNode >> expressions [
^ expressions
]
{ #category : #generated }
CarpListNode >> expressions: anOrderedCollection [
self setParents: self expressions to: nil.
expressions := anOrderedCollection.
self setParents: self expressions to: self
]
{ #category : #'generated-initialize-release' }
CarpListNode >> initialize [
super initialize.
expressions := OrderedCollection new: 2.
]

View File

@@ -0,0 +1,34 @@
Class {
#name : #CarpModuleOrTypeNode,
#superclass : #CarpExpressionNode,
#instVars : [
'value'
],
#category : #Carp
}
{ #category : #generated }
CarpModuleOrTypeNode >> acceptVisitor: anExpressionVisitor [
^ anExpressionVisitor visitModuleOrType: self
]
{ #category : #generated }
CarpModuleOrTypeNode >> otherVariables [
^ #( #value )
]
{ #category : #generated }
CarpModuleOrTypeNode >> value [
^ value
]
{ #category : #generated }
CarpModuleOrTypeNode >> value: anObject [
self setParent: self value to: nil.
value := anObject.
self setParent: self value to: self
]

View File

@@ -0,0 +1,32 @@
Class {
#name : #CarpNumberNode,
#superclass : #CarpExpressionNode,
#instVars : [
'value'
],
#category : #Carp
}
{ #category : #generated }
CarpNumberNode >> acceptVisitor: anExpressionVisitor [
^ anExpressionVisitor visitNumber: self
]
{ #category : #generated }
CarpNumberNode >> tokenVariables [
^ #( #value )
]
{ #category : #generated }
CarpNumberNode >> value [
^ value
]
{ #category : #generated }
CarpNumberNode >> value: aSmaCCToken [
value := aSmaCCToken
]

View File

@@ -6,18 +6,18 @@ Class {
{ #category : #'generated-accessing' }
CarpParser class >> cacheId [
^'2020-10-05T22:57:25.346883+02:00'
^'2022-03-20T19:54:13.067877+01:00'
]
{ #category : #generated }
CarpParser class >> definitionComment [
"%glr;
<hexa>
: [0-9a-fA-F]
;
%root Expression;
%prefix Carp;
%suffix Node;
<escape>
: \\ ([^\r\n] | (u <hexa>{4,4}))+
: \\ (. | u[0-9A-F]{4,4} | o[0-7]{3,3} | newline | return | space | tab | space | backspace | formfeed) # other character types
;
<string_literal>
: (\"" ([^\""\\] | <escape>)* \"")
@@ -29,29 +29,23 @@ CarpParser class >> definitionComment [
: \)
;
<quote>
: \'
: \' | \`
;
<variable_start>
: <isLowercase> | _ | \$ | \+ | \* | \/ | \? | ! | > | < | = | :
: <isLowercase> | _ | \$ | \+ | \* | \/ | \? | ! | > | < | = | : | -
;
default <variable>
: <variable_start> <variable_part>*
;
<variable_part>
: <variable_start> | <isDigit>
: <variable_start> | <isDigit> | <isUppercase>
;
<module>
: <isUppercase> <variable_part>*
;
<space>
: (<isSpaceSeparator> | ,)+
;
<dot>
: \.
;
<Symbol>
: a
;
<open_bracket>
: \[
;
@@ -73,71 +67,103 @@ default <variable>
;
<numeric_literal>
: <decimal> | <hex_integer> | <binary_integer>
;
<comment>
: \; [^\r\n]*
| \, # commas are treated as whitespace, but whitespace is not saved, so I made them comments instead
;
<whitespace>
: \s+
;
<character>
: \\ (. | u[0-9A-F]{4,4} | o[0-7]{3,3} | newline | return | space | tab | space | backspace | formfeed) # other character types
;Start
: Expression+
: Expressions {{}}
;
Expressions
:
| Expressions Expression 'expression'
;
Expression
: Literal
| Deref
| Ref
| Unquote
;
Unquote
: (""%"" | ""%@"") Expression 'value' {{}}
;
Ref
: ""&"" Expression 'value' {{}}
;
Deref
: ""@"" Expression 'value' {{}}
;
Literal
: String | List | Array | Symbol | Quote | Number
: String | List | Array | Symbol | Quote | Number | Character
;
Character
: <character> 'value' {{}}
;
Number
: <numeric_literal>
: <numeric_literal> 'value' {{}}
;
Array
: <open_bracket> ListContents <close_bracket>
: <open_bracket> Expressions <close_bracket> {{}}
;
Quote
: <quote> Expression
: <quote> Expression 'value' {{}}
;
Symbol
: ModuleOrType | Variable
;
Variable
: <variable>
: <variable> 'value' {{}}
;
ModuleOrType
: <module> <dot> Symbol
| <module>
: <module> <dot> Symbol 'value' {{}}
| <module> 'value' {{}}
;
List
: <open_paren> ListContents <close_paren>
;
ListContents
: Expression <space> ListContents
| Expression
: <open_paren> Expressions <close_paren> {{}}
;
String
: <string_literal>
: <string_literal> 'value' {{}}
;"
]
{ #category : #generated }
CarpParser class >> reduceTable [
^#(
#(25 1 #reduceFor: 1310721 false )
#(21 1 #reduceFor: 1111041 false )
#(22 1 #reduceFor: 1137666 false )
#(17 1 #reduceFor: 952321 false )
#(13 1 #reduceFor: 837633 false )
#(14 1 #reduceFor: 847873 false )
#(15 1 #reduceFor: 863233 false )
#(16 1 #reduceFor: 888838 false )
#(16 1 #reduceFor: 888835 false )
#(16 1 #reduceFor: 888837 false )
#(16 1 #reduceFor: 888836 false )
#(20 1 #reduceFor: 1073154 false )
#(20 1 #reduceFor: 1073153 false )
#(16 1 #reduceFor: 888834 false )
#(16 1 #reduceFor: 888833 false )
#(24 1 #reduceFor: 1244162 false )
#(19 2 #reduceFor: 1041409 false )
#(14 2 #reduceFor: 847874 false )
#(23 3 #reduceFor: 1191937 false )
#(22 3 #reduceFor: 1137665 false )
#(18 3 #reduceFor: 984065 false )
#(24 3 #reduceFor: 1244161 false )
#(20 0 #reduceActionForExpressions1: 1258497 false)
#(19 1 #reduceActionForStart1: 1227777 false)
#(34 1 #reduceActionForString1: 1988609 false)
#(31 1 #reduceActionForVariable1: 1811457 false)
#(32 1 #reduceActionForModuleOrType2: 1851394 false)
#(27 1 #reduceActionForNumber1: 1620993 false)
#(26 1 #reduceActionForCharacter1: 1579009 false)
#(20 2 #reduceActionForExpressions2: 1258498 false)
#(21 1 #liftFirstValue: 1316868 false)
#(21 1 #liftFirstValue: 1316867 false)
#(21 1 #liftFirstValue: 1316866 false)
#(21 1 #liftFirstValue: 1316865 false)
#(25 1 #liftFirstValue: 1502215 false)
#(25 1 #liftFirstValue: 1502214 false)
#(25 1 #liftFirstValue: 1502211 false)
#(25 1 #liftFirstValue: 1502213 false)
#(25 1 #liftFirstValue: 1502212 false)
#(30 1 #liftFirstValue: 1773570 false)
#(30 1 #liftFirstValue: 1773569 false)
#(25 1 #liftFirstValue: 1502210 false)
#(25 1 #liftFirstValue: 1502209 false)
#(22 2 #reduceActionForUnquote1: 1370113 false)
#(22 2 #reduceActionForUnquote1: 1370114 false)
#(23 2 #reduceActionForRef1: 1422337 false)
#(24 2 #reduceActionForDeref1: 1461249 false)
#(29 2 #reduceActionForQuote1: 1728513 false)
#(33 3 #reduceActionForList1: 1932289 false)
#(32 3 #reduceActionForModuleOrType1: 1851393 false)
#(28 3 #reduceActionForArray1: 1667073 false)
).
]
@@ -148,47 +174,212 @@ CarpParser class >> scannerClass [
{ #category : #generated }
CarpParser class >> startingStateForStart [
^ 1
]
{ #category : #generated }
CarpParser class >> symbolNames [
^ #('<string_literal>' '<open_paren>' '<close_paren>' '<quote>' '<variable>' '<module>' '<space>' '<dot>' '<open_bracket>' '<close_bracket>' '<numeric_literal>' 'B e g i n' 'Start' 'Expression+' 'Expression' 'Literal' 'Number' 'Array' 'Quote' 'Symbol' 'Variable' 'ModuleOrType' 'List' 'ListContents' 'String' 'E O F' 'error')
^ #( '"%"' '"%@"' '"&"' '"@"' '<string_literal>' '<open_paren>'
'<close_paren>' '<quote>' '<variable>' '<module>' '<dot>'
'<open_bracket>' '<close_bracket>' '<numeric_literal>'
'<comment>' '<whitespace>' '<character>' 'B e g i n' 'Start'
'Expressions' 'Expression' 'Unquote' 'Ref' 'Deref' 'Literal'
'Character' 'Number' 'Array' 'Quote' 'Symbol' 'Variable'
'ModuleOrType' 'List' 'String' 'E O F' 'error' )
]
{ #category : #generated }
CarpParser class >> symbolTypes [
^ #( #SmaCCToken #SmaCCToken #SmaCCToken #SmaCCToken #SmaCCToken
#SmaCCToken #SmaCCToken #SmaCCToken #SmaCCToken #SmaCCToken
#SmaCCToken #SmaCCToken #SmaCCToken #SmaCCToken #SmaCCToken
#SmaCCToken #SmaCCToken #CarpStartNode #CarpStartNode
#OrderedCollection #CarpExpressionNode #CarpUnquoteNode
#CarpRefNode #CarpDerefNode #CarpExpressionNode
#CarpCharacterNode #CarpNumberNode #CarpArrayNode #CarpQuoteNode
#CarpExpressionNode #CarpVariableNode #CarpModuleOrTypeNode
#CarpListNode #CarpStringNode #SmaCCToken #SmaCCErrorNode )
]
{ #category : #generated }
CarpParser class >> transitionTable [
^#(
#[1 0 9 0 1 0 13 0 2 0 17 0 4 0 21 0 5 0 25 0 6 0 29 0 9 0 33 0 11 0 37 0 13 0 41 0 14 0 45 0 15 0 49 0 16 0 53 0 17 0 57 0 18 0 61 0 19 0 65 0 20 0 69 0 21 0 73 0 22 0 77 0 23 0 81 0 25]
#[0 0 6 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[1 0 9 0 1 0 13 0 2 0 17 0 4 0 21 0 5 0 25 0 6 0 29 0 9 0 33 0 11 0 85 0 15 0 49 0 16 0 53 0 17 0 57 0 18 0 61 0 19 0 65 0 20 0 69 0 21 0 73 0 22 0 77 0 23 0 89 0 24 0 81 0 25]
#[1 0 9 0 1 0 13 0 2 0 17 0 4 0 21 0 5 0 25 0 6 0 29 0 9 0 33 0 11 0 93 0 15 0 49 0 16 0 53 0 17 0 57 0 18 0 61 0 19 0 65 0 20 0 69 0 21 0 73 0 22 0 77 0 23 0 81 0 25]
#[0 0 10 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[1 0 14 0 1 0 14 0 2 0 14 0 3 0 14 0 4 0 14 0 5 0 14 0 6 0 14 0 7 0 97 0 8 0 14 0 9 0 14 0 10 0 14 0 11 0 14 0 26]
#[1 0 9 0 1 0 13 0 2 0 17 0 4 0 21 0 5 0 25 0 6 0 29 0 9 0 33 0 11 0 85 0 15 0 49 0 16 0 53 0 17 0 57 0 18 0 61 0 19 0 65 0 20 0 69 0 21 0 73 0 22 0 77 0 23 0 101 0 24 0 81 0 25]
#[0 0 18 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[0 0 0 0 26]
#[1 0 9 0 1 0 13 0 2 0 17 0 4 0 21 0 5 0 25 0 6 0 29 0 9 0 33 0 11 0 105 0 15 0 49 0 16 0 53 0 17 0 57 0 18 0 61 0 19 0 65 0 20 0 69 0 21 0 73 0 22 0 77 0 23 0 81 0 25 0 22 0 26]
#[0 0 26 0 1 0 2 0 4 0 5 0 6 0 9 0 11 0 26]
#[0 0 30 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[0 0 34 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[0 0 38 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[0 0 42 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[0 0 46 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[0 0 50 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[0 0 54 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[0 0 58 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[0 0 62 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[1 0 66 0 3 0 109 0 7 0 66 0 10]
#[0 0 113 0 3]
#[0 0 70 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[1 0 21 0 5 0 25 0 6 0 117 0 20 0 69 0 21 0 73 0 22]
#[0 0 121 0 10]
#[0 0 74 0 1 0 2 0 4 0 5 0 6 0 9 0 11 0 26]
#[1 0 9 0 1 0 13 0 2 0 17 0 4 0 21 0 5 0 25 0 6 0 29 0 9 0 33 0 11 0 85 0 15 0 49 0 16 0 53 0 17 0 57 0 18 0 61 0 19 0 65 0 20 0 69 0 21 0 73 0 22 0 77 0 23 0 125 0 24 0 81 0 25]
#[0 0 78 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[0 0 82 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[0 0 86 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 9 0 10 0 11 0 26]
#[0 0 90 0 3 0 10]
#[1 0 6 0 1 0 6 0 2 0 6 0 3 0 6 0 4 0 6 0 5 0 6 0 6 0 6 0 8 0 6 0 9 0 6 0 10 0 6 0 12 0 6 0 14 0 6 0 17 0 9 0 19 0 13 0 20 0 6 0 35]
#[0 0 0 0 35]
#[1 0 17 0 1 0 21 0 2 0 25 0 3 0 29 0 4 0 33 0 5 0 37 0 6 0 41 0 8 0 45 0 9 0 49 0 10 0 53 0 12 0 57 0 14 0 61 0 17 0 65 0 21 0 65 0 22 0 65 0 23 0 65 0 24 0 65 0 25 0 65 0 26 0 65 0 27 0 65 0 28 0 65 0 29 0 65 0 30 0 65 0 31 0 65 0 32 0 65 0 33 0 65 0 34 0 10 0 35]
#[1 0 17 0 1 0 21 0 2 0 25 0 3 0 29 0 4 0 33 0 5 0 37 0 6 0 41 0 8 0 45 0 9 0 49 0 10 0 53 0 12 0 57 0 14 0 61 0 17 0 121 0 21 0 121 0 22 0 121 0 23 0 121 0 24 0 121 0 25 0 121 0 26 0 121 0 27 0 121 0 28 0 121 0 29 0 121 0 30 0 121 0 31 0 121 0 32 0 121 0 33 0 121 0 34]
#[1 0 17 0 1 0 21 0 2 0 25 0 3 0 29 0 4 0 33 0 5 0 37 0 6 0 41 0 8 0 45 0 9 0 49 0 10 0 53 0 12 0 57 0 14 0 61 0 17 0 125 0 21 0 125 0 22 0 125 0 23 0 125 0 24 0 125 0 25 0 125 0 26 0 125 0 27 0 125 0 28 0 125 0 29 0 125 0 30 0 125 0 31 0 125 0 32 0 125 0 33 0 125 0 34]
#[1 0 17 0 1 0 21 0 2 0 25 0 3 0 29 0 4 0 33 0 5 0 37 0 6 0 41 0 8 0 45 0 9 0 49 0 10 0 53 0 12 0 57 0 14 0 61 0 17 0 129 0 21 0 129 0 22 0 129 0 23 0 129 0 24 0 129 0 25 0 129 0 26 0 129 0 27 0 129 0 28 0 129 0 29 0 129 0 30 0 129 0 31 0 129 0 32 0 129 0 33 0 129 0 34]
#[1 0 17 0 1 0 21 0 2 0 25 0 3 0 29 0 4 0 33 0 5 0 37 0 6 0 41 0 8 0 45 0 9 0 49 0 10 0 53 0 12 0 57 0 14 0 61 0 17 0 133 0 21 0 133 0 22 0 133 0 23 0 133 0 24 0 133 0 25 0 133 0 26 0 133 0 27 0 133 0 28 0 133 0 29 0 133 0 30 0 133 0 31 0 133 0 32 0 133 0 33 0 133 0 34]
#[0 0 14 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[1 0 6 0 1 0 6 0 2 0 6 0 3 0 6 0 4 0 6 0 5 0 6 0 6 0 6 0 7 0 6 0 8 0 6 0 9 0 6 0 10 0 6 0 12 0 6 0 14 0 6 0 17 0 137 0 20]
#[1 0 17 0 1 0 21 0 2 0 25 0 3 0 29 0 4 0 33 0 5 0 37 0 6 0 41 0 8 0 45 0 9 0 49 0 10 0 53 0 12 0 57 0 14 0 61 0 17 0 141 0 21 0 141 0 22 0 141 0 23 0 141 0 24 0 141 0 25 0 141 0 26 0 141 0 27 0 141 0 28 0 141 0 29 0 141 0 30 0 141 0 31 0 141 0 32 0 141 0 33 0 141 0 34]
#[0 0 18 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[1 0 22 0 1 0 22 0 2 0 22 0 3 0 22 0 4 0 22 0 5 0 22 0 6 0 22 0 7 0 22 0 8 0 22 0 9 0 22 0 10 0 145 0 11 0 22 0 12 0 22 0 13 0 22 0 14 0 22 0 17 0 22 0 35]
#[1 0 6 0 1 0 6 0 2 0 6 0 3 0 6 0 4 0 6 0 5 0 6 0 6 0 6 0 8 0 6 0 9 0 6 0 10 0 6 0 12 0 6 0 13 0 6 0 14 0 6 0 17 0 149 0 20]
#[0 0 26 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 30 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 34 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 38 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 42 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 46 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 50 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 54 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 58 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 62 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 66 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 70 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 74 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 78 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 82 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 86 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 90 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 94 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 98 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 102 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[1 0 17 0 1 0 21 0 2 0 25 0 3 0 29 0 4 0 33 0 5 0 37 0 6 0 153 0 7 0 41 0 8 0 45 0 9 0 49 0 10 0 53 0 12 0 57 0 14 0 61 0 17 0 65 0 21 0 65 0 22 0 65 0 23 0 65 0 24 0 65 0 25 0 65 0 26 0 65 0 27 0 65 0 28 0 65 0 29 0 65 0 30 0 65 0 31 0 65 0 32 0 65 0 33 0 65 0 34]
#[0 0 106 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[1 0 45 0 9 0 49 0 10 0 157 0 30 0 157 0 31 0 157 0 32]
#[1 0 17 0 1 0 21 0 2 0 25 0 3 0 29 0 4 0 33 0 5 0 37 0 6 0 41 0 8 0 45 0 9 0 49 0 10 0 53 0 12 0 161 0 13 0 57 0 14 0 61 0 17 0 65 0 21 0 65 0 22 0 65 0 23 0 65 0 24 0 65 0 25 0 65 0 26 0 65 0 27 0 65 0 28 0 65 0 29 0 65 0 30 0 65 0 31 0 65 0 32 0 65 0 33 0 65 0 34]
#[0 0 110 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 114 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
#[0 0 118 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
).
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForArray1: nodes [
| result |
result := CarpArrayNode new.
result addNodes: (nodes at: 2) to: result expressions.
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForCharacter1: nodes [
| result |
result := CarpCharacterNode new.
result value: (nodes at: 1).
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForDeref1: nodes [
| result |
result := CarpDerefNode new.
result value: (nodes at: 2).
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForExpressions1: nodes [
| result |
result := OrderedCollection new: 2.
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForExpressions2: nodes [
| result |
result := nodes at: 1.
self add: (nodes at: 2) to: result.
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForList1: nodes [
| result |
result := CarpListNode new.
result addNodes: (nodes at: 2) to: result expressions.
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForModuleOrType1: nodes [
| result |
result := CarpModuleOrTypeNode new.
result value: (nodes at: 3).
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForModuleOrType2: nodes [
| result |
result := CarpModuleOrTypeNode new.
result value: (nodes at: 1).
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForNumber1: nodes [
| result |
result := CarpNumberNode new.
result value: (nodes at: 1).
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForQuote1: nodes [
| result |
result := CarpQuoteNode new.
result value: (nodes at: 2).
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForRef1: nodes [
| result |
result := CarpRefNode new.
result value: (nodes at: 2).
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForStart1: nodes [
| result |
result := CarpStartNode new.
result addNodes: (nodes at: 1) to: result expressions.
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForString1: nodes [
| result |
result := CarpStringNode new.
result value: (nodes at: 1).
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForUnquote1: nodes [
| result |
result := CarpUnquoteNode new.
result value: (nodes at: 2).
^ result
]
{ #category : #'generated-reduction actions' }
CarpParser >> reduceActionForVariable1: nodes [
| result |
result := CarpVariableNode new.
result value: (nodes at: 1).
^ result
]

View File

@@ -0,0 +1,34 @@
Class {
#name : #CarpQuoteNode,
#superclass : #CarpExpressionNode,
#instVars : [
'value'
],
#category : #Carp
}
{ #category : #generated }
CarpQuoteNode >> acceptVisitor: anExpressionVisitor [
^ anExpressionVisitor visitQuote: self
]
{ #category : #generated }
CarpQuoteNode >> nodeVariables [
^ #( #value )
]
{ #category : #generated }
CarpQuoteNode >> value [
^ value
]
{ #category : #generated }
CarpQuoteNode >> value: aCarpExpressionNode [
self value notNil ifTrue: [ self value parent: nil ].
value := aCarpExpressionNode.
self value notNil ifTrue: [ self value parent: self ]
]

View File

@@ -0,0 +1,34 @@
Class {
#name : #CarpRefNode,
#superclass : #CarpExpressionNode,
#instVars : [
'value'
],
#category : #Carp
}
{ #category : #generated }
CarpRefNode >> acceptVisitor: anExpressionVisitor [
^ anExpressionVisitor visitRef: self
]
{ #category : #generated }
CarpRefNode >> nodeVariables [
^ #( #value )
]
{ #category : #generated }
CarpRefNode >> value [
^ value
]
{ #category : #generated }
CarpRefNode >> value: aCarpExpressionNode [
self value notNil ifTrue: [ self value parent: nil ].
value := aCarpExpressionNode.
self value notNil ifTrue: [ self value parent: self ]
]

View File

@@ -6,172 +6,285 @@ Class {
{ #category : #generated }
CarpScanner >> emptySymbolTokenId [
^ 26
^ 35
]
{ #category : #generated }
CarpScanner >> errorTokenId [
^ 27
^ 36
]
{ #category : #generated }
CarpScanner >> scan1 [
[ self step.
currentCharacter == $"
ifTrue: [ ^ self recordAndReportMatch: #(1) ].
currentCharacter == $\
ifTrue: [ self step.
(currentCharacter <= Character tab
or: [ (currentCharacter between: Character pageUp and: Character newPage)
or: [ currentCharacter >= (Character value: 14) ] ])
ifTrue: [ ^ self scan2 ].
^ self reportLastMatch ].
[
self step.
currentCharacter == $" ifTrue: [ ^ self recordAndReportMatch: #( 5 ) ].
currentCharacter == $\ ifTrue: [
self step.
^ self scan1 ].
true ] whileTrue
]
{ #category : #generated }
CarpScanner >> scan2 [
[ self step.
currentCharacter == $"
ifTrue: [ [ self recordMatch: #(1).
self step.
currentCharacter == $" ] whileTrue.
(currentCharacter == Character lf
or: [ currentCharacter == Character cr ])
ifTrue: [ ^ self scan1 ].
^ self scan2 ].
(currentCharacter == Character lf
or: [ currentCharacter == Character cr ])
ifTrue: [ ^ self scan1 ].
true ] whileTrue
self step.
currentCharacter isDigit ifTrue: [
[
self recordMatch: #( 14 ).
self step.
currentCharacter == $f ifTrue: [
^ self recordAndReportMatch: #( 14 ) ].
currentCharacter isDigit ] whileTrue ].
^ self reportLastMatch
]
{ #category : #generated }
CarpScanner >> scan3 [
[
self recordMatch: #( 14 ).
self step.
currentCharacter isDigit
ifTrue: [ [ self recordMatch: #(11).
self step.
currentCharacter == $f
ifTrue: [ ^ self recordAndReportMatch: #(11) ].
currentCharacter isDigit ] whileTrue ].
currentCharacter == $. ifTrue: [ ^ self scan2 ].
currentCharacter isDigit ] whileTrue.
('bfl' includes: currentCharacter) ifTrue: [
^ self recordAndReportMatch: #( 14 ) ].
^ self reportLastMatch
]
{ #category : #generated }
CarpScanner >> scan4 [
[ self recordMatch: #(11).
(self scanForString: 'ac') ifTrue: [ ^ self scan5 ].
^ self reportLastMatch
]
{ #category : #generated }
CarpScanner >> scan5 [
self step.
currentCharacter == $.
ifTrue: [ ^ self scan3 ].
currentCharacter isDigit ] whileTrue.
('bfl' includes: currentCharacter)
ifTrue: [ ^ self recordAndReportMatch: #(11) ].
currentCharacter == $e ifTrue: [
^ self recordAndReportMatch: #( 17 ) ].
^ self reportLastMatch
]
{ #category : #generated }
CarpScanner >> scanForToken [
self step.
currentCharacter == $"
ifTrue: [ ^ self scan1 ].
currentCharacter == $'
ifTrue: [ ^ self recordAndReportMatch: #(4) ].
currentCharacter == $(
ifTrue: [ ^ self recordAndReportMatch: #(2) ].
currentCharacter == $)
ifTrue: [ ^ self recordAndReportMatch: #(3) ].
currentCharacter == $.
ifTrue: [ ^ self recordAndReportMatch: #(8) ].
^ self scanForTokenX5
currentCharacter == $" ifTrue: [ ^ self scan1 ].
currentCharacter == $% ifTrue: [ ^ self scanForTokenX7 ].
currentCharacter == $& ifTrue: [ ^ self recordAndReportMatch: #( 3 ) ].
currentCharacter == $( ifTrue: [ ^ self recordAndReportMatch: #( 6 ) ].
currentCharacter == $) ifTrue: [ ^ self recordAndReportMatch: #( 7 ) ].
currentCharacter == $, ifTrue: [
^ self recordAndReportMatch: #( 15 ) ].
currentCharacter == $. ifTrue: [
^ self recordAndReportMatch: #( 11 ) ].
currentCharacter == $0 ifTrue: [ ^ self scanForTokenX2 ].
currentCharacter == $; ifTrue: [ ^ self scanForTokenX5 ].
currentCharacter == $@ ifTrue: [ ^ self recordAndReportMatch: #( 4 ) ].
currentCharacter == $[ ifTrue: [
^ self recordAndReportMatch: #( 12 ) ].
^ self scanForTokenX8
]
{ #category : #generated }
CarpScanner >> scanForTokenX1 [
self recordMatch: #(11).
self step.
currentCharacter == $.
ifTrue: [ ^ self scan3 ].
currentCharacter == $b
ifTrue: [ self recordMatch: #(11).
currentCharacter == $b ifTrue: [
self recordMatch: #( 17 ).
self step.
currentCharacter == $a ifTrue: [
(self scanForString: 'cksp') ifTrue: [ ^ self scan4 ] ].
^ self reportLastMatch ].
currentCharacter == $f ifTrue: [
self recordMatch: #( 17 ).
self step.
currentCharacter == $o ifTrue: [
(self scanForString: 'rmfeed') ifTrue: [
^ self recordAndReportMatch: #( 17 ) ] ].
^ self reportLastMatch ].
currentCharacter == $n ifTrue: [
self recordMatch: #( 17 ).
self step.
currentCharacter == $e ifTrue: [
(self scanForString: 'wlin') ifTrue: [ ^ self scan5 ] ].
^ self reportLastMatch ].
currentCharacter == $o ifTrue: [
self recordMatch: #( 17 ).
self step.
(currentCharacter between: $0 and: $7) ifTrue: [
self step.
(currentCharacter between: $0 and: $1)
ifTrue: [ ^ self recordAndReportMatch: #(11) ].
^ self reportLastMatch ].
currentCharacter == $x
ifTrue: [ self step.
(currentCharacter isDigit
or: [ (currentCharacter between: $A and: $F)
or: [ currentCharacter between: $a and: $f ] ])
ifTrue: [ ^ self recordAndReportMatch: #(11) ].
^ self reportLastMatch ].
currentCharacter isDigit
ifTrue: [ ^ self scan4 ].
('fl' includes: currentCharacter)
ifTrue: [ ^ self recordAndReportMatch: #(11) ].
(currentCharacter between: $0 and: $7) ifTrue: [
self step.
(currentCharacter between: $0 and: $7) ifTrue: [
^ self recordAndReportMatch: #( 17 ) ] ] ].
^ self reportLastMatch ].
currentCharacter == $r ifTrue: [
self recordMatch: #( 17 ).
self step.
currentCharacter == $e ifTrue: [
(self scanForString: 'turn') ifTrue: [
^ self recordAndReportMatch: #( 17 ) ] ].
^ self reportLastMatch ].
currentCharacter == $s ifTrue: [
self recordMatch: #( 17 ).
self step.
currentCharacter == $p ifTrue: [ ^ self scan4 ].
^ self reportLastMatch ].
currentCharacter == $t ifTrue: [
self recordMatch: #( 17 ).
self step.
currentCharacter == $a ifTrue: [
self step.
currentCharacter == $b ifTrue: [
^ self recordAndReportMatch: #( 17 ) ] ].
^ self reportLastMatch ].
currentCharacter == $u ifTrue: [ ^ self scanForTokenX1X1 ].
^ self recordAndReportMatch: #( 17 )
]
{ #category : #generated }
CarpScanner >> scanForTokenX1X1 [
self recordMatch: #( 17 ).
self step.
(currentCharacter isDigit or: [ currentCharacter between: $A and: $F ])
ifTrue: [
self step.
(currentCharacter isDigit or: [
currentCharacter between: $A and: $F ]) ifTrue: [
self step.
(currentCharacter isDigit or: [
currentCharacter between: $A and: $F ]) ifTrue: [
self step.
(currentCharacter isDigit or: [
currentCharacter between: $A and: $F ]) ifTrue: [
^ self recordAndReportMatch: #( 17 ) ] ] ] ].
^ self reportLastMatch
]
{ #category : #generated }
CarpScanner >> scanForTokenX2 [
[ self recordMatch: #(6).
self recordMatch: #( 14 ).
self step.
currentCharacter isLowercase
or: [ currentCharacter isDigit
or: [ ('!$' includes: currentCharacter)
or: [ (currentCharacter between: $* and: $+)
or: [ ('/:' includes: currentCharacter)
or: [ (currentCharacter between: $< and: $?)
or: [ currentCharacter == $_ ] ] ] ] ] ] ] whileTrue.
currentCharacter == $. ifTrue: [ ^ self scan2 ].
currentCharacter == $b ifTrue: [
self recordMatch: #( 14 ).
self step.
(currentCharacter between: $0 and: $1) ifTrue: [
^ self recordAndReportMatch: #( 14 ) ].
^ self reportLastMatch ].
currentCharacter == $x ifTrue: [
self step.
(currentCharacter isDigit or: [
(currentCharacter between: $A and: $F) or: [
currentCharacter between: $a and: $f ] ]) ifTrue: [
^ self recordAndReportMatch: #( 14 ) ].
^ self reportLastMatch ].
currentCharacter isDigit ifTrue: [ ^ self scan3 ].
('fl' includes: currentCharacter) ifTrue: [
^ self recordAndReportMatch: #( 14 ) ].
^ self reportLastMatch
]
{ #category : #generated }
CarpScanner >> scanForTokenX3 [
[ self recordMatch: #(5).
[
self recordMatch: #( 10 ).
self step.
currentCharacter isLowercase
or: [ currentCharacter isDigit
or: [ ('!$' includes: currentCharacter)
or: [ (currentCharacter between: $* and: $+)
or: [ ('/:' includes: currentCharacter)
or: [ (currentCharacter between: $< and: $?)
or: [ currentCharacter == $_ ] ] ] ] ] ] ] whileTrue
currentCharacter isLowercase or: [
currentCharacter isUppercase or: [
currentCharacter isDigit or: [
('!$' includes: currentCharacter) or: [
(currentCharacter between: $* and: $+) or: [
('-/:' includes: currentCharacter) or: [
(currentCharacter between: $< and: $?) or: [
currentCharacter == $_ ] ] ] ] ] ] ] ] whileTrue.
^ self reportLastMatch
]
{ #category : #generated }
CarpScanner >> scanForTokenX4 [
[ self recordMatch: #(7).
[
self recordMatch: #( 9 ).
self step.
currentCharacter isSpaceSeparator or: [ currentCharacter == $, ] ]
whileTrue.
^ self reportLastMatch
currentCharacter isLowercase or: [
currentCharacter isUppercase or: [
currentCharacter isDigit or: [
('!$' includes: currentCharacter) or: [
(currentCharacter between: $* and: $+) or: [
('-/:' includes: currentCharacter) or: [
(currentCharacter between: $< and: $?) or: [
currentCharacter == $_ ] ] ] ] ] ] ] ] whileTrue
]
{ #category : #generated }
CarpScanner >> scanForTokenX5 [
currentCharacter == $0
ifTrue:
[ ^ self scanForTokenX1 ].
currentCharacter == $[
ifTrue: [ ^ self recordAndReportMatch: #(9) ].
currentCharacter == $]
ifTrue: [ ^ self recordAndReportMatch: #(10) ].
currentCharacter isDigit
ifTrue: [ ^ self scan4 ].
(currentCharacter isSpaceSeparator or: [ currentCharacter == $, ])
ifTrue:
[ ^ self scanForTokenX4 ].
currentCharacter isUppercase
ifTrue:
[ ^ self scanForTokenX2 ].
(currentCharacter isLowercase
or: [ ('!$' includes: currentCharacter)
or: [ (currentCharacter between: $* and: $+)
or: [ ('/:' includes: currentCharacter)
or: [ (currentCharacter between: $< and: $?)
or: [ currentCharacter == $_ ] ] ] ] ])
ifTrue:
[ self scanForTokenX3 ].
[
self recordMatch: #( 15 ).
self step.
currentCharacter <= Character tab or: [
(currentCharacter between: Character pageUp and: Character newPage)
or: [ currentCharacter >= (Character value: 14) ] ] ] whileTrue.
^ self reportLastMatch
]
{ #category : #generated }
CarpScanner >> scanForTokenX6 [
[
self recordMatch: #( 16 ).
self step.
currentCharacter isSeparator or: [
currentCharacter == Character pageUp ] ] whileTrue.
^ self reportLastMatch
]
{ #category : #generated }
CarpScanner >> scanForTokenX7 [
self recordMatch: #( 1 ).
self step.
currentCharacter == $@ ifTrue: [ ^ self recordAndReportMatch: #( 2 ) ].
^ self reportLastMatch
]
{ #category : #generated }
CarpScanner >> scanForTokenX8 [
currentCharacter == $\ ifTrue: [ ^ self scanForTokenX1 ].
currentCharacter == $] ifTrue: [
^ self recordAndReportMatch: #( 13 ) ].
currentCharacter isDigit ifTrue: [ ^ self scan3 ].
('''`' includes: currentCharacter) ifTrue: [
^ self recordAndReportMatch: #( 8 ) ].
(currentCharacter isSeparator or: [
currentCharacter == Character pageUp ]) ifTrue: [
^ self scanForTokenX6 ].
currentCharacter isUppercase ifTrue: [ ^ self scanForTokenX3 ].
(currentCharacter isLowercase or: [
('!$' includes: currentCharacter) or: [
(currentCharacter between: $* and: $+) or: [
('-/:' includes: currentCharacter) or: [
(currentCharacter between: $< and: $?) or: [
currentCharacter == $_ ] ] ] ] ]) ifTrue: [
self scanForTokenX4 ].
^ self reportLastMatch
]
{ #category : #generated }
CarpScanner >> tokenActions [
^ #( nil nil nil nil nil nil nil nil nil nil nil nil nil nil #comment
#whitespace )
]

View File

@@ -0,0 +1,40 @@
Class {
#name : #CarpStartNode,
#superclass : #CarpExpressionNode,
#instVars : [
'expressions'
],
#category : #Carp
}
{ #category : #generated }
CarpStartNode >> acceptVisitor: anExpressionVisitor [
^ anExpressionVisitor visitStart: self
]
{ #category : #generated }
CarpStartNode >> compositeNodeVariables [
^ #( #expressions )
]
{ #category : #generated }
CarpStartNode >> expressions [
^ expressions
]
{ #category : #generated }
CarpStartNode >> expressions: anOrderedCollection [
self setParents: self expressions to: nil.
expressions := anOrderedCollection.
self setParents: self expressions to: self
]
{ #category : #'generated-initialize-release' }
CarpStartNode >> initialize [
super initialize.
expressions := OrderedCollection new: 2.
]

View File

@@ -0,0 +1,32 @@
Class {
#name : #CarpStringNode,
#superclass : #CarpExpressionNode,
#instVars : [
'value'
],
#category : #Carp
}
{ #category : #generated }
CarpStringNode >> acceptVisitor: anExpressionVisitor [
^ anExpressionVisitor visitString: self
]
{ #category : #generated }
CarpStringNode >> tokenVariables [
^ #( #value )
]
{ #category : #generated }
CarpStringNode >> value [
^ value
]
{ #category : #generated }
CarpStringNode >> value: aSmaCCToken [
value := aSmaCCToken
]

View File

@@ -0,0 +1,34 @@
Class {
#name : #CarpUnquoteNode,
#superclass : #CarpExpressionNode,
#instVars : [
'value'
],
#category : #Carp
}
{ #category : #generated }
CarpUnquoteNode >> acceptVisitor: anExpressionVisitor [
^ anExpressionVisitor visitUnquote: self
]
{ #category : #generated }
CarpUnquoteNode >> nodeVariables [
^ #( #value )
]
{ #category : #generated }
CarpUnquoteNode >> value [
^ value
]
{ #category : #generated }
CarpUnquoteNode >> value: aCarpExpressionNode [
self value notNil ifTrue: [ self value parent: nil ].
value := aCarpExpressionNode.
self value notNil ifTrue: [ self value parent: self ]
]

View File

@@ -0,0 +1,32 @@
Class {
#name : #CarpVariableNode,
#superclass : #CarpExpressionNode,
#instVars : [
'value'
],
#category : #Carp
}
{ #category : #generated }
CarpVariableNode >> acceptVisitor: anExpressionVisitor [
^ anExpressionVisitor visitVariable: self
]
{ #category : #generated }
CarpVariableNode >> tokenVariables [
^ #( #value )
]
{ #category : #generated }
CarpVariableNode >> value [
^ value
]
{ #category : #generated }
CarpVariableNode >> value: aSmaCCToken [
value := aSmaCCToken
]

View File

@@ -0,0 +1,84 @@
Trait {
#name : #TCarpExpressionNodeVisitor,
#traits : 'TSmaCCParseNodeVisitor',
#classTraits : 'TSmaCCParseNodeVisitor classTrait',
#category : #Carp
}
{ #category : #generated }
TCarpExpressionNodeVisitor >> visitArray: anArray [
^ self visitExpression: anArray
]
{ #category : #generated }
TCarpExpressionNodeVisitor >> visitCharacter: aCharacter [
^ self visitExpression: aCharacter
]
{ #category : #generated }
TCarpExpressionNodeVisitor >> visitDeref: aDeref [
^ self visitExpression: aDeref
]
{ #category : #generated }
TCarpExpressionNodeVisitor >> visitExpression: anExpression [
^ self visitSmaCCParseNode: anExpression
]
{ #category : #generated }
TCarpExpressionNodeVisitor >> visitList: aList [
^ self visitExpression: aList
]
{ #category : #generated }
TCarpExpressionNodeVisitor >> visitModuleOrType: aModuleOrType [
^ self visitExpression: aModuleOrType
]
{ #category : #generated }
TCarpExpressionNodeVisitor >> visitNumber: aNumber [
^ self visitExpression: aNumber
]
{ #category : #generated }
TCarpExpressionNodeVisitor >> visitQuote: aQuote [
^ self visitExpression: aQuote
]
{ #category : #generated }
TCarpExpressionNodeVisitor >> visitRef: aRef [
^ self visitExpression: aRef
]
{ #category : #generated }
TCarpExpressionNodeVisitor >> visitStart: aStart [
^ self visitExpression: aStart
]
{ #category : #generated }
TCarpExpressionNodeVisitor >> visitString: aString [
^ self visitExpression: aString
]
{ #category : #generated }
TCarpExpressionNodeVisitor >> visitUnquote: anUnquote [
^ self visitExpression: anUnquote
]
{ #category : #generated }
TCarpExpressionNodeVisitor >> visitVariable: aVariable [
^ self visitExpression: aVariable
]