]> git.mar77i.info Git - shitscript/commitdiff
skip shell-style '#' comments master
authormar77i <mar77i@protonmail.ch>
Thu, 21 Nov 2024 08:48:39 +0000 (09:48 +0100)
committermar77i <mar77i@protonmail.ch>
Thu, 21 Nov 2024 08:51:23 +0000 (09:51 +0100)
parser.c

index 8ef121bdb836f27a68cd7c4d0a4ba0ae88fdde29..a11ec69655da1c4eddaec00908230140c972f6da 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -51,6 +51,17 @@ static inline int read_ident_or_keyword(
     return 0;
 }
 
     return 0;
 }
 
+static inline int is_newline(int c) {
+    return c == '\n';
+}
+
+static inline void skip_comment(FILE *fh) {
+    int c;
+    while ((c = getc(fh)) != EOF)
+        if (is_newline(c))
+            return;
+}
+
 int parse_input(FILE *fh, struct program *p) {
     int c;
     struct ast_item ai;
 int parse_input(FILE *fh, struct program *p) {
     int c;
     struct ast_item ai;
@@ -90,6 +101,9 @@ int parse_input(FILE *fh, struct program *p) {
         case '/':
             ai.type = AST_ITEM_DIVIDE;
             goto add_item;
         case '/':
             ai.type = AST_ITEM_DIVIDE;
             goto add_item;
+        case '#':
+            skip_comment(fh);
+            continue;
         }
         if (isdigit(c)) {
             ai.type = AST_ITEM_INT;
         }
         if (isdigit(c)) {
             ai.type = AST_ITEM_INT;