-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsmalltalk.pk
25 lines (23 loc) · 1.32 KB
/
smalltalk.pk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
SmalltalkGrammar : EtoileBase
{
MINUS <- '-':expr Spacing -> expr
EQUALS <- '=':expr Spacing -> expr
IDENTITY <- '==':expr Spacing -> expr
NOTEQUALS <- '~':expr Spacing -> expr
NOTIDENTITY <- '~=':expr Spacing -> expr
LT <- '<':expr Spacing -> expr
GT <- '>':expr Spacing -> expr
LTEQ <- '<=':expr Spacing -> expr
GTEQ <- '>='expr Spacing -> expr
BinaryMessageName <- (PLUS / STAR / MINUS / EQUALS / IDENTITY / NOTEQUALS / NOTIDENTITY / SLASH / LT / GT / LTEQ / GTEQ):msg -> msg
UnaryMessage <- Identifier:message -> [ makeUnaryMessage: message ]
BinaryMessage <- BinaryMessageName:message Identifier:arg -> [makeBinaryMessage: message argument: arg]
KeywordPart <- (IdentStart IdentCont* COLON):keywordPart Identifier:identPart -> [ makeMessageKeywordPart: keywordPart argument: identPart ]
KeywordMessage <- KeywordPart+:keywordPartList -> [makeKeywordMessage: keywordPartList]
MethodDefinition <- (UnaryMessage / BinaryMessage / KeywordMessage):def -> def
ClassMethod <-'+' MethodDefinition:def AOPEN ACLOSE -> def
InstanceMethod <- MethodDefinition:def AOPEN ACLOSE -> def
Method <- (ClassMethod / InstanceMethod):method -> method
MethodsList <- Method*:methodList -> methodList
SmalltalkClass <- Identifier 'subclass:' Space Identifier AOPEN MethodsList:methodList ACLOSE -> methodList
}