
Using bison and flex with CentOS 8
This isn't actually useful, it's here to remind me what I did ... if you use this, be sure to start with the github link. Also - I forgot about the installation. Install stuff.
Tools
- Bison - Bison is a general-purpose parser generator that converts an annotated context-free grammar into a deterministic LR or generalized LR (GLR) parser employing LALR(1) parser tables. (Generates C++)
- Flex - flex is a tool for generating scanners: programs which recognize lexical patterns in text. (Tokens).
- gcc - The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages (libstdc++,...). GCC was originally written as the compiler for the GNU operating system. The GNU system was developed to be 100% free software, free in the sense that it respects the user's freedom.
First
Does everything you do work the first time? Probably not. Start with someone else's stuff.
https://github.com/meyerd/flex-bison-example
$ bison -d calc.y
$ flex calc.l
$ gcc calc.tab.c lex.yy.c -o calc -lm
$ ./calc
Write a little bash script because you're going to have to run your stuff, over and over
#!/bin/bash
if [ $# != 1 ];
then
echo -e "\nUsage $0 <filename>\n\tExample: $0 one\n";
exit 1;
fi;
bison -d "$1.y"
flex -l -o "$1.c" "$1.l"
gcc -lm "$1.tab.c" "$1.c" -o "$1"
./$1
Files
The two files I created are attached, with .txt extensions.
The goal was to create a little assembler. In this case, the assembler supports three commands - LOAD, CLEAR and STORE. It's interactive, meaning it behaves as an interpreter, rather than creating 'machine' code.
It was a good exercise and I like the example.
Print article | This entry was posted by elvis on 11/27/21 at 04:13:00 pm . Follow any responses to this post through RSS 2.0. |