From 440d2fac77f2293bd40bb4b3f330eb7e86b7b7bf Mon Sep 17 00:00:00 2001 From: Syndamia Date: Tue, 18 Apr 2023 17:08:18 +0300 Subject: [Syntax-highlighting] Created a (common) C syntax highlighting, added yacc and lex highlighting --- awk-edits/Syntax-highlighting.awk | 98 ++++++++++++++++++++++++++------------- 1 file changed, 67 insertions(+), 31 deletions(-) (limited to 'awk-edits/Syntax-highlighting.awk') diff --git a/awk-edits/Syntax-highlighting.awk b/awk-edits/Syntax-highlighting.awk index 6948212..e3a9be2 100644 --- a/awk-edits/Syntax-highlighting.awk +++ b/awk-edits/Syntax-highlighting.awk @@ -80,33 +80,13 @@ syntaxhighlighting == 2 { gsub(/[\(\)\|]/, "&"); } -# -# -- C# -- -# -# Supports "csharp" - -/class="language-csharp"/ { - syntaxhighlighting = 3; -} - -syntaxhighlighting == 3 { - gsub(/new ([[:alnum:]]|[-_])+[\(\.]/, "&"); - gsub(/([[:alnum:]]|[-_])+(<[[:alnum:]]+>)?\(/, "&"); - gsub(/(int|void|double)/, "&"); - gsub(/(public|protected|private|override|new|<[[:alnum:]]+>)/, "&"); - gsub(/([[:blank:]]|\()*([[:upper:]]|[-_])+([[:blank:]]|\)|,|;)+/, "&"); - gsub(///.*/, "&"); - gsub(/(=>)/, "&"); - gsub(/[\(,\.]/, "&"); -} - # # -- Bash # # Supports "bash" /class="language-bash"/ { - syntaxhighlighting = 4; + syntaxhighlighting = 3; # The first code block line could look something like #
class="langage-bash"
 	# So, if we want to do something with the word class or strings,
@@ -116,7 +96,7 @@ syntaxhighlighting == 3 {
 	$0 = substr($0, tagend + 1);
 }
 
-syntaxhighlighting == 4 {
+syntaxhighlighting == 3 {
 	gsub(/("[^"]*"|'[^']*')/, "&");
 	gsub(/\$(\(|\(\(|{).+(\)|\)\)|})/, "&");
 	gsub(/\$[^[:blank:]]+/, "&");
@@ -129,24 +109,80 @@ syntaxhighlighting == 4 {
 	gsub(/(\|)/, "&");
 }
 
+#
+# -- C --
+#
+# Supports "c" and is used in C-like programming languages
+
+/class="language-c"/ {
+	syntaxhighlighting = 100;
+}
+
+syntaxhighlighting >= 100 {
+	gsub(/([[:alnum:]]|[-_])+(<[[:alnum:]]+>)?\(/, "&");
+	gsub(/(//.*|/*.*/)/, "&");
+	gsub(/[\(,\.]/, "&");
+	gsub(/(public|protected|private|override|new|if|else|while|for|return|struct|typedef|extern|const)[[:blank:]]/, "&");
+	gsub(/(&&|\|\||==|!=)/, "&");
+	gsub(/#(include|if|ifndef|endif|define)/, "&");
+	gsub(/(true|false)[[:blank:]]/, "&");
+	gsub(/(int|void|double|bool|char)[[:blank:]]/, "&");
+	$0 = gesub("(\"[^\"]*\"|'[^']*')", "<[^>]*>", "&");
+}
+
 #
 # -- C++ --
 #
 # Supports "cpp"
 
 /class="language-cpp"/ {
-	syntaxhighlighting = 5;
+	syntaxhighlighting = 101;
 }
 
-syntaxhighlighting == 5 {
-	gsub(/([[:alnum:]]|[-_])+(<[[:alnum:]]+>)?\(/, "&");
-	gsub(/(int|void|double|bool)/, "&");
-	gsub(/(public|protected|private|override|new|if|else|while|for|return)/, "&");
-	gsub(/(&&|\|\||==|!=)/, "&");
+syntaxhighlighting == 101 {
 	gsub(/([[:blank:]]|\()*[[:upper:]]([[:upper:]]|[-_])*([[:blank:]]|\)|,|;)+/, "&");
-	gsub(/(true|false)/, "&");
-	gsub(///.*/, "&");
-	gsub(/[\(,\.]/, "&");
+}
+
+#
+# -- C# --
+#
+# Supports "csharp"
+
+/class="language-csharp"/ {
+	syntaxhighlighting = 102;
+}
+
+syntaxhighlighting == 102 {
+	gsub(/new ([[:alnum:]]|[-_])+[\(\.]/, "&");
+	gsub(/(<[[:alnum:]]+>)/, "&");
+	gsub(/([[:blank:]]|\()*([[:upper:]]|[-_])+([[:blank:]]|\)|,|;)+/, "&");
+	gsub(/(=>)/, "&");
+}
+
+#
+# -- lex --
+#
+# Supports "lex"
+
+/class="language-lex"/ {
+	syntaxhighlighting = 103;
+}
+
+syntaxhighlighting == 103 {
+	gsub(/%[^[:blank:]]+/, "&");
+}
+
+#
+# -- yacc --
+#
+# Supports "yacc"
+
+/class="language-yacc"/ {
+	syntaxhighlighting = 104;
+}
+
+syntaxhighlighting == 104 {
+	gsub(/%[^[:blank:]]+/, "&");
 }
 
 tagend != 0 {
-- 
cgit v1.3.1-23-gd82d