[personal profile] codedot
https://gist.github.com/4139831

Вместо того, чтобы писать функцию, которая строит дерево, напишите функцию, генерирующую код, который строит это дерево. Более точно, определите функцию gen() так, чтобы она печатала код на Си в stdout и программа на выходе кодогенератора создавала то же самое дерево, что пришло в аргументе функции. Ниже некоторые детали:

alexo@euromake:/tmp$ git clone git://gist.github.com/4139831.git gentree
Cloning into gentree...
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 8 (delta 1), reused 5 (delta 1)
Receiving objects: 100% (8/8), done.
Resolving deltas: 100% (1/1), done.
alexo@euromake:/tmp$ cd gentree/
alexo@euromake:/tmp/gentree$ make
cc     gentree.c   -o gentree
./gentree 0 >output.c
make output
make[1]: Entering directory `/tmp/gentree'
cc     output.c   -o output
make[1]: Leaving directory `/tmp/gentree'
[ 0 = $(./output) ]
alexo@euromake:/tmp/gentree$ git grep Grammar
gentree.c:/* Grammar: <tree> ::= '0' | '1' <tree> <tree>. */
alexo@euromake:/tmp/gentree$ make TEST=1101000
./gentree 1101000 >output.c
make output
make[1]: Entering directory `/tmp/gentree'
cc     output.c   -o output
make[1]: Leaving directory `/tmp/gentree'
[ 1101000 = $(./output) ]
make: *** [all] Error 1
alexo@euromake:/tmp/gentree$ git grep TODO
gentree.c:      /* TODO: print some code in stdout. */
alexo@euromake:/tmp/gentree$ vi gentree.c

Profile

Anton Salikhmetov

November 2018

S M T W T F S
    123
45678 910
11121314151617
18192021222324
252627282930 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 30th, 2025 10:15 pm
Powered by Dreamwidth Studios