summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--bin/c11.l6
-rw-r--r--bin/hilex.c44
-rw-r--r--bin/hilex.h8
-rw-r--r--bin/html.sh12
-rw-r--r--bin/make.l18
-rw-r--r--bin/man1/hilex.142
6 files changed, 70 insertions, 60 deletions
diff --git a/bin/c11.l b/bin/c11.l
index 98ff03c8..c03ce3e5 100644
--- a/bin/c11.l
+++ b/bin/c11.l
@@ -76,7 +76,7 @@ register|restrict|return|static|struct|switch|typedef|union|volatile|while |
 	{ident} { return Macro; }
 }
 
-{ident} { return Identifier; }
+{ident} { return Ident; }
 
 "//"([^\n]|"\\\n")* |
 "/*"([^*]|"*"[^/])*"*"+"/" {
@@ -106,13 +106,13 @@ register|restrict|return|static|struct|switch|typedef|union|volatile|while |
 	"\\x"([[:xdigit:]]{2}) |
 	"\\u"([[:xdigit:]]{4}) |
 	"\\U"([[:xdigit:]]{8}) {
-		return StringEscape;
+		return Escape;
 	}
 }
 <StringLiteral>{
 	"%%" |
 	"%"[ #+-0]*{width}?("."{width})?([Lhjltz]|hh|ll)?[AEFGXacdefginopsux] {
-		return StringFormat;
+		return Format;
 	}
 }
 
diff --git a/bin/hilex.c b/bin/hilex.c
index 39025961..58a2ad30 100644
--- a/bin/hilex.c
+++ b/bin/hilex.c
@@ -92,15 +92,15 @@ enum Option {
 };
 
 typedef void Header(const char *opts[]);
