Multiple changes:

- Add missing class extensions
- Add CarpDefinitionsElement and add it to module coder [fixes #9]
- Add tests stub to carp module
This commit is contained in:
2022-04-18 20:47:56 +02:00
parent 341e39b03c
commit 8ed61d6819
5 changed files with 271 additions and 3 deletions

View File

@@ -0,0 +1,68 @@
Extension { #name : #GtSmaCCParserStyler }
{ #category : #'*Carp' }
GtSmaCCParserStyler class >> carpStyler: aParserClass [
<smaccStyler: #CarpParser priority: 50>
^ (self forParser: aParserClass) stylerRules: {
(GtSmaCCKeywordTokensStylerRule styleBlock: [ :styler |
styler
bold;
foreground: Color purple ]).
(GtSmaCCCommentStylerRule styleBlock: [ :styler |
styler foreground: Color lightGray ]).
(GtSmaCCNodeStylerRule
nodeClassName: #CarpNumberNode
styleBlock: [ :styler | styler foreground: Color blue ]).
(GtSmaCCNodeStylerRule
nodeClassName: #CarpStringNode
styleBlock: [ :styler | styler foreground: Color blue ]).
(GtSmaCCNodeStylerRule
nodeClassName: #CarpPatternNode
styleBlock: [ :styler | styler foreground: Color blue ]).
(GtSmaCCNodeStylerRule
nodeClassName: #CarpListNode
styleBlock: [ :styler :node :text |
(node expressions notEmpty and: [
((node expressions first isKindOf: CarpVariableNode) or:
(node expressions first isKindOf: CarpModuleOrTypeNode))
and: [ node isQuoted not ] ]) ifTrue: [
(text
from: node expressions first startPosition
to: node expressions first stopPosition) foreground:
Color purple ].
CarpStylerUtilities
colorAndHighlightParenthesesLeft: node startPosition
right: node stopPosition
atNestingLevel: node listDepth
inText: text ]).
(GtSmaCCNodeStylerRule
nodeClassName: #CarpMapNode
styleBlock: [ :styler :node :text |
CarpStylerUtilities
colorAndHighlightParenthesesLeft: node startPosition
right: node stopPosition
atNestingLevel: node listDepth
inText: text ]).
(GtSmaCCNodeStylerRule
nodeClassName: #CarpArrayNode
styleBlock: [ :styler :node :text |
CarpStylerUtilities
colorAndHighlightParenthesesLeft: node startPosition
right: node stopPosition
atNestingLevel: node listDepth
inText: text ]).
(GtSmaCCNodeStylerRule
nodeClassName: #CarpVariableNode
styleBlock: [ :styler | styler italic ]).
(GtSmaCCNodeStylerRule
nodeClassName: #CarpModuleOrTypeNode
styleBlock: [ :styler :node :text |
(text
from: node module startPosition
to: node module stopPosition) foreground: Color orange ]).
(GtSmaCCNodeVariableStylerRule
nodeClassName: #SmaCCErrorNode
variableNames: #( dismissedTokens errorToken )
styleBlock: [ :styler | styler foreground: Color red ]) }
]