Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a file include mechanism for YACC files?

Tags:

c

sed

yacc

bison

I have three programs that are currently using YACC files to do configuration file parsing. For simplicity, they all read the same configuration file, however, they each respond to keys/values uniquely (so the same .y file can't be used for more than 1 program). It would be nice not to have to repeat the %token declarations for each one - if I want to add one token, I have to change 3 files? What year is it??

These methods aren't working or are giving me issues:

  1. The C preprocessor is obviously run AFTER we YACC the file, so #include for a #define or other macro will not work.

  2. I've tried to script up something similar using sed:

REPLACE_DATA=$(cat <file>)

NEW_FILE=<file>.tmp

sed 's/$PLACEHOLDER/$REPLACE_DATA/g' <file> > $NEW_FILE

However it seems that it's stripping my newlines in REPLACE_DATA and then not replacing instances of $PLACEHOLDER instead of replacing the contents of the variables PLACEHOLDER.

Is there a real include mechanism in YACC, or are there other solutions I'm missing? This is a maintenance nightmare and I'm hoping someone else has run into a similar situation. Thanks in advance.

like image 632
rutgersmike Avatar asked Dec 18 '25 20:12

rutgersmike


1 Answers

here's a sed version from http://www.grymoire.com/Unix/Sed.html#uh-37

#!/bin/sh
# watch out for a '/' in the parameter
# use alternate search delimiter
sed -e '\_#INCLUDE <'"$1"'>_{
    r '"$1"'
    d
}'

But traditionally, we used the m4 preprocessor before yacc.

like image 121
Bruce Barnett Avatar answered Dec 21 '25 09:12

Bruce Barnett



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!