Skip to content

Commit 7b4ef09

Browse files
committed
ambr Parenthesis Bracket
1 parent 3d07230 commit 7b4ef09

File tree

4 files changed

+32
-38
lines changed

4 files changed

+32
-38
lines changed

src/sexp/lexer/Lexer.test.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -57,40 +57,40 @@ test("quotes", () => {
5757

5858
test("parentheses", () => {
5959
assertTokens("()", [
60-
{ kind: "ParenthesisStart", value: "(" },
61-
{ kind: "ParenthesisEnd", value: ")" },
60+
{ kind: "BracketStart", value: "(" },
61+
{ kind: "BracketEnd", value: ")" },
6262
])
6363

6464
assertTokens("( )", [
65-
{ kind: "ParenthesisStart", value: "(" },
66-
{ kind: "ParenthesisEnd", value: ")" },
65+
{ kind: "BracketStart", value: "(" },
66+
{ kind: "BracketEnd", value: ")" },
6767
])
6868

6969
assertTokens("(a)(b)", [
70-
{ kind: "ParenthesisStart", value: "(" },
70+
{ kind: "BracketStart", value: "(" },
7171
{ kind: "Symbol", value: "a" },
72-
{ kind: "ParenthesisEnd", value: ")" },
73-
{ kind: "ParenthesisStart", value: "(" },
72+
{ kind: "BracketEnd", value: ")" },
73+
{ kind: "BracketStart", value: "(" },
7474
{ kind: "Symbol", value: "b" },
75-
{ kind: "ParenthesisEnd", value: ")" },
75+
{ kind: "BracketEnd", value: ")" },
7676
])
7777

7878
assertTokens("([{x}])", [
79-
{ kind: "ParenthesisStart", value: "(" },
80-
{ kind: "ParenthesisStart", value: "[" },
81-
{ kind: "ParenthesisStart", value: "{" },
79+
{ kind: "BracketStart", value: "(" },
80+
{ kind: "BracketStart", value: "[" },
81+
{ kind: "BracketStart", value: "{" },
8282
{ kind: "Symbol", value: "x" },
83-
{ kind: "ParenthesisEnd", value: "}" },
84-
{ kind: "ParenthesisEnd", value: "]" },
85-
{ kind: "ParenthesisEnd", value: ")" },
83+
{ kind: "BracketEnd", value: "}" },
84+
{ kind: "BracketEnd", value: "]" },
85+
{ kind: "BracketEnd", value: ")" },
8686
])
8787

8888
assertTokens("(head . tail)", [
89-
{ kind: "ParenthesisStart", value: "(" },
89+
{ kind: "BracketStart", value: "(" },
9090
{ kind: "Symbol", value: "head" },
9191
{ kind: "Symbol", value: "." },
9292
{ kind: "Symbol", value: "tail" },
93-
{ kind: "ParenthesisEnd", value: ")" },
93+
{ kind: "BracketEnd", value: ")" },
9494
])
9595

9696
assertTokens("abc", [{ kind: "Symbol", value: "abc" }])

src/sexp/lexer/Lexing.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ export class Lexing implements Iterator<Token> {
1212
// try `NumberHandler` before `SymbolHandler`.
1313
new SpaceHandler(this),
1414
new QuoteHandler(this),
15-
new ParenthesisStartHandler(this),
16-
new ParenthesisEndHandler(this),
15+
new BracketStartHandler(this),
16+
new BracketEndHandler(this),
1717
new CommentHandler(this),
1818
new StringHandler(this),
1919
new NumberHandler(this),
@@ -103,8 +103,8 @@ class SpaceHandler extends CharHandler {
103103
}
104104
}
105105

106-
class ParenthesisStartHandler extends CharHandler {
107-
kind = "ParenthesisStart" as const
106+
class BracketStartHandler extends CharHandler {
107+
kind = "BracketStart" as const
108108

109109
canHandle(char: string): boolean {
110110
return this.lexer.config.parentheses
@@ -118,8 +118,8 @@ class ParenthesisStartHandler extends CharHandler {
118118
}
119119
}
120120

121-
class ParenthesisEndHandler extends CharHandler {
122-
kind = "ParenthesisEnd" as const
121+
class BracketEndHandler extends CharHandler {
122+
kind = "BracketEnd" as const
123123

124124
canHandle(char: string): boolean {
125125
return this.lexer.config.parentheses.map(({ end }) => end).includes(char)

src/sexp/parser/Parsing.ts

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,16 @@ export class Parsing {
7171
}
7272
}
7373

74-
case "ParenthesisStart": {
74+
case "BracketStart": {
7575
return this.parseList(
7676
tokens[0],
7777
tokens.slice(1),
7878
Sexps.Null(tokens[0].span),
7979
)
8080
}
8181

82-
case "ParenthesisEnd": {
83-
throw new ParsingError(`I found extra ParenthesisEnd`, tokens[0].span)
82+
case "BracketEnd": {
83+
throw new ParsingError(`I found extra BracketEnd`, tokens[0].span)
8484
}
8585

8686
case "Quote": {
@@ -111,32 +111,26 @@ export class Parsing {
111111
list: Sexps.Cons | Sexps.Null,
112112
): Result {
113113
if (tokens[0] === undefined) {
114-
throw new ParsingError(`Missing ParenthesisEnd`, start.span)
114+
throw new ParsingError(`Missing BracketEnd`, start.span)
115115
}
116116

117117
if (tokens[0].kind === "Symbol" && tokens[0].value === ".") {
118118
const { sexp, remain } = this.parse(tokens.slice(1))
119119

120120
if (remain[0] === undefined) {
121-
throw new ParsingError(`Missing ParenthesisEnd`, start.span)
121+
throw new ParsingError(`Missing BracketEnd`, start.span)
122122
}
123123

124124
if (!this.parser.config.matchParentheses(start.value, remain[0].value)) {
125-
throw new ParsingError(
126-
`I expect a matching ParenthesisEnd`,
127-
remain[0].span,
128-
)
125+
throw new ParsingError(`I expect a matching BracketEnd`, remain[0].span)
129126
}
130127

131128
return { sexp, remain: remain.slice(1) }
132129
}
133130

134-
if (tokens[0].kind === "ParenthesisEnd") {
131+
if (tokens[0].kind === "BracketEnd") {
135132
if (!this.parser.config.matchParentheses(start.value, tokens[0].value)) {
136-
throw new ParsingError(
137-
`I expect a matching ParenthesisEnd`,
138-
tokens[0].span,
139-
)
133+
throw new ParsingError(`I expect a matching BracketEnd`, tokens[0].span)
140134
}
141135

142136
list.span = tokens[0].span

src/sexp/token/Token.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ export type TokenKind =
44
| "Symbol"
55
| "String"
66
| "Number"
7-
| "ParenthesisStart"
8-
| "ParenthesisEnd"
7+
| "BracketStart"
8+
| "BracketEnd"
99
| "Quote"
1010

1111
export class Token {

0 commit comments

Comments
 (0)