DaxterPoker 2017-09-18 18:00:42 +1
Siemka,
Mam problem, otóż piszę program do analizy kodów źródłowych, i w String code mam kod źródłowy odczytaany z pliku.
Pierwszym zadaniem jest pozbycie się #include z początku String. Niestety nigdy nie wiem ile tych #include będzie.
Macie jakieś pomysły jak to zrobić ? Splitować jakoś ? aplikację piszę w javie i będzie obrabiała jedynie kody c++.
#cpp #java #parser
rotflolmaomgeez 2017-09-18 20:26:05 +1
@DaxterPoker: są gotowe generatory parserów, w tym dla javy. Podajesz gramatykę i generuje ci parser, przykład: BNFC ( http://bnfc.digitalgrammars.com/ ). Pełnej gramatyki C++ nie znajdziesz, bo nie istnieje - ale jakieś podzbiory już tak :) i tak wyjdzie znacznie lepiej niż pisanie tego od podstaw.
TheNewIcek 2017-09-18 18:20:26 +0
@DaxterPoker: dla ulatwienia podpowiem:

poprawne
`
#include "foo"
#include
# include
`
no i do tego mozna to wykomentowac :D tzn
`
// #included
/* #include */
`
no i #include wcale nie musi byc na poczatku, moze byc gdziekolwiek
DaxterPoker [OP] 2017-09-18 18:30:53 +0
@TheNewIcek: Załóżmy że są na początku kodu.
TheNewIcek 2017-09-18 18:35:13 +0
@DaxterPoker: rozbic na poszczegolne linie i albo szukac regexpem `#[ ]*include[ ]+["<].*[">]` (niezbyt czesto pisze ale mniej wiecej cos takiego) albo zrob sobie sam prosty parser.

edit: ten regexp nie uwzglednia glupich bledow typu #include <asd.h"