-typedef void Format(const char *opts[], enum Class class, const char *text);
+typedef void Output(const char *opts[], enum Class class, const char *text);
 
 static const char *SGR[ClassCap] = {
-	[Keyword]       = "37",
-	[Macro]         = "32",
-	[Comment]       = "34",
-	[String]        = "36",
-	[StringFormat]  = "36;1;96",
-	[Interpolation] = "33",
+	[Keyword] = "37",
+	[Macro]   = "32",
+	[Comment] = "34",
+	[String]  = "36",
+	[Format]  = "36;1;96",
+	[Subst]   = "33",
 };
 
 static void ansiFormat(const char *opts[], enum Class class, const char *text) {
@@ -128,12 +128,12 @@ debugFormat(const char *opts[], enum Class class, const char *text) {
 }
 
 static const char *IRC[ClassCap] = {
-	[Keyword]       = "\00315",
-	[Macro]         = "\0033",
-	[Comment]       = "\0032",
-	[String]        = "\00310",
-	[StringFormat]  = "\00311",
-	[Interpolation] = "\0037",
+	[Keyword] = "\00315",
+	[Macro]   = "\0033",
+	[Comment] = "\0032",
+	[String]  = "\00310",
+	[Format]  = "\00311",
+	[Subst]   = "\0037",
 };
 
 static void ircHeader(const char *opts[]) {
@@ -174,12 +174,12 @@ static void htmlEscape(const char *text) {
 }
 
 static const char *Styles[ClassCap] = {
-	[Keyword]       = "color: dimgray;",
-	[Macro]         = "color: green;",
-	[Comment]       = "color: navy;",
-	[String]        = "color: teal;",
-	[StringFormat]  = "color: teal; font-weight: bold;",
-	[Interpolation] = "color: olive;",
+	[Keyword] = "color: dimgray;",
+	[Macro]   = "color: green;",
+	[Comment] = "color: navy;",
+	[String]  = "color: teal;",
+	[Format]  = "color: teal; font-weight: bold;",
+	[Subst]   = "color: olive;",
 };
 
 static void styleTabSize(const char *tab) {
@@ -210,7 +210,7 @@ static void htmlHeader(const char *opts[]) {
 		}
 		for (enum Class class = 0; class < ClassCap; ++class) {
 			if (!Styles[class]) continue;
-			printf(".hilex.%s { %s }\n", Class[class], Styles[class]);
+			printf("pre.hilex .%.2s { %s }\n", Class[class], Styles[class]);
 		}
 		printf("</style>\n");
 	}
@@ -235,7 +235,7 @@ static void htmlFormat(const char *opts[], enum Class class, const char *text) {
 		if (opts[Inline]) {
 			printf("<span style=\"%s\">", Styles[class] ? Styles[class] : "");
 		} else {
-			printf("<span class=\"hilex %s\">", Class[class]);
+			printf("<span class=\"%.2s\">", Class[class]);
 		}
 		htmlEscape(text);
 		printf("</span>");
@@ -247,7 +247,7 @@ static void htmlFormat(const char *opts[], enum Class class, const char *text) {
 static const struct Formatter {
 	const char *name;
 	Header *header;
-	Format *format;
+	Output *format;
 	Header *footer;
 } Formatters[] = {
 	{ "ansi", NULL, ansiFormat, NULL },
diff --git a/bin/hilex.h b/bin/hilex.h
index fc969e5f..b6c3c724 100644
--- a/bin/hilex.h
+++ b/bin/hilex.h
@@ -22,13 +22,13 @@
 	X(Operator) \
 	X(Number) \
 	X(Keyword) \
-	X(Identifier) \
+	X(Ident) \
 	X(Macro) \
 	X(Comment) \
 	X(String) \
-	X(StringEscape) \
-	X(StringFormat) \
-	X(Interpolation)
+	X(Escape) \
+	X(Format) \
+	X(Subst)
 
 enum Class {
 #define X(class) class,
diff --git a/bin/html.sh b/bin/html.sh
index c2ad7fa2..8214b8ff 100644
--- a/bin/html.sh
+++ b/bin/html.sh
@@ -62,12 +62,12 @@ a.tag:target {
 	outline: none;
 }
 
-.hilex.Keyword { color: var(--ansi7); }
-.hilex.Macro { color: var(--ansi2); }
-.hilex.Comment { color: var(--ansi4); }
-.hilex.String { color: var(--ansi6); }
-.hilex.StringFormat { color: var(--ansi14); }
-.hilex.Interpolation { color: var(--ansi1); }
+pre .Ke { color: var(--ansi7); }
+pre .Ma { color: var(--ansi2); }
+pre .Co { color: var(--ansi4); }
+pre .St { color: var(--ansi6); }
+pre .Fo { color: var(--ansi14); }
+pre .Su { color: var(--ansi1); }
 </style>
 EOF
 
diff --git a/bin/make.l b/bin/make.l
index 952c589d..eee150b9 100644
--- a/bin/make.l
+++ b/bin/make.l
@@ -22,7 +22,7 @@
 %}
 
 %s Assign
-%x Interp Shell
+%x Variable Shell
 
 ident [._[:alnum:]]+
 assign [+?:!]?=
@@ -55,7 +55,7 @@ operator [:!]|::
 }
 
 ^{ident}/[[:blank:]]*{assign} {
-	return Identifier;
+	return Ident;
 }
 
 {assign} {
@@ -73,24 +73,24 @@ operator [:!]|::
 
 ^"-"?include { return Macro; }
 
-{target} { return Identifier; }
+{target} { return Ident; }
 
 "#"([^\\\n]|"\\"[^\n]|"\\\n")* { return Comment; }
 
 <*>{
 	"$"("{"|"(") {
 		depth++;
-		BEGIN(Interp);
-		return Interpolation;
+		BEGIN(Variable);
+		return Subst;
 	}
-	"$". { return Interpolation; }
+	"$". { return Subst; }
 }
-<Interp>{
+<Variable>{
 	"}"|")" {
 		if (!--depth) BEGIN(pop);
-		return Interpolation;
+		return Subst;
 	}
-	[^${}()]+ { return Interpolation; }
+	[^${}()]+ { return Subst; }
 }
 
 .|\n { return Normal; }
diff --git a/bin/man1/hilex.1 b/bin/man1/hilex.1
index aec57860..b742b063 100644
--- a/bin/man1/hilex.1
+++ b/bin/man1/hilex.1
@@ -1,4 +1,4 @@
-.Dd January 12, 2021
+.Dd January 13, 2021
 .Dt HILEX 1
 .Os
 .
@@ -68,21 +68,31 @@ Output ANSI terminal control sequences.
 .It Cm html
 Output HTML
 .Sy span
-elements.
-Each element has the classes
-.Sy hilex
-and one of the following:
-.Sy Operator ,
-.Sy Number ,
-.Sy Keyword ,
-.Sy Identifier ,
-.Sy Macro ,
-.Sy Comment ,
-.Sy String ,
-.Sy StringEscape ,
-.Sy StringFormat ,
-.Sy Interpolation .
-.
+elements
+with the following classes:
+.Pp
+.Bl -hang -width "\&Op" -compact
+.It Sy \&Op
+operators
+.It Sy \&Nu
+numbers
+.It Sy \&Ke
+keywords
+.It Sy \&Id
+identifiers
+.It Sy \&Ma
+macros
+.It Sy \&Co
+comments
+.It Sy \&St
+strings
+.It Sy \&Es
+character escapes
+.It Sy \&Fo
+format strings
+.It Sy \&Su
+variable substitutions
+.El
 .Pp
 The options are as follows:
 .Bl -tag -width "title=..."