commit 40c0f4639a924107fbbef32d3ffa332ba41b3ae8
parent ca8634bcf5e28e3656f7f718319042662873b30a
Author: thing1 <thing1@seacrossedlovers.xyz>
Date: Thu, 30 Oct 2025 13:06:37 +0000
removed tmps
Diffstat:
| M | .gitignore | | | 6 | +++--- |
| D | parse.gv | | | 238 | ------------------------------------------------------------------------------- |
| D | parse.h | | | 104 | ------------------------------------------------------------------------------- |
| A | y.tab.h | | | 102 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
4 files changed, 105 insertions(+), 345 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -1,9 +1,9 @@
lex.yy.c
-y.gv
+*.gv
fela
*.pdf
-y.tab.c
-y.tab.h
+lex.c
*.o
lex.c
parse.c
+parse.h
diff --git a/parse.gv b/parse.gv
@@ -1,238 +0,0 @@
-// Generated by GNU Bison 3.8.2.
-// Report bugs to <bug-bison@gnu.org>.
-// Home page: <https://www.gnu.org/software/bison/>.
-
-digraph "parse.y"
-{
- node [fontname = courier, shape = box, colorscheme = paired6]
- edge [fontname = courier]
-
- 0 [label="State 0\n\l 0 $accept: • body $end\l"]
- 0 -> 1 [style=solid label="NAME"]
- 0 -> 2 [style=solid label="FUNC"]
- 0 -> 3 [style=dashed label="body"]
- 0 -> 4 [style=dashed label="decs"]
- 0 -> 5 [style=dashed label="dec"]
- 0 -> 6 [style=dashed label="type"]
- 1 [label="State 1\n\l 21 type: NAME •\l"]
- 1 -> "1R21" [style=solid]
- "1R21" [label="R21", fillcolor=3, shape=diamond, style=filled]
- 2 [label="State 2\n\l 22 type: FUNC • '(' ')' RETTYPE type\l"]
- 2 -> 7 [style=solid label="'('"]
- 3 [label="State 3\n\l 0 $accept: body • $end\l"]
- 3 -> 8 [style=solid label="$end"]
- 4 [label="State 4\n\l 1 body: decs •\l 2 decs: decs • dec ';'\l"]
- 4 -> 1 [style=solid label="NAME"]
- 4 -> 2 [style=solid label="FUNC"]
- 4 -> 9 [style=dashed label="dec"]
- 4 -> 6 [style=dashed label="type"]
- 4 -> "4R1" [style=solid]
- "4R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
- 5 [label="State 5\n\l 3 decs: dec • ';'\l"]
- 5 -> 10 [style=solid label="';'"]
- 6 [label="State 6\n\l 4 dec: type • name\l 5 | type • name '=' expr\l 6 | type • name '=' func\l"]
- 6 -> 11 [style=solid label="NAME"]
- 6 -> 12 [style=dashed label="name"]
- 7 [label="State 7\n\l 22 type: FUNC '(' • ')' RETTYPE type\l"]
- 7 -> 13 [style=solid label="')'"]
- 8 [label="State 8\n\l 0 $accept: body $end •\l"]
- 8 -> "8R0" [style=solid]
- "8R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
- 9 [label="State 9\n\l 2 decs: decs dec • ';'\l"]
- 9 -> 14 [style=solid label="';'"]
- 10 [label="State 10\n\l 3 decs: dec ';' •\l"]
- 10 -> "10R3" [style=solid]
- "10R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
- 11 [label="State 11\n\l 20 name: NAME •\l"]
- 11 -> "11R20" [style=solid]
- "11R20" [label="R20", fillcolor=3, shape=diamond, style=filled]
- 12 [label="State 12\n\l 4 dec: type name •\l 5 | type name • '=' expr\l 6 | type name • '=' func\l"]
- 12 -> 15 [style=solid label="'='"]
- 12 -> "12R4" [style=solid]
- "12R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
- 13 [label="State 13\n\l 22 type: FUNC '(' ')' • RETTYPE type\l"]
- 13 -> 16 [style=solid label="RETTYPE"]
- 14 [label="State 14\n\l 2 decs: decs dec ';' •\l"]
- 14 -> "14R2" [style=solid]
- "14R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
- 15 [label="State 15\n\l 5 dec: type name '=' • expr\l 6 | type name '=' • func\l"]
- 15 -> 11 [style=solid label="NAME"]
- 15 -> 17 [style=solid label="NUMBER"]
- 15 -> 18 [style=solid label="'('"]
- 15 -> 19 [style=dashed label="func"]
- 15 -> 20 [style=dashed label="expr"]
- 15 -> 21 [style=dashed label="name"]
- 16 [label="State 16\n\l 22 type: FUNC '(' ')' RETTYPE • type\l"]
- 16 -> 1 [style=solid label="NAME"]
- 16 -> 2 [style=solid label="FUNC"]
- 16 -> 22 [style=dashed label="type"]
- 17 [label="State 17\n\l 17 expr: NUMBER •\l"]
- 17 -> "17R17" [style=solid]
- "17R17" [label="R17", fillcolor=3, shape=diamond, style=filled]
- 18 [label="State 18\n\l 9 func: '(' • ')' RETTYPE type '{' decs exprs '}'\l 10 | '(' • ')' RETTYPE type '{' exprs '}'\l 16 expr: '(' • expr ')'\l"]
- 18 -> 11 [style=solid label="NAME"]
- 18 -> 17 [style=solid label="NUMBER"]
- 18 -> 23 [style=solid label="'('"]
- 18 -> 24 [style=solid label="')'"]
- 18 -> 25 [style=dashed label="expr"]
- 18 -> 21 [style=dashed label="name"]
- 19 [label="State 19\n\l 6 dec: type name '=' func •\l"]
- 19 -> "19R6" [style=solid]
- "19R6" [label="R6", fillcolor=3, shape=diamond, style=filled]
- 20 [label="State 20\n\l 5 dec: type name '=' expr •\l 12 expr: expr • '+' expr\l 13 | expr • '-' expr\l 14 | expr • '/' expr\l 15 | expr • '*' expr\l"]
- 20 -> 26 [style=solid label="'+'"]
- 20 -> 27 [style=solid label="'-'"]
- 20 -> 28 [style=solid label="'*'"]
- 20 -> 29 [style=solid label="'/'"]
- 20 -> "20R5" [style=solid]
- "20R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
- 21 [label="State 21\n\l 11 expr: name • '=' expr\l 18 | name •\l 19 | name • '(' ')'\l"]
- 21 -> 30 [style=solid label="'('"]
- 21 -> 31 [style=solid label="'='"]
- 21 -> "21R18" [style=solid]
- "21R18" [label="R18", fillcolor=3, shape=diamond, style=filled]
- 22 [label="State 22\n\l 22 type: FUNC '(' ')' RETTYPE type •\l"]
- 22 -> "22R22" [style=solid]
- "22R22" [label="R22", fillcolor=3, shape=diamond, style=filled]
- 23 [label="State 23\n\l 16 expr: '(' • expr ')'\l"]
- 23 -> 11 [style=solid label="NAME"]
- 23 -> 17 [style=solid label="NUMBER"]
- 23 -> 23 [style=solid label="'('"]
- 23 -> 25 [style=dashed label="expr"]
- 23 -> 21 [style=dashed label="name"]
- 24 [label="State 24\n\l 9 func: '(' ')' • RETTYPE type '{' decs exprs '}'\l 10 | '(' ')' • RETTYPE type '{' exprs '}'\l"]
- 24 -> 32 [style=solid label="RETTYPE"]
- 25 [label="State 25\n\l 12 expr: expr • '+' expr\l 13 | expr • '-' expr\l 14 | expr • '/' expr\l 15 | expr • '*' expr\l 16 | '(' expr • ')'\l"]
- 25 -> 26 [style=solid label="'+'"]
- 25 -> 27 [style=solid label="'-'"]
- 25 -> 28 [style=solid label="'*'"]
- 25 -> 29 [style=solid label="'/'"]
- 25 -> 33 [style=solid label="')'"]
- 26 [label="State 26\n\l 12 expr: expr '+' • expr\l"]
- 26 -> 11 [style=solid label="NAME"]
- 26 -> 17 [style=solid label="NUMBER"]
- 26 -> 23 [style=solid label="'('"]
- 26 -> 34 [style=dashed label="expr"]
- 26 -> 21 [style=dashed label="name"]
- 27 [label="State 27\n\l 13 expr: expr '-' • expr\l"]
- 27 -> 11 [style=solid label="NAME"]
- 27 -> 17 [style=solid label="NUMBER"]
- 27 -> 23 [style=solid label="'('"]
- 27 -> 35 [style=dashed label="expr"]
- 27 -> 21 [style=dashed label="name"]
- 28 [label="State 28\n\l 15 expr: expr '*' • expr\l"]
- 28 -> 11 [style=solid label="NAME"]
- 28 -> 17 [style=solid label="NUMBER"]
- 28 -> 23 [style=solid label="'('"]
- 28 -> 36 [style=dashed label="expr"]
- 28 -> 21 [style=dashed label="name"]
- 29 [label="State 29\n\l 14 expr: expr '/' • expr\l"]
- 29 -> 11 [style=solid label="NAME"]
- 29 -> 17 [style=solid label="NUMBER"]
- 29 -> 23 [style=solid label="'('"]
- 29 -> 37 [style=dashed label="expr"]
- 29 -> 21 [style=dashed label="name"]
- 30 [label="State 30\n\l 19 expr: name '(' • ')'\l"]
- 30 -> 38 [style=solid label="')'"]
- 31 [label="State 31\n\l 11 expr: name '=' • expr\l"]
- 31 -> 11 [style=solid label="NAME"]
- 31 -> 17 [style=solid label="NUMBER"]
- 31 -> 23 [style=solid label="'('"]
- 31 -> 39 [style=dashed label="expr"]
- 31 -> 21 [style=dashed label="name"]
- 32 [label="State 32\n\l 9 func: '(' ')' RETTYPE • type '{' decs exprs '}'\l 10 | '(' ')' RETTYPE • type '{' exprs '}'\l"]
- 32 -> 1 [style=solid label="NAME"]
- 32 -> 2 [style=solid label="FUNC"]
- 32 -> 40 [style=dashed label="type"]
- 33 [label="State 33\n\l 16 expr: '(' expr ')' •\l"]
- 33 -> "33R16" [style=solid]
- "33R16" [label="R16", fillcolor=3, shape=diamond, style=filled]
- 34 [label="State 34\n\l 12 expr: expr • '+' expr\l 12 | expr '+' expr •\l 13 | expr • '-' expr\l 14 | expr • '/' expr\l 15 | expr • '*' expr\l"]
- 34 -> 28 [style=solid label="'*'"]
- 34 -> 29 [style=solid label="'/'"]
- 34 -> "34R12" [style=solid]
- "34R12" [label="R12", fillcolor=3, shape=diamond, style=filled]
- 35 [label="State 35\n\l 12 expr: expr • '+' expr\l 13 | expr • '-' expr\l 13 | expr '-' expr •\l 14 | expr • '/' expr\l 15 | expr • '*' expr\l"]
- 35 -> 28 [style=solid label="'*'"]
- 35 -> 29 [style=solid label="'/'"]
- 35 -> "35R13" [style=solid]
- "35R13" [label="R13", fillcolor=3, shape=diamond, style=filled]
- 36 [label="State 36\n\l 12 expr: expr • '+' expr\l 13 | expr • '-' expr\l 14 | expr • '/' expr\l 15 | expr • '*' expr\l 15 | expr '*' expr •\l"]
- 36 -> "36R15" [style=solid]
- "36R15" [label="R15", fillcolor=3, shape=diamond, style=filled]
- 37 [label="State 37\n\l 12 expr: expr • '+' expr\l 13 | expr • '-' expr\l 14 | expr • '/' expr\l 14 | expr '/' expr •\l 15 | expr • '*' expr\l"]
- 37 -> "37R14" [style=solid]
- "37R14" [label="R14", fillcolor=3, shape=diamond, style=filled]
- 38 [label="State 38\n\l 19 expr: name '(' ')' •\l"]
- 38 -> "38R19" [style=solid]
- "38R19" [label="R19", fillcolor=3, shape=diamond, style=filled]
- 39 [label="State 39\n\l 11 expr: name '=' expr •\l 12 | expr • '+' expr\l 13 | expr • '-' expr\l 14 | expr • '/' expr\l 15 | expr • '*' expr\l"]
- 39 -> "39R11" [style=solid]
- "39R11" [label="R11", fillcolor=3, shape=diamond, style=filled]
- 40 [label="State 40\n\l 9 func: '(' ')' RETTYPE type • '{' decs exprs '}'\l 10 | '(' ')' RETTYPE type • '{' exprs '}'\l"]
- 40 -> 41 [style=solid label="'{'"]
- 41 [label="State 41\n\l 9 func: '(' ')' RETTYPE type '{' • decs exprs '}'\l 10 | '(' ')' RETTYPE type '{' • exprs '}'\l"]
- 41 -> 42 [style=solid label="NAME"]
- 41 -> 17 [style=solid label="NUMBER"]
- 41 -> 2 [style=solid label="FUNC"]
- 41 -> 23 [style=solid label="'('"]
- 41 -> 43 [style=dashed label="decs"]
- 41 -> 5 [style=dashed label="dec"]
- 41 -> 44 [style=dashed label="exprs"]
- 41 -> 45 [style=dashed label="expr"]
- 41 -> 21 [style=dashed label="name"]
- 41 -> 6 [style=dashed label="type"]
- 42 [label="State 42\n\l 20 name: NAME •\l 21 type: NAME •\l"]
- 42 -> "42R20" [style=solid]
- "42R20" [label="R20", fillcolor=3, shape=diamond, style=filled]
- 42 -> "42R21" [label="[NAME]", style=solid]
- "42R21" [label="R21", fillcolor=3, shape=diamond, style=filled]
- 43 [label="State 43\n\l 2 decs: decs • dec ';'\l 9 func: '(' ')' RETTYPE type '{' decs • exprs '}'\l"]
- 43 -> 42 [style=solid label="NAME"]
- 43 -> 17 [style=solid label="NUMBER"]
- 43 -> 2 [style=solid label="FUNC"]
- 43 -> 23 [style=solid label="'('"]
- 43 -> 9 [style=dashed label="dec"]
- 43 -> 46 [style=dashed label="exprs"]
- 43 -> 45 [style=dashed label="expr"]
- 43 -> 21 [style=dashed label="name"]
- 43 -> 6 [style=dashed label="type"]
- 44 [label="State 44\n\l 7 exprs: exprs • expr ';'\l 10 func: '(' ')' RETTYPE type '{' exprs • '}'\l"]
- 44 -> 11 [style=solid label="NAME"]
- 44 -> 17 [style=solid label="NUMBER"]
- 44 -> 23 [style=solid label="'('"]
- 44 -> 47 [style=solid label="'}'"]
- 44 -> 48 [style=dashed label="expr"]
- 44 -> 21 [style=dashed label="name"]
- 45 [label="State 45\n\l 8 exprs: expr • ';'\l 12 expr: expr • '+' expr\l 13 | expr • '-' expr\l 14 | expr • '/' expr\l 15 | expr • '*' expr\l"]
- 45 -> 26 [style=solid label="'+'"]
- 45 -> 27 [style=solid label="'-'"]
- 45 -> 28 [style=solid label="'*'"]
- 45 -> 29 [style=solid label="'/'"]
- 45 -> 49 [style=solid label="';'"]
- 46 [label="State 46\n\l 7 exprs: exprs • expr ';'\l 9 func: '(' ')' RETTYPE type '{' decs exprs • '}'\l"]
- 46 -> 11 [style=solid label="NAME"]
- 46 -> 17 [style=solid label="NUMBER"]
- 46 -> 23 [style=solid label="'('"]
- 46 -> 50 [style=solid label="'}'"]
- 46 -> 48 [style=dashed label="expr"]
- 46 -> 21 [style=dashed label="name"]
- 47 [label="State 47\n\l 10 func: '(' ')' RETTYPE type '{' exprs '}' •\l"]
- 47 -> "47R10" [style=solid]
- "47R10" [label="R10", fillcolor=3, shape=diamond, style=filled]
- 48 [label="State 48\n\l 7 exprs: exprs expr • ';'\l 12 expr: expr • '+' expr\l 13 | expr • '-' expr\l 14 | expr • '/' expr\l 15 | expr • '*' expr\l"]
- 48 -> 26 [style=solid label="'+'"]
- 48 -> 27 [style=solid label="'-'"]
- 48 -> 28 [style=solid label="'*'"]
- 48 -> 29 [style=solid label="'/'"]
- 48 -> 51 [style=solid label="';'"]
- 49 [label="State 49\n\l 8 exprs: expr ';' •\l"]
- 49 -> "49R8" [style=solid]
- "49R8" [label="R8", fillcolor=3, shape=diamond, style=filled]
- 50 [label="State 50\n\l 9 func: '(' ')' RETTYPE type '{' decs exprs '}' •\l"]
- 50 -> "50R9" [style=solid]
- "50R9" [label="R9", fillcolor=3, shape=diamond, style=filled]
- 51 [label="State 51\n\l 7 exprs: exprs expr ';' •\l"]
- 51 -> "51R7" [style=solid]
- "51R7" [label="R7", fillcolor=3, shape=diamond, style=filled]
-}
diff --git a/parse.h b/parse.h
@@ -1,104 +0,0 @@
-/* A Bison parser, made by GNU Bison 3.8.2. */
-
-/* Bison interface for Yacc-like parsers in C
-
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
- Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <https://www.gnu.org/licenses/>. */
-
-/* As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
-
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
-
-/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
- especially those whose name start with YY_ or yy_. They are
- private implementation details that can be changed or removed. */
-
-#ifndef YY_YY_PARSE_H_INCLUDED
-# define YY_YY_PARSE_H_INCLUDED
-/* Debug traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 1
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token kinds. */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
- enum yytokentype
- {
- YYEMPTY = -2,
- YYEOF = 0, /* "end of file" */
- YYerror = 256, /* error */
- YYUNDEF = 257, /* "invalid token" */
- NAME = 258, /* NAME */
- NUMBER = 259, /* NUMBER */
- FUNC = 260, /* FUNC */
- RETTYPE = 261 /* RETTYPE */
- };
- typedef enum yytokentype yytoken_kind_t;
-#endif
-/* Token kinds. */
-#define YYEMPTY -2
-#define YYEOF 0
-#define YYerror 256
-#define YYUNDEF 257
-#define NAME 258
-#define NUMBER 259
-#define FUNC 260
-#define RETTYPE 261
-
-/* Value type. */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-union YYSTYPE
-{
-#line 22 "parse.y"
-
- struct ast_dec *dec;
- struct ast_expr *expr;
- struct ast_decs *decs;
- struct ast_exprs *exprs;
- struct ast_type *type;
-
- char *s;
- long l;
-
-#line 90 "parse.h"
-
-};
-typedef union YYSTYPE YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-
-extern YYSTYPE yylval;
-
-
-int yyparse (void);
-
-
-#endif /* !YY_YY_PARSE_H_INCLUDED */
diff --git a/y.tab.h b/y.tab.h
@@ -0,0 +1,102 @@
+/* A Bison parser, made by GNU Bison 3.8.2. */
+
+/* Bison interface for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
+ Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+ especially those whose name start with YY_ or yy_. They are
+ private implementation details that can be changed or removed. */
+
+#ifndef YY_YY_Y_TAB_H_INCLUDED
+# define YY_YY_Y_TAB_H_INCLUDED
+/* Debug traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+
+/* Token kinds. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ enum yytokentype
+ {
+ YYEMPTY = -2,
+ YYEOF = 0, /* "end of file" */
+ YYerror = 256, /* error */
+ YYUNDEF = 257, /* "invalid token" */
+ NAME = 258, /* NAME */
+ NUMBER = 259, /* NUMBER */
+ FUNC = 260 /* FUNC */
+ };
+ typedef enum yytokentype yytoken_kind_t;
+#endif
+/* Token kinds. */
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
+#define NAME 258
+#define NUMBER 259
+#define FUNC 260
+
+/* Value type. */
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+union YYSTYPE
+{
+#line 18 "parse.y"
+
+ struct ast_dec *dec;
+ struct ast_expr *expr;
+ struct ast_decs *decs;
+ struct ast_exprs *exprs;
+ struct func *func;
+
+ char *s;
+ long l;
+
+#line 88 "y.tab.h"
+
+};
+typedef union YYSTYPE YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+extern YYSTYPE yylval;
+
+
+int yyparse (void);
+
+
+#endif /* !YY_YY_Y_TAB_H_INCLUDED */