docs: update syntax railroad diagrams
This commit is contained in:
@@ -27,20 +27,40 @@ svg.railroad .terminal rect {
|
|||||||
{[`reference` 'primary' <!, ["." 'identifier']*!>]}
|
{[`reference` 'primary' <!, ["." 'identifier']*!>]}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#let call-args = ```
|
||||||
|
{[`call-args` "(" <!, <'expression', ['identifier' "=" 'expression']>*","#`Same rules as Python`> ")"]}
|
||||||
|
```
|
||||||
|
|
||||||
|
#let call = ```
|
||||||
|
{[`call` 'reference' <!, 'call-args'*!>]}
|
||||||
|
```
|
||||||
|
|
||||||
#let unary = ```
|
#let unary = ```
|
||||||
{[`unary` <[<!, "-"> 'unary'], 'reference'>]}
|
{[`unary` <[<"+", "-", "!"> 'unary'], 'call'>]}
|
||||||
|
```
|
||||||
|
|
||||||
|
#let factor = ```
|
||||||
|
{[`factor` 'unary'*<"*", "/">]}
|
||||||
|
```
|
||||||
|
|
||||||
|
#let term = ```
|
||||||
|
{[`term` 'factor'*<"+", "-">]}
|
||||||
```
|
```
|
||||||
|
|
||||||
#let comparison = ```
|
#let comparison = ```
|
||||||
{[`comparison` 'unary'*<">", "<", ">=", "<=">]}
|
{[`comparison` 'term'*<">", "<", ">=", "<=">]}
|
||||||
```
|
```
|
||||||
|
|
||||||
#let equality = ```
|
#let equality = ```
|
||||||
{[`equality` 'comparison'*<"==", "!=">]}
|
{[`equality` 'comparison'*<"==", "!=">]}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#let expression = ```
|
||||||
|
{[`expression` 'equality'*"&"]}
|
||||||
|
```
|
||||||
|
|
||||||
#let constraint = ```
|
#let constraint = ```
|
||||||
{[`constraint` 'equality'*"&"]}
|
{[`constraint` 'expression']}
|
||||||
```
|
```
|
||||||
|
|
||||||
#let template-param = ```
|
#let template-param = ```
|
||||||
@@ -63,12 +83,16 @@ svg.railroad .terminal rect {
|
|||||||
{[`named-type` 'identifier']}
|
{[`named-type` 'identifier']}
|
||||||
```
|
```
|
||||||
|
|
||||||
#let type-params = ```
|
#let type-args = ```
|
||||||
{[`type-params` "[" <!, 'type'*","> "]"]}
|
{[`type-args` "[" <!, 'type'*","> "]"]}
|
||||||
|
```
|
||||||
|
|
||||||
|
#let frame-schema = ```
|
||||||
|
{[`frame-schema` "[" <!, ['TOKEN' ":" 'type']*","> "]"]}
|
||||||
```
|
```
|
||||||
|
|
||||||
#let generic-type = ```
|
#let generic-type = ```
|
||||||
{[`generic-type` 'named-type' <!, 'type-params'>]}
|
{[`generic-type` <["Frame" 'frame-schema'], ['named-type' <!, 'type-args'>]>]}
|
||||||
```
|
```
|
||||||
|
|
||||||
#let grouped-type = ```
|
#let grouped-type = ```
|
||||||
@@ -83,28 +107,48 @@ svg.railroad .terminal rect {
|
|||||||
{[`constraint-type` 'base-type' <!, ["where" 'constraint']>]}
|
{[`constraint-type` 'base-type' <!, ["where" 'constraint']>]}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#let pos-param = ```
|
||||||
|
{[`pos-param` <!, ['identifier' ":"]> 'type' <!, "?">]}
|
||||||
|
```
|
||||||
|
|
||||||
|
#let kw-param = ```
|
||||||
|
{[`kw-param` 'identifier' ":" 'type' <!, "?">]}
|
||||||
|
```
|
||||||
|
|
||||||
|
#let param-spec = ```
|
||||||
|
{[`param-spec` "(" <!, <'pos-param', "/", "*", 'kw-param'>*",">#`Same rules as Python` ")"]}
|
||||||
|
```
|
||||||
|
|
||||||
|
#let func-type = ```
|
||||||
|
{[`func-type` "fn" 'param-spec' "->" 'type']}
|
||||||
|
```
|
||||||
|
|
||||||
#let type = ```
|
#let type = ```
|
||||||
{[`type` 'constraint-type']}
|
{[`type` <'func-type', 'constraint-type'>]}
|
||||||
|
```
|
||||||
|
|
||||||
|
#let alias-statement = ```
|
||||||
|
{[`alias-statement` "alias" 'identifier' "=" 'type']}
|
||||||
```
|
```
|
||||||
|
|
||||||
#let type-statement = ```
|
#let type-statement = ```
|
||||||
{[`type-statement` "type" 'identifier' <!, 'template'> "=" 'type']}
|
{[`type-statement` "type" 'identifier' <!, 'template'> "=" 'type']}
|
||||||
```
|
```
|
||||||
|
|
||||||
#let op-definition = ```
|
#let member-stmt = ```
|
||||||
{[`op-definition` "op" 'identifier' "(" 'type' ")" "->" 'type']}
|
{[`member-stmt` <"prop", "def"> 'identifier' ":" 'type']}
|
||||||
```
|
```
|
||||||
|
|
||||||
#let extend-statement = ```
|
#let extend-statement = ```
|
||||||
{[`extend-statement` "extend" 'type' "{" <!, 'op-definition'*!> "}"]}
|
{[`extend-statement` "extend" 'type' "{" <!, 'member-stmt'*!> "}"]}
|
||||||
```
|
```
|
||||||
|
|
||||||
#let predicate-statement = ```
|
#let predicate-statement = ```
|
||||||
{[`predicate-statement` "predicate" 'identifier' "(" 'identifier' ":" 'type' ")" "=" 'constraint']}
|
{[`predicate-statement` "predicate" 'identifier' <!, 'param-spec'*!> "=" 'constraint']}
|
||||||
```
|
```
|
||||||
|
|
||||||
#let statement = ```
|
#let statement = ```
|
||||||
{[`statement` <'type-statement', 'extend-statement', 'predicate-statement'>]}
|
{[`statement` <'alias-statement', 'type-statement', 'extend-statement', 'predicate-statement'>]}
|
||||||
```
|
```
|
||||||
|
|
||||||
#let rules = (
|
#let rules = (
|
||||||
@@ -112,23 +156,33 @@ svg.railroad .terminal rect {
|
|||||||
grouping: grouping,
|
grouping: grouping,
|
||||||
primary: primary,
|
primary: primary,
|
||||||
reference: reference,
|
reference: reference,
|
||||||
|
call-args: call-args,
|
||||||
|
call: call,
|
||||||
unary: unary,
|
unary: unary,
|
||||||
|
factor: factor,
|
||||||
|
term: term,
|
||||||
comparison: comparison,
|
comparison: comparison,
|
||||||
equality: equality,
|
equality: equality,
|
||||||
|
expression: expression,
|
||||||
constraint: constraint,
|
constraint: constraint,
|
||||||
template-param: template-param,
|
template-param: template-param,
|
||||||
template: template,
|
template: template,
|
||||||
type-property: type-property,
|
type-property: type-property,
|
||||||
complex-type: complex-type,
|
complex-type: complex-type,
|
||||||
named-type: named-type,
|
named-type: named-type,
|
||||||
type-params: type-params,
|
type-args: type-args,
|
||||||
generic-type: generic-type,
|
generic-type: generic-type,
|
||||||
grouped-type: grouped-type,
|
grouped-type: grouped-type,
|
||||||
base-type: base-type,
|
base-type: base-type,
|
||||||
constraint-type: constraint-type,
|
constraint-type: constraint-type,
|
||||||
|
pos-param: pos-param,
|
||||||
|
kw-param: kw-param,
|
||||||
|
param-spec: param-spec,
|
||||||
|
func-type: func-type,
|
||||||
type: type,
|
type: type,
|
||||||
|
alias-statement: alias-statement,
|
||||||
type-statement: type-statement,
|
type-statement: type-statement,
|
||||||
op-definition: op-definition,
|
member-stmt: member-stmt,
|
||||||
extend-statement: extend-statement,
|
extend-statement: extend-statement,
|
||||||
predicate-statement: predicate-statement,
|
predicate-statement: predicate-statement,
|
||||||
statement: statement,
|
statement: statement,
|
||||||
@@ -140,14 +194,19 @@ svg.railroad .terminal rect {
|
|||||||
"template-param",
|
"template-param",
|
||||||
"template",
|
"template",
|
||||||
"type-property",
|
"type-property",
|
||||||
|
"call-args",
|
||||||
"complex-type",
|
"complex-type",
|
||||||
"type-params",
|
"type-args",
|
||||||
"named-type",
|
"named-type",
|
||||||
"grouped-type",
|
"grouped-type",
|
||||||
"generic-type",
|
"generic-type",
|
||||||
"base-type",
|
"base-type",
|
||||||
"constraint-type",
|
"constraint-type",
|
||||||
"op-definition",
|
"pos-param",
|
||||||
|
"kw-param",
|
||||||
|
"func-type",
|
||||||
|
"member-stmt",
|
||||||
|
"alias-statement",
|
||||||
"type-statement",
|
"type-statement",
|
||||||
"extend-statement",
|
"extend-statement",
|
||||||
"predicate-statement",
|
"predicate-statement",
|
||||||
@@ -164,7 +223,7 @@ svg.railroad .terminal rect {
|
|||||||
2,
|
2,
|
||||||
outline(title: none),
|
outline(title: none),
|
||||||
),
|
),
|
||||||
height: 9cm,
|
height: 15cm,
|
||||||
stroke: 1pt,
|
stroke: 1pt,
|
||||||
inset: 1em,
|
inset: 1em,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user