From 76aad9cd8ab4d05a9b875136d26ecb6ffb615dd4 Mon Sep 17 00:00:00 2001 From: Araozu Date: Thu, 25 Jul 2024 08:49:24 -0500 Subject: [PATCH] Add syntax highlighting to spec pages --- src/layouts/SpecLayout.astro | 2 +- src/pages/spec/{index.md => index.mdx} | 47 ++++++++++--------- .../spec/tokens/{comments.md => comments.mdx} | 5 +- .../tokens/{identifier.md => identifier.mdx} | 13 ++--- .../spec/tokens/{numbers.md => numbers.mdx} | 9 ++-- .../spec/tokens/{operator.md => operator.mdx} | 5 +- .../spec/tokens/{string.md => string.mdx} | 7 +-- 7 files changed, 47 insertions(+), 41 deletions(-) rename src/pages/spec/{index.md => index.mdx} (91%) rename src/pages/spec/tokens/{comments.md => comments.mdx} (70%) rename src/pages/spec/tokens/{identifier.md => identifier.mdx} (87%) rename src/pages/spec/tokens/{numbers.md => numbers.mdx} (89%) rename src/pages/spec/tokens/{operator.md => operator.mdx} (89%) rename src/pages/spec/tokens/{string.md => string.mdx} (83%) diff --git a/src/layouts/SpecLayout.astro b/src/layouts/SpecLayout.astro index e8cfb28..d23e49f 100644 --- a/src/layouts/SpecLayout.astro +++ b/src/layouts/SpecLayout.astro @@ -4,7 +4,7 @@ import PagesLayout from "./PagesLayout.astro"; const { frontmatter, headings } = Astro.props; const posts = await Astro.glob("../pages/spec/**/*.{md,mdx}"); -const indexSubpath = `/spec/index.md`; +const indexSubpath = `/spec/index.mdx`; --- The previous code would emit the following tokens: `1` `+` `2` `NewLine` `Indent` `+` `3` `NewLine` `+` `4` `Dedent` @@ -114,12 +115,12 @@ Additionaly, it is a lexical error to have wrong indentation. The lexer stores a previous indentation levels in a stack, and reports an error if a decrease in indentation doesn't match a previous level. -```thp + All productions of the grammar ignore whitespace/indentation, except those involved in semicolon inference. @@ -134,26 +135,26 @@ Statements in THP end when a new line is encountered: -```thp + -```thp + This is true even if the line ends with an operator: -```thp + ### Parenthesis @@ -161,16 +162,16 @@ var a = 1 + 2 + // This is now a compile error, there is a hanging `+` Exception 1: When a parenthesis is open, all following whitespace is ignored until the closing parenthesis. -```thp + However, for a parenthesis to begin to act, it needs to be open on the same line. -```thp + ### Indented binary operator @@ -189,22 +190,22 @@ Exception 2: - When a binary operator is followed by indentation: -```thp + - Or when indentation is followed by a binary operator: -```thp + In theses cases, all whitespace will be ignored until the indentation returns to the initial level. -```thp + diff --git a/src/pages/spec/tokens/comments.md b/src/pages/spec/tokens/comments.mdx similarity index 70% rename from src/pages/spec/tokens/comments.md rename to src/pages/spec/tokens/comments.mdx index 56fc41c..48bebae 100644 --- a/src/pages/spec/tokens/comments.md +++ b/src/pages/spec/tokens/comments.mdx @@ -2,6 +2,7 @@ layout: ../../../layouts/SpecLayout.astro title: Comment --- +import Code from "../../../components/Code.astro" # Comment @@ -9,8 +10,8 @@ title: Comment Comment = "//", any_except_new_line ``` -```thp + diff --git a/src/pages/spec/tokens/identifier.md b/src/pages/spec/tokens/identifier.mdx similarity index 87% rename from src/pages/spec/tokens/identifier.md rename to src/pages/spec/tokens/identifier.mdx index 0788dc3..9ed7c1a 100644 --- a/src/pages/spec/tokens/identifier.md +++ b/src/pages/spec/tokens/identifier.mdx @@ -2,6 +2,7 @@ layout: ../../../layouts/SpecLayout.astro title: Identifiers & Datatypes --- +import Code from "../../../components/Code.astro" # Identifiers & Datatypes @@ -18,13 +19,13 @@ Identifier = (underscore | lowercase_letter), identifier_letter* identifier_letter = underscore | lowercase_letter | uppercase_letter | decimal_digit ``` -```thp + ## Datatype @@ -33,20 +34,20 @@ camelCase Datatype = uppercase_letter, indentifier_letter* ``` -```thp + ## Keywords The following are (currently) THP keywords: -```thp + Keywords are scanned first as identifiers, then transformed to their respective tokens. diff --git a/src/pages/spec/tokens/numbers.md b/src/pages/spec/tokens/numbers.mdx similarity index 89% rename from src/pages/spec/tokens/numbers.md rename to src/pages/spec/tokens/numbers.mdx index a10df0a..6b20cb9 100644 --- a/src/pages/spec/tokens/numbers.md +++ b/src/pages/spec/tokens/numbers.mdx @@ -2,6 +2,7 @@ layout: ../../../layouts/SpecLayout.astro title: Numbers --- +import Code from "../../../components/Code.astro" # Numbers @@ -15,12 +16,12 @@ hexadecimal_number = "0", ("x" | "X"), hexadecimal_digit+ decimal_number = decimal_digit+ ``` -```thp + `TODO`: Implement octal `0o777` and binary `0b0110`. @@ -36,14 +37,14 @@ Float = decimal_number, ".", decimal_number+, scientific_notation? scientific_notation = "e", ("+" | "-"), decimal_number ``` -```thp + All floating point numbers must start with at least 1 digit. diff --git a/src/pages/spec/tokens/operator.md b/src/pages/spec/tokens/operator.mdx similarity index 89% rename from src/pages/spec/tokens/operator.md rename to src/pages/spec/tokens/operator.mdx index becfa6b..e4a8d25 100644 --- a/src/pages/spec/tokens/operator.md +++ b/src/pages/spec/tokens/operator.mdx @@ -2,6 +2,7 @@ layout: ../../../layouts/SpecLayout.astro title: Operator --- +import Code from "../../../components/Code.astro" # Operator @@ -14,9 +15,9 @@ operator_char = "+" | "-" | "=" | "*" | "!" | "/" | "|" | "<" | ">" | "^" | "." | ":" ``` -```thp + <= >= -> => -``` +`} /> These are all the characters that can make an operator. diff --git a/src/pages/spec/tokens/string.md b/src/pages/spec/tokens/string.mdx similarity index 83% rename from src/pages/spec/tokens/string.md rename to src/pages/spec/tokens/string.mdx index e44bd10..00c661c 100644 --- a/src/pages/spec/tokens/string.md +++ b/src/pages/spec/tokens/string.mdx @@ -2,6 +2,7 @@ layout: ../../../layouts/SpecLayout.astro title: String --- +import Code from "../../../components/Code.astro" # String @@ -19,11 +20,11 @@ escape_seq = "\n" string_char = any_unicode_except_newline_and_double_quote ``` -```thp + `TODO`: String interpolation