fela

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 40c0f4639a924107fbbef32d3ffa332ba41b3ae8
parent ca8634bcf5e28e3656f7f718319042662873b30a
Author: thing1 <thing1@seacrossedlovers.xyz>
Date:   Thu, 30 Oct 2025 13:06:37 +0000

removed tmps

Diffstat:
M.gitignore | 6+++---
Dparse.gv | 238-------------------------------------------------------------------------------
Dparse.h | 104-------------------------------------------------------------------------------
Ay.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 */