Skip to content

Commit bac1271

Browse files
authored
Don't store the term sigil in the identifier name (#183)
1 parent 7a24f9b commit bac1271

15 files changed

+198
-53
lines changed

spec/CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,18 @@
22

33
## Unreleased
44

5-
- Support astral Unicode characters. (#179)
5+
- Support astral Unicode characters. (#174)
66

77
Unicode characters from outside of the Basic Multilingual Plane can now
88
be used in values of `TextElements` and `StringLiterals`. This means all
99
characters in the U+10000 to U+10FFFF range. 🎉
1010

11+
- Don't store the `-` sigil in `Identifiers` of `Terms`. (#142)
12+
13+
The `-` sigil is no longer part of the term's `Identifier`. This is now
14+
consistent with how `Identifiers` of variables don't include the `$`
15+
sigil either.
16+
1117
## 0.7.0 (October 15, 2018)
1218

1319
- Relax the indentation requirement. (#87)

spec/fluent.ebnf

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Entry ::= (Message line_end)
1212
| (Term line_end)
1313
| CommentLine
1414
Message ::= Identifier blank_inline? "=" blank_inline? ((Pattern Attribute*) | (Attribute+))
15-
Term ::= TermIdentifier blank_inline? "=" blank_inline? Value Attribute*
15+
Term ::= "-" Identifier blank_inline? "=" blank_inline? Value Attribute*
1616

1717
/* Adjacent comment lines of the same comment type are joined together during
1818
* the AST construction. */
@@ -62,8 +62,8 @@ NumberLiteral ::= "-"? digit+ ("." digit+)?
6262

6363
/* Inline Expressions */
6464
MessageReference ::= Identifier
65-
TermReference ::= TermIdentifier
66-
VariableReference ::= VariableIdentifier
65+
TermReference ::= "-" Identifier
66+
VariableReference ::= "$" Identifier
6767
CallExpression ::= Function blank? "(" blank? argument_list blank? ")"
6868
argument_list ::= (Argument blank? "," blank?)* Argument?
6969
Argument ::= NamedArgument
@@ -80,11 +80,8 @@ DefaultVariant ::= line_end blank? "*" VariantKey blank_inline? Value
8080
VariantKey ::= "[" blank? (NumberLiteral | Identifier) blank? "]"
8181

8282
/* Identifiers */
83-
Identifier ::= identifier
84-
TermIdentifier ::= "-" identifier
85-
VariableIdentifier ::= "$" identifier
83+
Identifier ::= [a-zA-Z] [a-zA-Z0-9_-]*
8684
Function ::= [A-Z] [A-Z_?-]*
87-
identifier ::= [a-zA-Z] [a-zA-Z0-9_-]*
8885

8986
/* Characters */
9087
backslash ::= "\\"

syntax/grammar.mjs

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ let Message = defer(() =>
5656

5757
let Term = defer(() =>
5858
sequence(
59-
TermIdentifier.abstract,
59+
string("-"),
60+
Identifier.abstract,
6061
maybe(blank_inline),
6162
string("="),
6263
maybe(blank_inline),
@@ -223,10 +224,18 @@ let MessageReference = defer(() =>
223224
Identifier.chain(into(FTL.MessageReference)));
224225

225226
let TermReference = defer(() =>
226-
TermIdentifier.chain(into(FTL.TermReference)));
227+
sequence(
228+
string("-"),
229+
Identifier)
230+
.map(element_at(1))
231+
.chain(into(FTL.TermReference)));
227232

228233
let VariableReference = defer(() =>
229-
VariableIdentifier.chain(into(FTL.VariableReference)));
234+
sequence(
235+
string("$"),
236+
Identifier)
237+
.map(element_at(1))
238+
.chain(into(FTL.VariableReference)));
230239

231240
let CallExpression = defer(() =>
232241
sequence(
@@ -343,22 +352,14 @@ let VariantKey = defer(() =>
343352
/* ----------- */
344353
/* Identifiers */
345354

346-
let Identifier = defer(() =>
347-
identifier.chain(into(FTL.Identifier)));
348-
349-
let TermIdentifier = defer(() =>
355+
let Identifier =
350356
sequence(
351-
string("-"),
352-
identifier)
357+
charset("a-zA-Z"),
358+
repeat(
359+
charset("a-zA-Z0-9_-")))
360+
.map(flatten(1))
353361
.map(join)
354-
.chain(into(FTL.Identifier)));
355-
356-
let VariableIdentifier = defer(() =>
357-
sequence(
358-
string("$"),
359-
identifier)
360-
.map(element_at(1))
361-
.chain(into(FTL.Identifier)));
362+
.chain(into(FTL.Identifier));
362363

363364
let Function =
364365
sequence(
@@ -369,14 +370,6 @@ let Function =
369370
.map(join)
370371
.chain(into(FTL.Function));
371372

372-
let identifier =
373-
sequence(
374-
charset("a-zA-Z"),
375-
repeat(
376-
charset("a-zA-Z0-9_-")))
377-
.map(flatten(1))
378-
.map(join);
379-
380373
/* ---------- */
381374
/* Characters */
382375

test/fixtures/call_expressions.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,7 @@
548548
"type": "TermReference",
549549
"id": {
550550
"type": "Identifier",
551-
"name": "-msg"
551+
"name": "msg"
552552
}
553553
}
554554
],

test/fixtures/comments.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"type": "Term",
3131
"id": {
3232
"type": "Identifier",
33-
"name": "-term"
33+
"name": "term"
3434
},
3535
"value": {
3636
"type": "Pattern",

test/fixtures/member_expressions.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"type": "TermReference",
1919
"id": {
2020
"type": "Identifier",
21-
"name": "-term"
21+
"name": "term"
2222
}
2323
},
2424
"key": {

test/fixtures/mixed_entries.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"type": "Term",
1414
"id": {
1515
"type": "Identifier",
16-
"name": "-brand-name"
16+
"name": "brand-name"
1717
},
1818
"value": {
1919
"type": "Pattern",

test/fixtures/reference_expressions.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"type": "TermReference",
4141
"id": {
4242
"type": "Identifier",
43-
"name": "-term"
43+
"name": "term"
4444
}
4545
}
4646
}

test/fixtures/select_expressions.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
"type": "TermReference",
9393
"id": {
9494
"type": "Identifier",
95-
"name": "-term"
95+
"name": "term"
9696
}
9797
},
9898
"name": {

test/fixtures/terms.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"type": "Term",
66
"id": {
77
"type": "Identifier",
8-
"name": "-term01"
8+
"name": "term01"
99
},
1010
"value": {
1111
"type": "Pattern",
@@ -40,7 +40,7 @@
4040
"type": "Term",
4141
"id": {
4242
"type": "Identifier",
43-
"name": "-term02"
43+
"name": "term02"
4444
},
4545
"value": {
4646
"type": "Pattern",

0 commit comments

Comments
 (0)