Teoria
Aho, Lem, Sethi, Ullman. 3 Wydanie.
Narzędzia
bison
- Stosuj
%define api.value.type variant
zamiastunion
dla aplikacji C++. %verbose
tworzy pliki.output
wyjaśniające stany parsera.%locations
potrzebne do zdefiniowaniaYYLTYPE
jeśli symbole@n
nie odnoszono się do nich jawnie .
flex
Przykład integracji bison z flex można znaleźć tu.
Pułapki
Zasady gramatyki bez określonej akcji (np. expr: subexpr
) ma domyślną akcję { $$ = $1; }
, skutkując błędem jeśli typy nie pasują do siebie. Skutkuje to ostrzeżeniem niby:
parser.y:36.5-8: ostrzeżenie: konflikt typu w domyślnej akcji: <char *> != <> [-Wother]
flex
Trzeba dodać albo %option noyywrap
albo definicję int yywrap () {return 1; }
żeby się skompilowało.
FEATURED TAGS
assembly
aws
boostrap
bpftrace
c
c++
clang
cloud
cmake
compilers
cryptography
css
dbus
debian
elf
gcc
gcov
gdb
ghidra
git
glibc
gnu
gpg
gui
http
javascript
jq
kernel
ld.so
linux
llvm
make
nasm
networking
node
npm
opengl
pam
pl
postgres
python
qt
reversing
shell
sql
sqlite
ssh
sudo
sysadmin
systemd
twilio
uftrace
usb
vim
virtualization
winapi
wireshark
www
x86
xml
xpath
zsh