========================= Complete Document Example ========================= html lang="en" { head { meta charset="UTF-8" {} meta name="viewport" content="width=device-width, initial-scale=1.0" {} link href="/favicon.svg" rel="shortcut icon" type="image/svg" {} link href="/style.svg" rel="stylesheet" {} title {-My Website Title} } body { p #my-id {= This is a paragraph with the id ‘my-id’ } p .my-cls {= This is a paragraph with the class ‘my-cls’ } / div { p {- This entire div is commented out. } p {- Isn’t that neat? } } p #some-id .class-1 .class-2 key-1="value-1" key-2 = "value-2" {- This paragraph has an ID, two classes, and two additional attributes. GSP allows us to use the ‘#ident’ and ‘.ident’ syntaxes as shorthands for applying IDs, and classes. This is a text node, so nothing is being interpreted as GSP nodes, but we can include them inline if we want. As an example, here is some @em {-emphatic} text. Your inline nodes can also have attributes @em #id {-just like a regular node}. } } } --- (document (node name: (ident) attrs: (attr_list (attr name: (ident) value: (string))) body: (node_body (node name: (ident) body: (node_body (node name: (ident) attrs: (attr_list (attr name: (ident) value: (string))) body: (node_body)) (node name: (ident) attrs: (attr_list (attr name: (ident) value: (string)) (attr name: (ident) value: (string))) body: (node_body)) (node name: (ident) attrs: (attr_list (attr name: (ident) value: (string)) (attr name: (ident) value: (string)) (attr name: (ident) value: (string))) body: (node_body)) (node name: (ident) attrs: (attr_list (attr name: (ident) value: (string)) (attr name: (ident) value: (string))) body: (node_body)) (node name: (ident) body: (node_body (text))))) (node name: (ident) body: (node_body (node name: (ident) attrs: (attr_list (id_attr (ident))) body: (node_body (text))) (node name: (ident) attrs: (attr_list (class_attr (ident))) body: (node_body (text))) (comment name: (ident) body: (node_body (node name: (ident) body: (node_body (text))) (node name: (ident) body: (node_body (text))))) (node name: (ident) attrs: (attr_list (id_attr (ident)) (class_attr (ident)) (class_attr (ident)) (attr name: (ident) value: (string)) (attr name: (ident) value: (string))) body: (node_body (text (node name: (ident) body: (node_body (text))) (node name: (ident) attrs: (attr_list (id_attr (ident))) body: (node_body (text)))))))))))