Add `op` keyword for namespace properties

This commit is contained in:
David Wilson 2021-02-08 11:40:47 -08:00
Родитель f056c012e4
Коммит 4f704c9cc3
4 изменённых файлов: 7 добавлений и 2 удалений

Просмотреть файл

@ -109,6 +109,7 @@ export function parse(code: string) {
function parseNamespaceProperty(decorators: Array<Types.DecoratorExpressionNode>): Types.NamespacePropertyNode {
const pos = tokenPos();
parseExpected(Token.OpKeyword);
const id = parseIdentifier();
parseExpected(Token.OpenParen);
const modelPos = tokenPos();

Просмотреть файл

@ -49,6 +49,7 @@ export enum Token {
ImportKeyword,
ModelKeyword,
NamespaceKeyword,
OpKeyword,
TrueKeyword,
FalseKeyword
}
@ -57,6 +58,7 @@ const keywords = new Map([
['import', Token.ImportKeyword],
['model', Token.ModelKeyword],
['namespace', Token.NamespaceKeyword],
['op', Token.OpKeyword],
['true', Token.TrueKeyword],
['false', Token.FalseKeyword]
]);

Просмотреть файл

@ -25,6 +25,7 @@ Keyword :
`import`
`model`
`namespace`
`op`
Identifier :
IdentifierName but not Keyword
@ -223,7 +224,7 @@ NamespacePropertyList :
NamespacePropertyList `;` NamespaceProperty
NamespaceProperty :
DecoratorList? Identifier `(` ModelPropertyList? `)` `:` Expression
DecoratorList? `op` Identifier `(` ModelPropertyList? `)` `:` Expression
Expression :
UnionExpressionOrHigher

Просмотреть файл

@ -22,6 +22,7 @@
&emsp;&emsp;&emsp;<a name="Keyword-0330acf5"></a>`` import ``
&emsp;&emsp;&emsp;<a name="Keyword-fa60d604"></a>`` model ``
&emsp;&emsp;&emsp;<a name="Keyword-94f12ff9"></a>`` namespace ``
&emsp;&emsp;&emsp;<a name="Keyword-c93383ad"></a>`` op ``
&emsp;&emsp;<a name="Identifier"></a>*Identifier* **:**
&emsp;&emsp;&emsp;<a name="Identifier-11758399"></a>*[IdentifierName](#IdentifierName)* **but not** *[Keyword](#Keyword)*
@ -209,7 +210,7 @@
&emsp;&emsp;&emsp;<a name="NamespacePropertyList-89234f4f"></a>*[NamespacePropertyList](#NamespacePropertyList)*&emsp;`` ; ``&emsp;*[NamespaceProperty](#NamespaceProperty)*
&emsp;&emsp;<a name="NamespaceProperty"></a>*NamespaceProperty* **:**
&emsp;&emsp;&emsp;<a name="NamespaceProperty-6e1a4442"></a>*[DecoratorList](#DecoratorList)*<sub>opt</sub>&emsp;*[Identifier](#Identifier)*&emsp;`` ( ``&emsp;*[ModelPropertyList](#ModelPropertyList)*<sub>opt</sub>&emsp;`` ) ``&emsp;`` : ``&emsp;*[Expression](#Expression)*
&emsp;&emsp;&emsp;<a name="NamespaceProperty-bdb0dff6"></a>*[DecoratorList](#DecoratorList)*<sub>opt</sub>&emsp;`` op ``&emsp;*[Identifier](#Identifier)*&emsp;`` ( ``&emsp;*[ModelPropertyList](#ModelPropertyList)*<sub>opt</sub>&emsp;`` ) ``&emsp;`` : ``&emsp;*[Expression](#Expression)*
&emsp;&emsp;<a name="Expression"></a>*Expression* **:**
&emsp;&emsp;&emsp;<a name="Expression-3936659b"></a>*[UnionExpressionOrHigher](#UnionExpressionOrHigher)*