Add structure for container and shapes #1
8 changed files with 36 additions and 722 deletions
138
grammar.js
138
grammar.js
|
@ -10,8 +10,6 @@ const PREC = {
|
||||||
ATTRIBUTE_KEY: 0,
|
ATTRIBUTE_KEY: 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
spaces = /[ \t]/;
|
|
||||||
|
|
||||||
module.exports = grammar({
|
module.exports = grammar({
|
||||||
name: "d2",
|
name: "d2",
|
||||||
|
|
||||||
|
@ -22,28 +20,17 @@ module.exports = grammar({
|
||||||
|
|
||||||
word: ($) => $._identifier,
|
word: ($) => $._identifier,
|
||||||
|
|
||||||
conflicts: ($) => [
|
conflicts: ($) => [[$._connection_path, $.container]],
|
||||||
[$._connection_path, $.container],
|
|
||||||
//[$.shape_key],
|
|
||||||
/*
|
|
||||||
[$._shape_path],
|
|
||||||
[$._shape_block],
|
|
||||||
[$._shape_block_definition],
|
|
||||||
[$._style_attr_block],
|
|
||||||
[$._inner_style_attribute],
|
|
||||||
[$._emptyline],
|
|
||||||
*/
|
|
||||||
],
|
|
||||||
|
|
||||||
rules: {
|
rules: {
|
||||||
source_file: ($) => repeat($._new_root_definition),
|
source_file: ($) => repeat($._root_definition),
|
||||||
|
|
||||||
_new_root_definition: ($) =>
|
_root_definition: ($) =>
|
||||||
choice(
|
choice(
|
||||||
$._eol,
|
$._eol,
|
||||||
seq(
|
seq(
|
||||||
choice(
|
choice(
|
||||||
alias($._new_root_attribute, $.attribute),
|
alias($._root_attribute, $.attribute),
|
||||||
$.shape,
|
$.shape,
|
||||||
$.container,
|
$.container,
|
||||||
$.connection
|
$.connection
|
||||||
|
@ -57,17 +44,14 @@ module.exports = grammar({
|
||||||
connection: ($) =>
|
connection: ($) =>
|
||||||
seq(
|
seq(
|
||||||
$._connection_path,
|
$._connection_path,
|
||||||
repeat1(seq($._arrow, $._connection_path)),
|
repeat1(seq($.arrow, $._connection_path)),
|
||||||
optional(seq($._colon, $.label))
|
optional(seq($._colon, $.label))
|
||||||
),
|
),
|
||||||
|
|
||||||
_connection_path: ($) =>
|
_connection_path: ($) =>
|
||||||
seq(
|
seq(
|
||||||
repeat(
|
repeat(
|
||||||
prec(
|
prec(PREC.CONNECTION, seq(alias($.shape_key, $.container_key), $.dot))
|
||||||
PREC.CONNECTION,
|
|
||||||
seq(alias($.shape_key, $.container_key), $._dot)
|
|
||||||
)
|
|
||||||
),
|
),
|
||||||
$.shape_key
|
$.shape_key
|
||||||
),
|
),
|
||||||
|
@ -80,24 +64,24 @@ module.exports = grammar({
|
||||||
seq(
|
seq(
|
||||||
alias($.shape_key, $.container_key),
|
alias($.shape_key, $.container_key),
|
||||||
choice(
|
choice(
|
||||||
seq($._dot, choice($.shape, $.container)),
|
seq($.dot, choice($.shape, $.container)),
|
||||||
seq(
|
seq(
|
||||||
seq(
|
seq(
|
||||||
optional(seq($._colon, optional($.label))),
|
optional(seq($._colon, optional($.label))),
|
||||||
optional(seq(alias($._new_container_block, $.block)))
|
optional(seq(alias($._container_block, $.block)))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
|
||||||
_new_container_block: ($) =>
|
_container_block: ($) =>
|
||||||
prec(
|
prec(
|
||||||
PREC.CONTAINER,
|
PREC.CONTAINER,
|
||||||
seq("{", repeat($._new_container_block_definition), "}")
|
seq("{", repeat($._container_block_definition), "}")
|
||||||
),
|
),
|
||||||
|
|
||||||
_new_container_block_definition: ($) =>
|
_container_block_definition: ($) =>
|
||||||
prec(
|
prec(
|
||||||
PREC.CONTAINER,
|
PREC.CONTAINER,
|
||||||
choice($._eol, seq(choice($.shape, $.container, $.connection), $._end))
|
choice($._eol, seq(choice($.shape, $.container, $.connection), $._end))
|
||||||
|
@ -112,10 +96,10 @@ module.exports = grammar({
|
||||||
$.shape_key,
|
$.shape_key,
|
||||||
optional(
|
optional(
|
||||||
choice(
|
choice(
|
||||||
seq($._dot, alias($._style_attribute, $.attribute)),
|
seq($.dot, alias($._style_attribute, $.attribute)),
|
||||||
seq(
|
seq(
|
||||||
optional(seq($._colon, optional($.label))),
|
optional(seq($._colon, optional($.label))),
|
||||||
optional(seq(alias($._new_shape_block, $.block)))
|
optional(seq(alias($._shape_block, $.block)))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -127,14 +111,14 @@ module.exports = grammar({
|
||||||
_identifier: ($) =>
|
_identifier: ($) =>
|
||||||
token(prec(PREC.IDENTIFIER, /\-?([\w\d]+|([\w\d]+( +|\-)[\w\d]+)+)/)),
|
token(prec(PREC.IDENTIFIER, /\-?([\w\d]+|([\w\d]+( +|\-)[\w\d]+)+)/)),
|
||||||
|
|
||||||
_new_shape_block: ($) =>
|
_shape_block: ($) =>
|
||||||
prec(PREC.SHAPE, seq("{", repeat($._new_shape_block_definition), "}")),
|
prec(PREC.SHAPE, seq("{", repeat($._shape_block_definition), "}")),
|
||||||
|
|
||||||
_new_shape_block_definition: ($) => prec(PREC.SHAPE, choice($._eol)),
|
_shape_block_definition: ($) => prec(PREC.SHAPE, choice($._eol)),
|
||||||
|
|
||||||
// attributes
|
// attributes
|
||||||
|
|
||||||
_new_root_attribute: ($) =>
|
_root_attribute: ($) =>
|
||||||
seq(alias($._root_attr_key, $.attr_key), $._colon, $.attr_value),
|
seq(alias($._root_attr_key, $.attr_key), $._colon, $.attr_value),
|
||||||
|
|
||||||
_root_attr_key: ($) =>
|
_root_attr_key: ($) =>
|
||||||
|
@ -176,7 +160,7 @@ module.exports = grammar({
|
||||||
seq(
|
seq(
|
||||||
alias("style", $.attr_key),
|
alias("style", $.attr_key),
|
||||||
choice(
|
choice(
|
||||||
seq($._dot, alias($._inner_style_attribute, $.attribute)),
|
seq($.dot, alias($._inner_style_attribute, $.attribute)),
|
||||||
seq($._colon, alias($._style_attribute_block, $.block))
|
seq($._colon, alias($._style_attribute_block, $.block))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -229,95 +213,12 @@ module.exports = grammar({
|
||||||
|
|
||||||
// --------------------------------------------
|
// --------------------------------------------
|
||||||
|
|
||||||
// source_file: ($) => repeat($._root_definition),
|
|
||||||
/*
|
|
||||||
|
|
||||||
_root_definition: ($) =>
|
|
||||||
choice(
|
|
||||||
$._emptyline,
|
|
||||||
$._root_attribute,
|
|
||||||
$.connection,
|
|
||||||
$._shape_definition
|
|
||||||
),
|
|
||||||
|
|
||||||
_shape_definition: ($) =>
|
|
||||||
seq(
|
|
||||||
$._shape_path,
|
|
||||||
optional(
|
|
||||||
choice(
|
|
||||||
seq($.dot, $._shape_attribute),
|
|
||||||
seq(
|
|
||||||
optional(seq($._colon, optional(seq(spaces, $.label)))),
|
|
||||||
optional(alias($._shape_block, $.block))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
$._end
|
|
||||||
),
|
|
||||||
|
|
||||||
_shape_path: ($) =>
|
|
||||||
seq(
|
|
||||||
spaces,
|
|
||||||
repeat(seq(alias($.shape_key, $.container_key), spaces, $.dot, spaces)),
|
|
||||||
$.shape_key
|
|
||||||
),
|
|
||||||
|
|
||||||
|
|
||||||
_shape_block: ($) =>
|
|
||||||
seq(
|
|
||||||
spaces,
|
|
||||||
"{",
|
|
||||||
repeat(choice($._emptyline, seq(spaces, $._shape_block_definition))),
|
|
||||||
optional(seq($._shape_block_definition, optional($._end))),
|
|
||||||
spaces,
|
|
||||||
"}"
|
|
||||||
),
|
|
||||||
|
|
||||||
_shape_block_definition: ($) =>
|
|
||||||
choice($.connection, $._shape_definition, $._shape_attribute),
|
|
||||||
|
|
||||||
_shape_attribute: ($) =>
|
|
||||||
choice(
|
|
||||||
seq(alias($._shape_attr_key, $.attr_key), $._colon, $.attr_value),
|
|
||||||
$._style_attribute
|
|
||||||
),
|
|
||||||
|
|
||||||
_style_attribute: ($) =>
|
|
||||||
seq(
|
|
||||||
alias("style", $.attr_key),
|
|
||||||
choice(
|
|
||||||
seq($.dot, $._inner_style_attribute),
|
|
||||||
seq($._colon, alias($._style_attr_block, $.block))
|
|
||||||
)
|
|
||||||
),
|
|
||||||
|
|
||||||
_style_attr_block: ($) =>
|
|
||||||
seq(
|
|
||||||
spaces,
|
|
||||||
"{",
|
|
||||||
spaces,
|
|
||||||
repeat(choice($._emptyline, seq($._inner_style_attribute, $._end))),
|
|
||||||
optional(seq($._inner_style_attribute, optional($._end))),
|
|
||||||
spaces,
|
|
||||||
"}"
|
|
||||||
),
|
|
||||||
|
|
||||||
_inner_style_attribute: ($) =>
|
|
||||||
seq(spaces, alias($._style_attr_key, $.attr_key), $._colon, $.attr_value),
|
|
||||||
|
|
||||||
_connection_attribute: ($) =>
|
|
||||||
seq(alias($._connection_attr_key, $.attr_key), $._colon, $.attr_value),
|
|
||||||
*/
|
|
||||||
|
|
||||||
_dash: ($) => token.immediate("-"),
|
_dash: ($) => token.immediate("-"),
|
||||||
|
|
||||||
_colon: ($) => seq(":"),
|
_colon: ($) => seq(":"),
|
||||||
|
|
||||||
_arrow: ($) => seq($.arrow),
|
|
||||||
|
|
||||||
arrow: ($) => token(prec(PREC.ARROW, choice(/-+>/, /--+/, /<-+/, /<-+>/))),
|
arrow: ($) => token(prec(PREC.ARROW, choice(/-+>/, /--+/, /<-+/, /<-+>/))),
|
||||||
|
|
||||||
_dot: ($) => seq($.dot),
|
|
||||||
dot: ($) => token("."),
|
dot: ($) => token("."),
|
||||||
|
|
||||||
_unquoted_string: ($) =>
|
_unquoted_string: ($) =>
|
||||||
|
@ -332,9 +233,6 @@ module.exports = grammar({
|
||||||
|
|
||||||
line_comment: ($) => token(prec(PREC.COMMENT, seq("#", /.*/))),
|
line_comment: ($) => token(prec(PREC.COMMENT, seq("#", /.*/))),
|
||||||
|
|
||||||
_word: ($) => /[\w\d]+/,
|
|
||||||
|
|
||||||
_emptyline: ($) => prec(-1, seq(spaces, $._eol)),
|
|
||||||
_eol: ($) => choice("\n", "\0"),
|
_eol: ($) => choice("\n", "\0"),
|
||||||
_end: ($) => seq(choice(";", $._eol)),
|
_end: ($) => seq(choice(";", $._eol)),
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,8 +1,3 @@
|
||||||
; Special (treesitter don't overwrite)
|
|
||||||
;-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(ERROR) @error
|
|
||||||
; (invalid (_) @error)
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
|
||||||
(container_key) @constant
|
(container_key) @constant
|
||||||
|
@ -15,7 +10,7 @@
|
||||||
(container_key (string) @string.special)
|
(container_key (string) @string.special)
|
||||||
(shape_key (string) @string)
|
(shape_key (string) @string)
|
||||||
(label) @string
|
(label) @string
|
||||||
; (attr_value) @string
|
(attr_value) @string
|
||||||
|
|
||||||
; Comments
|
; Comments
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
@ -42,4 +37,3 @@
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
|
||||||
(ERROR) @error
|
(ERROR) @error
|
||||||
; (invalid (_) @error)
|
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
"type": "REPEAT",
|
"type": "REPEAT",
|
||||||
"content": {
|
"content": {
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "_new_root_definition"
|
"name": "_root_definition"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"_new_root_definition": {
|
"_root_definition": {
|
||||||
"type": "CHOICE",
|
"type": "CHOICE",
|
||||||
"members": [
|
"members": [
|
||||||
{
|
{
|
||||||
|
@ -26,7 +26,7 @@
|
||||||
"type": "ALIAS",
|
"type": "ALIAS",
|
||||||
"content": {
|
"content": {
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "_new_root_attribute"
|
"name": "_root_attribute"
|
||||||
},
|
},
|
||||||
"named": true,
|
"named": true,
|
||||||
"value": "attribute"
|
"value": "attribute"
|
||||||
|
@ -67,7 +67,7 @@
|
||||||
"members": [
|
"members": [
|
||||||
{
|
{
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "_arrow"
|
"name": "arrow"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
|
@ -121,7 +121,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "_dot"
|
"name": "dot"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -156,7 +156,7 @@
|
||||||
"members": [
|
"members": [
|
||||||
{
|
{
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "_dot"
|
"name": "dot"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "CHOICE",
|
"type": "CHOICE",
|
||||||
|
@ -218,7 +218,7 @@
|
||||||
"type": "ALIAS",
|
"type": "ALIAS",
|
||||||
"content": {
|
"content": {
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "_new_container_block"
|
"name": "_container_block"
|
||||||
},
|
},
|
||||||
"named": true,
|
"named": true,
|
||||||
"value": "block"
|
"value": "block"
|
||||||
|
@ -239,7 +239,7 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"_new_container_block": {
|
"_container_block": {
|
||||||
"type": "PREC",
|
"type": "PREC",
|
||||||
"value": 2,
|
"value": 2,
|
||||||
"content": {
|
"content": {
|
||||||
|
@ -253,7 +253,7 @@
|
||||||
"type": "REPEAT",
|
"type": "REPEAT",
|
||||||
"content": {
|
"content": {
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "_new_container_block_definition"
|
"name": "_container_block_definition"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -263,7 +263,7 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"_new_container_block_definition": {
|
"_container_block_definition": {
|
||||||
"type": "PREC",
|
"type": "PREC",
|
||||||
"value": 2,
|
"value": 2,
|
||||||
"content": {
|
"content": {
|
||||||
|
@ -323,7 +323,7 @@
|
||||||
"members": [
|
"members": [
|
||||||
{
|
{
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "_dot"
|
"name": "dot"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "ALIAS",
|
"type": "ALIAS",
|
||||||
|
@ -378,7 +378,7 @@
|
||||||
"type": "ALIAS",
|
"type": "ALIAS",
|
||||||
"content": {
|
"content": {
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "_new_shape_block"
|
"name": "_shape_block"
|
||||||
},
|
},
|
||||||
"named": true,
|
"named": true,
|
||||||
"value": "block"
|
"value": "block"
|
||||||
|
@ -443,7 +443,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"_new_shape_block": {
|
"_shape_block": {
|
||||||
"type": "PREC",
|
"type": "PREC",
|
||||||
"value": 3,
|
"value": 3,
|
||||||
"content": {
|
"content": {
|
||||||
|
@ -457,7 +457,7 @@
|
||||||
"type": "REPEAT",
|
"type": "REPEAT",
|
||||||
"content": {
|
"content": {
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "_new_shape_block_definition"
|
"name": "_shape_block_definition"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -467,7 +467,7 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"_new_shape_block_definition": {
|
"_shape_block_definition": {
|
||||||
"type": "PREC",
|
"type": "PREC",
|
||||||
"value": 3,
|
"value": 3,
|
||||||
"content": {
|
"content": {
|
||||||
|
@ -480,7 +480,7 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"_new_root_attribute": {
|
"_root_attribute": {
|
||||||
"type": "SEQ",
|
"type": "SEQ",
|
||||||
"members": [
|
"members": [
|
||||||
{
|
{
|
||||||
|
@ -605,7 +605,7 @@
|
||||||
"members": [
|
"members": [
|
||||||
{
|
{
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "_dot"
|
"name": "dot"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "ALIAS",
|
"type": "ALIAS",
|
||||||
|
@ -836,15 +836,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_arrow": {
|
|
||||||
"type": "SEQ",
|
|
||||||
"members": [
|
|
||||||
{
|
|
||||||
"type": "SYMBOL",
|
|
||||||
"name": "arrow"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"arrow": {
|
"arrow": {
|
||||||
"type": "TOKEN",
|
"type": "TOKEN",
|
||||||
"content": {
|
"content": {
|
||||||
|
@ -873,15 +864,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"_dot": {
|
|
||||||
"type": "SEQ",
|
|
||||||
"members": [
|
|
||||||
{
|
|
||||||
"type": "SYMBOL",
|
|
||||||
"name": "dot"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"dot": {
|
"dot": {
|
||||||
"type": "TOKEN",
|
"type": "TOKEN",
|
||||||
"content": {
|
"content": {
|
||||||
|
@ -994,27 +976,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"_word": {
|
|
||||||
"type": "PATTERN",
|
|
||||||
"value": "[\\w\\d]+"
|
|
||||||
},
|
|
||||||
"_emptyline": {
|
|
||||||
"type": "PREC",
|
|
||||||
"value": -1,
|
|
||||||
"content": {
|
|
||||||
"type": "SEQ",
|
|
||||||
"members": [
|
|
||||||
{
|
|
||||||
"type": "PATTERN",
|
|
||||||
"value": "[ \\t]"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "SYMBOL",
|
|
||||||
"name": "_eol"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"_eol": {
|
"_eol": {
|
||||||
"type": "CHOICE",
|
"type": "CHOICE",
|
||||||
"members": [
|
"members": [
|
||||||
|
|
BIN
src/parser.c
BIN
src/parser.c
Binary file not shown.
|
@ -1,110 +0,0 @@
|
||||||
================================================================================
|
|
||||||
Root attribute
|
|
||||||
================================================================================
|
|
||||||
direction: value
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(attr_key) (attr_value)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Block shape attribute
|
|
||||||
================================================================================
|
|
||||||
foo: {
|
|
||||||
shape: oval
|
|
||||||
|
|
||||||
foo.bar.baz: {
|
|
||||||
shape: oval
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key)
|
|
||||||
(block
|
|
||||||
(attr_key) (attr_value)
|
|
||||||
(container_key) (dot) (container_key) (dot) (shape_key)
|
|
||||||
(block
|
|
||||||
(attr_key) (attr_value)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Inline shape attribute
|
|
||||||
================================================================================
|
|
||||||
foo.shape: oval
|
|
||||||
foo.bar.baz.shape: oval
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key) (dot) (attr_key) (attr_value)
|
|
||||||
(container_key) (dot) (container_key) (dot) (shape_key) (dot) (attr_key) (attr_value)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Inline style attribute
|
|
||||||
================================================================================
|
|
||||||
foo.style.opacity: 5
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key) (dot) (attr_key) (dot) (attr_key) (attr_value)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Block style attributes
|
|
||||||
================================================================================
|
|
||||||
foo.style: {
|
|
||||||
opacity: 5
|
|
||||||
|
|
||||||
fill: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key) (dot) (attr_key)
|
|
||||||
(block
|
|
||||||
(attr_key) (attr_value)
|
|
||||||
(attr_key) (attr_value)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Inline block style attributes
|
|
||||||
================================================================================
|
|
||||||
foo.style: { opacity: 5; fill: red; }
|
|
||||||
foo.style: { opacity: 5 }
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key) (dot) (attr_key)
|
|
||||||
(block
|
|
||||||
(attr_key) (attr_value)
|
|
||||||
(attr_key) (attr_value)
|
|
||||||
)
|
|
||||||
(shape_key) (dot) (attr_key)
|
|
||||||
(block
|
|
||||||
(attr_key) (attr_value)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Color in string
|
|
||||||
================================================================================
|
|
||||||
foo.style.fill: "#ffffff";
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key) (dot) (attr_key) (dot) (attr_key) (attr_value (string))
|
|
||||||
)
|
|
||||||
|
|
|
@ -1,198 +0,0 @@
|
||||||
================================================================================
|
|
||||||
Simple connection
|
|
||||||
================================================================================
|
|
||||||
foo--bar
|
|
||||||
biz->baz
|
|
||||||
biz<->baz
|
|
||||||
biz<-baz
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Formatted connection
|
|
||||||
================================================================================
|
|
||||||
foo -- bar
|
|
||||||
biz -> baz
|
|
||||||
biz <-> baz
|
|
||||||
biz <- baz
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Connection with looooong arrow
|
|
||||||
================================================================================
|
|
||||||
foo ----------- bar
|
|
||||||
biz ----------> baz
|
|
||||||
biz <---------> baz
|
|
||||||
biz <---------- baz
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Complex identifier connection
|
|
||||||
================================================================================
|
|
||||||
Foo Bar -- Biz Baz
|
|
||||||
-Bar-Foo- <- -Baz-Biz-
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Inline connection
|
|
||||||
================================================================================
|
|
||||||
foo--bar->biz->baz
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Many connections inline
|
|
||||||
================================================================================
|
|
||||||
foo--bar;biz->baz
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Labeled connections
|
|
||||||
================================================================================
|
|
||||||
foo--bar: Question?
|
|
||||||
bar -> baz: Yes
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
(label)
|
|
||||||
)
|
|
||||||
(connection
|
|
||||||
(shape_key)
|
|
||||||
(arrow)
|
|
||||||
(shape_key)
|
|
||||||
(label)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Connection of shapes inside a containers
|
|
||||||
================================================================================
|
|
||||||
foo.biz.baz -> bar.baz.biz: Label
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(connection
|
|
||||||
(container_key) (dot) (container_key) (dot) (shape_key)
|
|
||||||
(arrow)
|
|
||||||
(container_key) (dot) (container_key) (dot) (shape_key)
|
|
||||||
(label)
|
|
||||||
)
|
|
||||||
)
|
|
|
@ -1,97 +0,0 @@
|
||||||
================================================================================
|
|
||||||
Declare a shape inside a container
|
|
||||||
================================================================================
|
|
||||||
foo.baz
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(container_key) (dot) (shape_key)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Use quoted string as a shape key
|
|
||||||
================================================================================
|
|
||||||
'foo'.'baz'
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(container_key (string)) (dot) (shape_key (string))
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Declare container inside a container using block
|
|
||||||
================================================================================
|
|
||||||
|
|
||||||
foo: {
|
|
||||||
bar: {
|
|
||||||
baz: {
|
|
||||||
biz
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key)
|
|
||||||
(block
|
|
||||||
(shape_key)
|
|
||||||
(block
|
|
||||||
(shape_key)
|
|
||||||
(block
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Declare labaled container inside a labeled container using block
|
|
||||||
================================================================================
|
|
||||||
|
|
||||||
foo: Foo {
|
|
||||||
bar: Bar {
|
|
||||||
baz: Baz {
|
|
||||||
biz: Biz
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key) (label)
|
|
||||||
(block
|
|
||||||
(shape_key) (label)
|
|
||||||
(block
|
|
||||||
(shape_key) (label)
|
|
||||||
(block
|
|
||||||
(shape_key) (label)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Declare many shapes inside a container
|
|
||||||
================================================================================
|
|
||||||
|
|
||||||
foo: {
|
|
||||||
bar
|
|
||||||
biz
|
|
||||||
baz
|
|
||||||
}
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key)
|
|
||||||
(block
|
|
||||||
(shape_key)
|
|
||||||
(shape_key)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
|
@ -1,134 +0,0 @@
|
||||||
================================================================================
|
|
||||||
Simple shape key
|
|
||||||
================================================================================
|
|
||||||
foo
|
|
||||||
bar
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Complex shape key
|
|
||||||
================================================================================
|
|
||||||
Foo bar
|
|
||||||
-Biz-baz-
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Use quoted string as a shape key
|
|
||||||
================================================================================
|
|
||||||
'foo'
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key (string))
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Define multiple shapes using semicolons
|
|
||||||
================================================================================
|
|
||||||
a;b;c
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key)
|
|
||||||
(shape_key)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Labeled shapes
|
|
||||||
================================================================================
|
|
||||||
a: Foo Bar
|
|
||||||
a: Foo Bar; b: Biz Baz
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key) (label)
|
|
||||||
(shape_key) (label)
|
|
||||||
(shape_key) (label)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
It should skip white spaces
|
|
||||||
================================================================================
|
|
||||||
|
|
||||||
foo
|
|
||||||
|
|
||||||
bar : Foo Bar; baz
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key)
|
|
||||||
(shape_key) (label)
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Shape block
|
|
||||||
================================================================================
|
|
||||||
|
|
||||||
foo: {
|
|
||||||
bar: {
|
|
||||||
baz: {
|
|
||||||
biz
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key)
|
|
||||||
(block
|
|
||||||
(shape_key)
|
|
||||||
(block
|
|
||||||
(shape_key)
|
|
||||||
(block
|
|
||||||
(shape_key)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
================================================================================
|
|
||||||
Aliased shape block
|
|
||||||
================================================================================
|
|
||||||
|
|
||||||
foo: Foo {
|
|
||||||
bar: Bar {
|
|
||||||
baz: Baz {
|
|
||||||
biz: Biz
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
(source_file
|
|
||||||
(shape_key) (label)
|
|
||||||
(block
|
|
||||||
(shape_key) (label)
|
|
||||||
(block
|
|
||||||
(shape_key) (label)
|
|
||||||
(block
|
|
||||||
(shape_key) (label)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
Loading…
Reference in a new issue