Add parsing
This commit is contained in:
40
src/Carp/CarpArrayNode.class.st
Normal file
40
src/Carp/CarpArrayNode.class.st
Normal 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.
|
||||||
|
]
|
32
src/Carp/CarpCharacterNode.class.st
Normal file
32
src/Carp/CarpCharacterNode.class.st
Normal 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
|
||||||
|
]
|
34
src/Carp/CarpDerefNode.class.st
Normal file
34
src/Carp/CarpDerefNode.class.st
Normal 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 ]
|
||||||
|
]
|
11
src/Carp/CarpExpressionNode.class.st
Normal file
11
src/Carp/CarpExpressionNode.class.st
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Class {
|
||||||
|
#name : #CarpExpressionNode,
|
||||||
|
#superclass : #SmaCCParseNode,
|
||||||
|
#category : #'Carp-Carp'
|
||||||
|
}
|
||||||
|
|
||||||
|
{ #category : #generated }
|
||||||
|
CarpExpressionNode >> acceptVisitor: anExpressionVisitor [
|
||||||
|
|
||||||
|
^ anExpressionVisitor visitExpression: self
|
||||||
|
]
|
7
src/Carp/CarpExpressionNodeVisitor.class.st
Normal file
7
src/Carp/CarpExpressionNodeVisitor.class.st
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Class {
|
||||||
|
#name : #CarpExpressionNodeVisitor,
|
||||||
|
#superclass : #Object,
|
||||||
|
#traits : 'TCarpExpressionNodeVisitor',
|
||||||
|
#classTraits : 'TCarpExpressionNodeVisitor classTrait',
|
||||||
|
#category : #Carp
|
||||||
|
}
|
36
src/Carp/CarpFile.class.st
Normal file
36
src/Carp/CarpFile.class.st
Normal 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).
|
||||||
|
]
|
40
src/Carp/CarpListNode.class.st
Normal file
40
src/Carp/CarpListNode.class.st
Normal 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.
|
||||||
|
]
|
34
src/Carp/CarpModuleOrTypeNode.class.st
Normal file
34
src/Carp/CarpModuleOrTypeNode.class.st
Normal 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
|
||||||
|
]
|
32
src/Carp/CarpNumberNode.class.st
Normal file
32
src/Carp/CarpNumberNode.class.st
Normal 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
|
||||||
|
]
|
@@ -6,18 +6,18 @@ Class {
|
|||||||
|
|
||||||
{ #category : #'generated-accessing' }
|
{ #category : #'generated-accessing' }
|
||||||
CarpParser class >> cacheId [
|
CarpParser class >> cacheId [
|
||||||
^'2020-10-05T22:57:25.346883+02:00'
|
^'2022-03-20T19:54:13.067877+01:00'
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpParser class >> definitionComment [
|
CarpParser class >> definitionComment [
|
||||||
"%glr;
|
"%glr;
|
||||||
|
|
||||||
<hexa>
|
%root Expression;
|
||||||
: [0-9a-fA-F]
|
%prefix Carp;
|
||||||
;
|
%suffix Node;
|
||||||
<escape>
|
<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>
|
<string_literal>
|
||||||
: (\"" ([^\""\\] | <escape>)* \"")
|
: (\"" ([^\""\\] | <escape>)* \"")
|
||||||
@@ -29,29 +29,23 @@ CarpParser class >> definitionComment [
|
|||||||
: \)
|
: \)
|
||||||
;
|
;
|
||||||
<quote>
|
<quote>
|
||||||
: \'
|
: \' | \`
|
||||||
;
|
;
|
||||||
<variable_start>
|
<variable_start>
|
||||||
: <isLowercase> | _ | \$ | \+ | \* | \/ | \? | ! | > | < | = | :
|
: <isLowercase> | _ | \$ | \+ | \* | \/ | \? | ! | > | < | = | : | -
|
||||||
;
|
;
|
||||||
default <variable>
|
default <variable>
|
||||||
: <variable_start> <variable_part>*
|
: <variable_start> <variable_part>*
|
||||||
;
|
;
|
||||||
<variable_part>
|
<variable_part>
|
||||||
: <variable_start> | <isDigit>
|
: <variable_start> | <isDigit> | <isUppercase>
|
||||||
;
|
;
|
||||||
<module>
|
<module>
|
||||||
: <isUppercase> <variable_part>*
|
: <isUppercase> <variable_part>*
|
||||||
;
|
;
|
||||||
<space>
|
|
||||||
: (<isSpaceSeparator> | ,)+
|
|
||||||
;
|
|
||||||
<dot>
|
<dot>
|
||||||
: \.
|
: \.
|
||||||
;
|
;
|
||||||
<Symbol>
|
|
||||||
: a
|
|
||||||
;
|
|
||||||
<open_bracket>
|
<open_bracket>
|
||||||
: \[
|
: \[
|
||||||
;
|
;
|
||||||
@@ -73,71 +67,103 @@ default <variable>
|
|||||||
;
|
;
|
||||||
<numeric_literal>
|
<numeric_literal>
|
||||||
: <decimal> | <hex_integer> | <binary_integer>
|
: <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
|
;Start
|
||||||
: Expression+
|
: Expressions {{}}
|
||||||
|
;
|
||||||
|
Expressions
|
||||||
|
:
|
||||||
|
| Expressions Expression 'expression'
|
||||||
;
|
;
|
||||||
Expression
|
Expression
|
||||||
: Literal
|
: Literal
|
||||||
|
| Deref
|
||||||
|
| Ref
|
||||||
|
| Unquote
|
||||||
|
;
|
||||||
|
Unquote
|
||||||
|
: (""%"" | ""%@"") Expression 'value' {{}}
|
||||||
|
;
|
||||||
|
Ref
|
||||||
|
: ""&"" Expression 'value' {{}}
|
||||||
|
;
|
||||||
|
Deref
|
||||||
|
: ""@"" Expression 'value' {{}}
|
||||||
;
|
;
|
||||||
Literal
|
Literal
|
||||||
: String | List | Array | Symbol | Quote | Number
|
: String | List | Array | Symbol | Quote | Number | Character
|
||||||
|
;
|
||||||
|
Character
|
||||||
|
: <character> 'value' {{}}
|
||||||
;
|
;
|
||||||
Number
|
Number
|
||||||
: <numeric_literal>
|
: <numeric_literal> 'value' {{}}
|
||||||
;
|
;
|
||||||
Array
|
Array
|
||||||
: <open_bracket> ListContents <close_bracket>
|
: <open_bracket> Expressions <close_bracket> {{}}
|
||||||
;
|
;
|
||||||
Quote
|
Quote
|
||||||
: <quote> Expression
|
: <quote> Expression 'value' {{}}
|
||||||
;
|
;
|
||||||
Symbol
|
Symbol
|
||||||
: ModuleOrType | Variable
|
: ModuleOrType | Variable
|
||||||
;
|
;
|
||||||
Variable
|
Variable
|
||||||
: <variable>
|
: <variable> 'value' {{}}
|
||||||
;
|
;
|
||||||
ModuleOrType
|
ModuleOrType
|
||||||
: <module> <dot> Symbol
|
: <module> <dot> Symbol 'value' {{}}
|
||||||
| <module>
|
| <module> 'value' {{}}
|
||||||
;
|
;
|
||||||
List
|
List
|
||||||
: <open_paren> ListContents <close_paren>
|
: <open_paren> Expressions <close_paren> {{}}
|
||||||
;
|
|
||||||
ListContents
|
|
||||||
: Expression <space> ListContents
|
|
||||||
| Expression
|
|
||||||
;
|
;
|
||||||
String
|
String
|
||||||
: <string_literal>
|
: <string_literal> 'value' {{}}
|
||||||
;"
|
;"
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpParser class >> reduceTable [
|
CarpParser class >> reduceTable [
|
||||||
^#(
|
^#(
|
||||||
#(25 1 #reduceFor: 1310721 false )
|
#(20 0 #reduceActionForExpressions1: 1258497 false)
|
||||||
#(21 1 #reduceFor: 1111041 false )
|
#(19 1 #reduceActionForStart1: 1227777 false)
|
||||||
#(22 1 #reduceFor: 1137666 false )
|
#(34 1 #reduceActionForString1: 1988609 false)
|
||||||
#(17 1 #reduceFor: 952321 false )
|
#(31 1 #reduceActionForVariable1: 1811457 false)
|
||||||
#(13 1 #reduceFor: 837633 false )
|
#(32 1 #reduceActionForModuleOrType2: 1851394 false)
|
||||||
#(14 1 #reduceFor: 847873 false )
|
#(27 1 #reduceActionForNumber1: 1620993 false)
|
||||||
#(15 1 #reduceFor: 863233 false )
|
#(26 1 #reduceActionForCharacter1: 1579009 false)
|
||||||
#(16 1 #reduceFor: 888838 false )
|
#(20 2 #reduceActionForExpressions2: 1258498 false)
|
||||||
#(16 1 #reduceFor: 888835 false )
|
#(21 1 #liftFirstValue: 1316868 false)
|
||||||
#(16 1 #reduceFor: 888837 false )
|
#(21 1 #liftFirstValue: 1316867 false)
|
||||||
#(16 1 #reduceFor: 888836 false )
|
#(21 1 #liftFirstValue: 1316866 false)
|
||||||
#(20 1 #reduceFor: 1073154 false )
|
#(21 1 #liftFirstValue: 1316865 false)
|
||||||
#(20 1 #reduceFor: 1073153 false )
|
#(25 1 #liftFirstValue: 1502215 false)
|
||||||
#(16 1 #reduceFor: 888834 false )
|
#(25 1 #liftFirstValue: 1502214 false)
|
||||||
#(16 1 #reduceFor: 888833 false )
|
#(25 1 #liftFirstValue: 1502211 false)
|
||||||
#(24 1 #reduceFor: 1244162 false )
|
#(25 1 #liftFirstValue: 1502213 false)
|
||||||
#(19 2 #reduceFor: 1041409 false )
|
#(25 1 #liftFirstValue: 1502212 false)
|
||||||
#(14 2 #reduceFor: 847874 false )
|
#(30 1 #liftFirstValue: 1773570 false)
|
||||||
#(23 3 #reduceFor: 1191937 false )
|
#(30 1 #liftFirstValue: 1773569 false)
|
||||||
#(22 3 #reduceFor: 1137665 false )
|
#(25 1 #liftFirstValue: 1502210 false)
|
||||||
#(18 3 #reduceFor: 984065 false )
|
#(25 1 #liftFirstValue: 1502209 false)
|
||||||
#(24 3 #reduceFor: 1244161 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 }
|
{ #category : #generated }
|
||||||
CarpParser class >> startingStateForStart [
|
CarpParser class >> startingStateForStart [
|
||||||
|
|
||||||
^ 1
|
^ 1
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpParser class >> symbolNames [
|
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 }
|
{ #category : #generated }
|
||||||
CarpParser class >> transitionTable [
|
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]
|
#[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 6 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 35]
|
||||||
#[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 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 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]
|
#[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]
|
||||||
#[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 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 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 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 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]
|
#[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 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 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]
|
||||||
#[0 0 0 0 26]
|
#[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 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]
|
#[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 26 0 1 0 2 0 4 0 5 0 6 0 9 0 11 0 26]
|
#[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]
|
||||||
#[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]
|
#[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]
|
||||||
#[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]
|
#[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 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 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 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 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 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 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 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 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 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 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 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 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 62 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 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
|
||||||
#[1 0 66 0 3 0 109 0 7 0 66 0 10]
|
#[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 113 0 3]
|
#[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 70 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 8 0 9 0 10 0 12 0 13 0 14 0 17 0 35]
|
||||||
#[1 0 21 0 5 0 25 0 6 0 117 0 20 0 69 0 21 0 73 0 22]
|
#[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 121 0 10]
|
#[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 4 0 5 0 6 0 9 0 11 0 26]
|
#[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]
|
||||||
#[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 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 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 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 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 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 9 0 10 0 11 0 26]
|
#[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 90 0 3 0 10]
|
#[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
|
||||||
|
]
|
||||||
|
34
src/Carp/CarpQuoteNode.class.st
Normal file
34
src/Carp/CarpQuoteNode.class.st
Normal 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 ]
|
||||||
|
]
|
34
src/Carp/CarpRefNode.class.st
Normal file
34
src/Carp/CarpRefNode.class.st
Normal 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 ]
|
||||||
|
]
|
@@ -6,172 +6,285 @@ Class {
|
|||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpScanner >> emptySymbolTokenId [
|
CarpScanner >> emptySymbolTokenId [
|
||||||
^ 26
|
|
||||||
|
^ 35
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpScanner >> errorTokenId [
|
CarpScanner >> errorTokenId [
|
||||||
^ 27
|
|
||||||
|
^ 36
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpScanner >> scan1 [
|
CarpScanner >> scan1 [
|
||||||
[ self step.
|
|
||||||
currentCharacter == $"
|
[
|
||||||
ifTrue: [ ^ self recordAndReportMatch: #(1) ].
|
self step.
|
||||||
currentCharacter == $\
|
currentCharacter == $" ifTrue: [ ^ self recordAndReportMatch: #( 5 ) ].
|
||||||
ifTrue: [ self step.
|
currentCharacter == $\ ifTrue: [
|
||||||
(currentCharacter <= Character tab
|
self step.
|
||||||
or: [ (currentCharacter between: Character pageUp and: Character newPage)
|
^ self scan1 ].
|
||||||
or: [ currentCharacter >= (Character value: 14) ] ])
|
|
||||||
ifTrue: [ ^ self scan2 ].
|
|
||||||
^ self reportLastMatch ].
|
|
||||||
true ] whileTrue
|
true ] whileTrue
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpScanner >> scan2 [
|
CarpScanner >> scan2 [
|
||||||
[ self step.
|
|
||||||
currentCharacter == $"
|
self step.
|
||||||
ifTrue: [ [ self recordMatch: #(1).
|
currentCharacter isDigit ifTrue: [
|
||||||
self step.
|
[
|
||||||
currentCharacter == $" ] whileTrue.
|
self recordMatch: #( 14 ).
|
||||||
(currentCharacter == Character lf
|
self step.
|
||||||
or: [ currentCharacter == Character cr ])
|
currentCharacter == $f ifTrue: [
|
||||||
ifTrue: [ ^ self scan1 ].
|
^ self recordAndReportMatch: #( 14 ) ].
|
||||||
^ self scan2 ].
|
currentCharacter isDigit ] whileTrue ].
|
||||||
(currentCharacter == Character lf
|
^ self reportLastMatch
|
||||||
or: [ currentCharacter == Character cr ])
|
|
||||||
ifTrue: [ ^ self scan1 ].
|
|
||||||
true ] whileTrue
|
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpScanner >> scan3 [
|
CarpScanner >> scan3 [
|
||||||
|
|
||||||
|
[
|
||||||
|
self recordMatch: #( 14 ).
|
||||||
self step.
|
self step.
|
||||||
currentCharacter isDigit
|
currentCharacter == $. ifTrue: [ ^ self scan2 ].
|
||||||
ifTrue: [ [ self recordMatch: #(11).
|
currentCharacter isDigit ] whileTrue.
|
||||||
self step.
|
('bfl' includes: currentCharacter) ifTrue: [
|
||||||
currentCharacter == $f
|
^ self recordAndReportMatch: #( 14 ) ].
|
||||||
ifTrue: [ ^ self recordAndReportMatch: #(11) ].
|
|
||||||
currentCharacter isDigit ] whileTrue ].
|
|
||||||
^ self reportLastMatch
|
^ self reportLastMatch
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpScanner >> scan4 [
|
CarpScanner >> scan4 [
|
||||||
[ self recordMatch: #(11).
|
|
||||||
|
(self scanForString: 'ac') ifTrue: [ ^ self scan5 ].
|
||||||
|
^ self reportLastMatch
|
||||||
|
]
|
||||||
|
|
||||||
|
{ #category : #generated }
|
||||||
|
CarpScanner >> scan5 [
|
||||||
|
|
||||||
self step.
|
self step.
|
||||||
currentCharacter == $.
|
currentCharacter == $e ifTrue: [
|
||||||
ifTrue: [ ^ self scan3 ].
|
^ self recordAndReportMatch: #( 17 ) ].
|
||||||
currentCharacter isDigit ] whileTrue.
|
|
||||||
('bfl' includes: currentCharacter)
|
|
||||||
ifTrue: [ ^ self recordAndReportMatch: #(11) ].
|
|
||||||
^ self reportLastMatch
|
^ self reportLastMatch
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpScanner >> scanForToken [
|
CarpScanner >> scanForToken [
|
||||||
|
|
||||||
self step.
|
self step.
|
||||||
currentCharacter == $"
|
currentCharacter == $" ifTrue: [ ^ self scan1 ].
|
||||||
ifTrue: [ ^ self scan1 ].
|
currentCharacter == $% ifTrue: [ ^ self scanForTokenX7 ].
|
||||||
currentCharacter == $'
|
currentCharacter == $& ifTrue: [ ^ self recordAndReportMatch: #( 3 ) ].
|
||||||
ifTrue: [ ^ self recordAndReportMatch: #(4) ].
|
currentCharacter == $( ifTrue: [ ^ self recordAndReportMatch: #( 6 ) ].
|
||||||
currentCharacter == $(
|
currentCharacter == $) ifTrue: [ ^ self recordAndReportMatch: #( 7 ) ].
|
||||||
ifTrue: [ ^ self recordAndReportMatch: #(2) ].
|
currentCharacter == $, ifTrue: [
|
||||||
currentCharacter == $)
|
^ self recordAndReportMatch: #( 15 ) ].
|
||||||
ifTrue: [ ^ self recordAndReportMatch: #(3) ].
|
currentCharacter == $. ifTrue: [
|
||||||
currentCharacter == $.
|
^ self recordAndReportMatch: #( 11 ) ].
|
||||||
ifTrue: [ ^ self recordAndReportMatch: #(8) ].
|
currentCharacter == $0 ifTrue: [ ^ self scanForTokenX2 ].
|
||||||
^ self scanForTokenX5
|
currentCharacter == $; ifTrue: [ ^ self scanForTokenX5 ].
|
||||||
|
currentCharacter == $@ ifTrue: [ ^ self recordAndReportMatch: #( 4 ) ].
|
||||||
|
currentCharacter == $[ ifTrue: [
|
||||||
|
^ self recordAndReportMatch: #( 12 ) ].
|
||||||
|
^ self scanForTokenX8
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpScanner >> scanForTokenX1 [
|
CarpScanner >> scanForTokenX1 [
|
||||||
self recordMatch: #(11).
|
|
||||||
self step.
|
self step.
|
||||||
currentCharacter == $.
|
currentCharacter == $b ifTrue: [
|
||||||
ifTrue: [ ^ self scan3 ].
|
self recordMatch: #( 17 ).
|
||||||
currentCharacter == $b
|
self step.
|
||||||
ifTrue: [ self recordMatch: #(11).
|
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.
|
self step.
|
||||||
(currentCharacter between: $0 and: $1)
|
(currentCharacter between: $0 and: $7) ifTrue: [
|
||||||
ifTrue: [ ^ self recordAndReportMatch: #(11) ].
|
self step.
|
||||||
^ self reportLastMatch ].
|
(currentCharacter between: $0 and: $7) ifTrue: [
|
||||||
currentCharacter == $x
|
^ self recordAndReportMatch: #( 17 ) ] ] ].
|
||||||
ifTrue: [ self step.
|
^ self reportLastMatch ].
|
||||||
(currentCharacter isDigit
|
currentCharacter == $r ifTrue: [
|
||||||
or: [ (currentCharacter between: $A and: $F)
|
self recordMatch: #( 17 ).
|
||||||
or: [ currentCharacter between: $a and: $f ] ])
|
self step.
|
||||||
ifTrue: [ ^ self recordAndReportMatch: #(11) ].
|
currentCharacter == $e ifTrue: [
|
||||||
^ self reportLastMatch ].
|
(self scanForString: 'turn') ifTrue: [
|
||||||
currentCharacter isDigit
|
^ self recordAndReportMatch: #( 17 ) ] ].
|
||||||
ifTrue: [ ^ self scan4 ].
|
^ self reportLastMatch ].
|
||||||
('fl' includes: currentCharacter)
|
currentCharacter == $s ifTrue: [
|
||||||
ifTrue: [ ^ self recordAndReportMatch: #(11) ].
|
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
|
^ self reportLastMatch
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpScanner >> scanForTokenX2 [
|
CarpScanner >> scanForTokenX2 [
|
||||||
[ self recordMatch: #(6).
|
|
||||||
|
self recordMatch: #( 14 ).
|
||||||
self step.
|
self step.
|
||||||
currentCharacter isLowercase
|
currentCharacter == $. ifTrue: [ ^ self scan2 ].
|
||||||
or: [ currentCharacter isDigit
|
currentCharacter == $b ifTrue: [
|
||||||
or: [ ('!$' includes: currentCharacter)
|
self recordMatch: #( 14 ).
|
||||||
or: [ (currentCharacter between: $* and: $+)
|
self step.
|
||||||
or: [ ('/:' includes: currentCharacter)
|
(currentCharacter between: $0 and: $1) ifTrue: [
|
||||||
or: [ (currentCharacter between: $< and: $?)
|
^ self recordAndReportMatch: #( 14 ) ].
|
||||||
or: [ currentCharacter == $_ ] ] ] ] ] ] ] whileTrue.
|
^ 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
|
^ self reportLastMatch
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpScanner >> scanForTokenX3 [
|
CarpScanner >> scanForTokenX3 [
|
||||||
[ self recordMatch: #(5).
|
|
||||||
|
[
|
||||||
|
self recordMatch: #( 10 ).
|
||||||
self step.
|
self step.
|
||||||
currentCharacter isLowercase
|
currentCharacter isLowercase or: [
|
||||||
or: [ currentCharacter isDigit
|
currentCharacter isUppercase or: [
|
||||||
or: [ ('!$' includes: currentCharacter)
|
currentCharacter isDigit or: [
|
||||||
or: [ (currentCharacter between: $* and: $+)
|
('!$' includes: currentCharacter) or: [
|
||||||
or: [ ('/:' includes: currentCharacter)
|
(currentCharacter between: $* and: $+) or: [
|
||||||
or: [ (currentCharacter between: $< and: $?)
|
('-/:' includes: currentCharacter) or: [
|
||||||
or: [ currentCharacter == $_ ] ] ] ] ] ] ] whileTrue
|
(currentCharacter between: $< and: $?) or: [
|
||||||
|
currentCharacter == $_ ] ] ] ] ] ] ] ] whileTrue.
|
||||||
|
^ self reportLastMatch
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpScanner >> scanForTokenX4 [
|
CarpScanner >> scanForTokenX4 [
|
||||||
[ self recordMatch: #(7).
|
|
||||||
|
[
|
||||||
|
self recordMatch: #( 9 ).
|
||||||
self step.
|
self step.
|
||||||
currentCharacter isSpaceSeparator or: [ currentCharacter == $, ] ]
|
currentCharacter isLowercase or: [
|
||||||
whileTrue.
|
currentCharacter isUppercase or: [
|
||||||
^ self reportLastMatch
|
currentCharacter isDigit or: [
|
||||||
|
('!$' includes: currentCharacter) or: [
|
||||||
|
(currentCharacter between: $* and: $+) or: [
|
||||||
|
('-/:' includes: currentCharacter) or: [
|
||||||
|
(currentCharacter between: $< and: $?) or: [
|
||||||
|
currentCharacter == $_ ] ] ] ] ] ] ] ] whileTrue
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #generated }
|
{ #category : #generated }
|
||||||
CarpScanner >> scanForTokenX5 [
|
CarpScanner >> scanForTokenX5 [
|
||||||
currentCharacter == $0
|
|
||||||
ifTrue:
|
[
|
||||||
[ ^ self scanForTokenX1 ].
|
self recordMatch: #( 15 ).
|
||||||
currentCharacter == $[
|
self step.
|
||||||
ifTrue: [ ^ self recordAndReportMatch: #(9) ].
|
currentCharacter <= Character tab or: [
|
||||||
currentCharacter == $]
|
(currentCharacter between: Character pageUp and: Character newPage)
|
||||||
ifTrue: [ ^ self recordAndReportMatch: #(10) ].
|
or: [ currentCharacter >= (Character value: 14) ] ] ] whileTrue.
|
||||||
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 reportLastMatch
|
^ 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 )
|
||||||
|
]
|
||||||
|
40
src/Carp/CarpStartNode.class.st
Normal file
40
src/Carp/CarpStartNode.class.st
Normal 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.
|
||||||
|
]
|
32
src/Carp/CarpStringNode.class.st
Normal file
32
src/Carp/CarpStringNode.class.st
Normal 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
|
||||||
|
]
|
34
src/Carp/CarpUnquoteNode.class.st
Normal file
34
src/Carp/CarpUnquoteNode.class.st
Normal 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 ]
|
||||||
|
]
|
32
src/Carp/CarpVariableNode.class.st
Normal file
32
src/Carp/CarpVariableNode.class.st
Normal 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
|
||||||
|
]
|
84
src/Carp/TCarpExpressionNodeVisitor.trait.st
Normal file
84
src/Carp/TCarpExpressionNodeVisitor.trait.st
Normal 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
|
||||||
|
]
|
Reference in New Issue
Block a user