trenni 3.11.0 → 3.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/ext/tmp/x86_64-linux/lib/trenni/trenni.so +0 -0
  3. data/ext/tmp/{x86_64-darwin16 → x86_64-linux}/trenni/2.4.0/Makefile +24 -25
  4. data/ext/tmp/x86_64-linux/trenni/2.4.0/escape.o +0 -0
  5. data/ext/tmp/x86_64-linux/trenni/2.4.0/markup.o +0 -0
  6. data/ext/tmp/x86_64-linux/trenni/2.4.0/mkmf.log +108 -0
  7. data/ext/tmp/x86_64-linux/trenni/2.4.0/tag.o +0 -0
  8. data/ext/tmp/x86_64-linux/trenni/2.4.0/template.o +0 -0
  9. data/ext/tmp/x86_64-linux/trenni/2.4.0/trenni.o +0 -0
  10. data/ext/tmp/x86_64-linux/trenni/2.4.0/trenni.so +0 -0
  11. data/ext/tmp/{x86_64-darwin18/trenni/2.6.2 → x86_64-linux/trenni/2.7.0}/Makefile +32 -32
  12. data/ext/tmp/x86_64-linux/trenni/2.7.0/escape.o +0 -0
  13. data/ext/tmp/x86_64-linux/trenni/2.7.0/markup.o +0 -0
  14. data/ext/tmp/x86_64-linux/trenni/2.7.0/mkmf.log +113 -0
  15. data/ext/tmp/x86_64-linux/trenni/2.7.0/query.o +0 -0
  16. data/ext/tmp/x86_64-linux/trenni/2.7.0/tag.o +0 -0
  17. data/ext/tmp/x86_64-linux/trenni/2.7.0/template.o +0 -0
  18. data/ext/tmp/x86_64-linux/trenni/2.7.0/trenni.o +0 -0
  19. data/ext/tmp/x86_64-linux/trenni/2.7.0/trenni.so +0 -0
  20. data/ext/tmp/{x86_64-darwin19 → x86_64-linux}/trenni/2.7.1/Makefile +27 -28
  21. data/ext/tmp/x86_64-linux/trenni/2.7.1/escape.o +0 -0
  22. data/ext/tmp/x86_64-linux/trenni/2.7.1/markup.o +0 -0
  23. data/ext/tmp/x86_64-linux/trenni/2.7.1/mkmf.log +113 -0
  24. data/ext/tmp/x86_64-linux/trenni/2.7.1/query.o +0 -0
  25. data/ext/tmp/x86_64-linux/trenni/2.7.1/tag.o +0 -0
  26. data/ext/tmp/x86_64-linux/trenni/2.7.1/template.o +0 -0
  27. data/ext/tmp/x86_64-linux/trenni/2.7.1/trenni.o +0 -0
  28. data/ext/tmp/x86_64-linux/trenni/2.7.1/trenni.so +0 -0
  29. data/lib/trenni/builder.rb +46 -10
  30. data/lib/trenni/fallback/markup.rl.dot +278 -0
  31. data/lib/trenni/fallback/markup.rl.pdf +0 -0
  32. data/lib/trenni/fallback/query.rl.dot +54 -0
  33. data/lib/trenni/fallback/query.rl.pdf +0 -0
  34. data/lib/trenni/fallback/template.rl.dot +270 -0
  35. data/lib/trenni/fallback/template.rl.pdf +0 -0
  36. data/lib/trenni/template.rb +9 -18
  37. data/lib/trenni/trenni.so +0 -0
  38. data/lib/trenni/version.rb +1 -1
  39. data/spec/trenni/builder_spec.rb +1 -1
  40. data/spec/trenni/template_spec/builder.trenni +2 -2
  41. metadata +41 -51
  42. data/ext/.DS_Store +0 -0
  43. data/ext/tmp/.DS_Store +0 -0
  44. data/ext/tmp/x86_64-darwin16/lib/trenni/trenni.bundle +0 -0
  45. data/ext/tmp/x86_64-darwin16/trenni/2.4.0/escape.o +0 -0
  46. data/ext/tmp/x86_64-darwin16/trenni/2.4.0/markup.o +0 -0
  47. data/ext/tmp/x86_64-darwin16/trenni/2.4.0/mkmf.log +0 -105
  48. data/ext/tmp/x86_64-darwin16/trenni/2.4.0/tag.o +0 -0
  49. data/ext/tmp/x86_64-darwin16/trenni/2.4.0/template.o +0 -0
  50. data/ext/tmp/x86_64-darwin16/trenni/2.4.0/trenni.bundle +0 -0
  51. data/ext/tmp/x86_64-darwin16/trenni/2.4.0/trenni.o +0 -0
  52. data/ext/tmp/x86_64-darwin18/lib/trenni/trenni.bundle +0 -0
  53. data/ext/tmp/x86_64-darwin18/trenni/2.6.1/Makefile +0 -266
  54. data/ext/tmp/x86_64-darwin18/trenni/2.6.1/escape.o +0 -0
  55. data/ext/tmp/x86_64-darwin18/trenni/2.6.1/markup.o +0 -0
  56. data/ext/tmp/x86_64-darwin18/trenni/2.6.1/mkmf.log +0 -109
  57. data/ext/tmp/x86_64-darwin18/trenni/2.6.1/tag.o +0 -0
  58. data/ext/tmp/x86_64-darwin18/trenni/2.6.1/template.o +0 -0
  59. data/ext/tmp/x86_64-darwin18/trenni/2.6.1/trenni.bundle +0 -0
  60. data/ext/tmp/x86_64-darwin18/trenni/2.6.1/trenni.o +0 -0
  61. data/ext/tmp/x86_64-darwin18/trenni/2.6.2/escape.o +0 -0
  62. data/ext/tmp/x86_64-darwin18/trenni/2.6.2/markup.o +0 -0
  63. data/ext/tmp/x86_64-darwin18/trenni/2.6.2/mkmf.log +0 -109
  64. data/ext/tmp/x86_64-darwin18/trenni/2.6.2/tag.o +0 -0
  65. data/ext/tmp/x86_64-darwin18/trenni/2.6.2/template.o +0 -0
  66. data/ext/tmp/x86_64-darwin18/trenni/2.6.2/trenni.bundle +0 -0
  67. data/ext/tmp/x86_64-darwin18/trenni/2.6.2/trenni.o +0 -0
  68. data/ext/tmp/x86_64-darwin19/lib/trenni/trenni.bundle +0 -0
  69. data/ext/tmp/x86_64-darwin19/trenni/2.7.1/escape.o +0 -0
  70. data/ext/tmp/x86_64-darwin19/trenni/2.7.1/markup.o +0 -0
  71. data/ext/tmp/x86_64-darwin19/trenni/2.7.1/mkmf.log +0 -109
  72. data/ext/tmp/x86_64-darwin19/trenni/2.7.1/query.o +0 -0
  73. data/ext/tmp/x86_64-darwin19/trenni/2.7.1/tag.o +0 -0
  74. data/ext/tmp/x86_64-darwin19/trenni/2.7.1/template.o +0 -0
  75. data/ext/tmp/x86_64-darwin19/trenni/2.7.1/trenni.bundle +0 -0
  76. data/ext/tmp/x86_64-darwin19/trenni/2.7.1/trenni.o +0 -0
  77. data/ext/trenni/.DS_Store +0 -0
  78. data/lib/.DS_Store +0 -0
  79. data/lib/trenni/.DS_Store +0 -0
  80. data/parsers/.DS_Store +0 -0
  81. data/spec/.DS_Store +0 -0
  82. data/spec/trenni/template_spec/.DS_Store +0 -0
@@ -12,12 +12,12 @@ NULLCMD = :
12
12
  #### Start of system configuration section. ####
13
13
 
14
14
  srcdir = ../../../../trenni
15
- topdir = /Users/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0
15
+ topdir = /home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0
16
16
  hdrdir = $(topdir)
17
- arch_hdrdir = /Users/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0/x86_64-darwin19
17
+ arch_hdrdir = /home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0/x86_64-linux
18
18
  PATH_SEPARATOR = :
19
19
  VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby
20
- prefix = $(DESTDIR)/Users/samuel/.rubies/ruby-2.7.1
20
+ prefix = $(DESTDIR)/home/samuel/.rubies/ruby-2.7.1
21
21
  rubysitearchprefix = $(rubylibprefix)/$(sitearch)
22
22
  rubyarchprefix = $(rubylibprefix)/$(arch)
23
23
  rubylibprefix = $(libdir)/$(RUBY_BASE_NAME)
@@ -50,7 +50,7 @@ dvidir = $(docdir)
50
50
  htmldir = $(docdir)
51
51
  infodir = $(datarootdir)/info
52
52
  docdir = $(datarootdir)/doc/$(PACKAGE)
53
- oldincludedir = $(SDKROOT)/usr/include
53
+ oldincludedir = $(DESTDIR)/usr/include
54
54
  includedir = $(prefix)/include
55
55
  runstatedir = $(localstatedir)/run
56
56
  localstatedir = $(prefix)/var
@@ -65,12 +65,12 @@ archdir = $(rubyarchdir)
65
65
 
66
66
 
67
67
  CC_WRAPPER =
68
- CC = clang
69
- CXX = clang++
68
+ CC = gcc
69
+ CXX = g++
70
70
  LIBRUBY = $(LIBRUBY_A)
71
71
  LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
72
- LIBRUBYARG_SHARED =
73
- LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static -framework Security -framework Foundation $(MAINLIBS)
72
+ LIBRUBYARG_SHARED = -Wl,-rpath,$(libdir) -L$(libdir)
73
+ LIBRUBYARG_STATIC = -Wl,-rpath,$(libdir) -L$(libdir) -l$(RUBY_SO_NAME)-static $(MAINLIBS)
74
74
  empty =
75
75
  OUTFLAG = -o $(empty)
76
76
  COUTFLAG = -o $(empty)
@@ -81,31 +81,31 @@ cflags = $(optflags) $(debugflags) $(warnflags)
81
81
  cxxflags =
82
82
  optflags = -O3
83
83
  debugflags = -ggdb3
84
- warnflags = -Wall -Wextra -Wdeprecated-declarations -Wdivision-by-zero -Wimplicit-function-declaration -Wimplicit-int -Wpointer-arith -Wshorten-64-to-32 -Wwrite-strings -Wmissing-noreturn -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Wextra-tokens
84
+ warnflags = -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable
85
85
  cppflags =
86
- CCDLFLAGS = -fno-common
87
- CFLAGS = $(CCDLFLAGS) $(cflags) -pipe -O3 -std=c99 $(ARCH_FLAG)
86
+ CCDLFLAGS = -fPIC
87
+ CFLAGS = $(CCDLFLAGS) $(cflags) -O3 -std=c99 $(ARCH_FLAG)
88
88
  INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir)
89
89
  DEFS =
90
- CPPFLAGS = -DHAVE_RB_SYM2STR -DHAVE_RB_STR_CAT_CSTR -I/opt/local/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT $(DEFS) $(cppflags)
90
+ CPPFLAGS = -DHAVE_RB_SYM2STR -DHAVE_RB_STR_CAT_CSTR $(DEFS) $(cppflags)
91
91
  CXXFLAGS = $(CCDLFLAGS) -g -O2 $(ARCH_FLAG)
92
- ldflags = -L. -fstack-protector-strong -L/usr/local/lib -L/opt/local/lib
93
- dldflags = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -L/opt/local/lib
92
+ ldflags = -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic
93
+ dldflags = -Wl,--compress-debug-sections=zlib
94
94
  ARCH_FLAG =
95
95
  DLDFLAGS = $(ldflags) $(dldflags) $(ARCH_FLAG)
96
- LDSHARED = $(CC) -dynamic -bundle
97
- LDSHAREDXX = $(CXX) -dynamic -bundle
98
- AR = libtool -static
96
+ LDSHARED = $(CC) -shared
97
+ LDSHAREDXX = $(CXX) -shared
98
+ AR = ar
99
99
  EXEEXT =
100
100
 
101
101
  RUBY_INSTALL_NAME = $(RUBY_BASE_NAME)
102
- RUBY_SO_NAME = ruby.2.7
102
+ RUBY_SO_NAME = ruby
103
103
  RUBYW_INSTALL_NAME =
104
104
  RUBY_VERSION_NAME = $(RUBY_BASE_NAME)-$(ruby_version)
105
105
  RUBYW_BASE_NAME = rubyw
106
106
  RUBY_BASE_NAME = ruby
107
107
 
108
- arch = x86_64-darwin19
108
+ arch = x86_64-linux
109
109
  sitearch = $(arch)
110
110
  ruby_version = 2.7.0
111
111
  ruby = $(bindir)/$(RUBY_BASE_NAME)
@@ -114,9 +114,9 @@ ruby_headers = $(hdrdir)/ruby.h $(hdrdir)/ruby/backward.h $(hdrdir)/ruby/ruby.h
114
114
 
115
115
  RM = rm -f
116
116
  RM_RF = $(RUBY) -run -e rm -- -rf
117
- RMDIRS = rmdir -p
118
- MAKEDIRS = /opt/local/bin/gmkdir -p
119
- INSTALL = /opt/local/bin/ginstall -c
117
+ RMDIRS = rmdir --ignore-fail-on-non-empty -p
118
+ MAKEDIRS = /usr/bin/mkdir -p
119
+ INSTALL = /usr/bin/install -c
120
120
  INSTALL_PROG = $(INSTALL) -m 0755
121
121
  INSTALL_DATA = $(INSTALL) -m 644
122
122
  COPY = cp
@@ -125,8 +125,8 @@ TOUCH = exit >
125
125
  #### End of system configuration section. ####
126
126
 
127
127
  preload =
128
- libpath = . $(libdir) /opt/local/lib
129
- LIBPATH = -L. -L$(libdir) -L/opt/local/lib
128
+ libpath = . $(libdir)
129
+ LIBPATH = -L. -L$(libdir) -Wl,-rpath,$(libdir)
130
130
  DEFFILE =
131
131
 
132
132
  CLEANFILES = mkmf.log
@@ -137,16 +137,16 @@ extout =
137
137
  extout_prefix =
138
138
  target_prefix = /trenni
139
139
  LOCAL_LIBS =
140
- LIBS =
140
+ LIBS = -lm -lc
141
141
  ORIG_SRCS = escape.c markup.c query.c tag.c template.c trenni.c
142
142
  SRCS = $(ORIG_SRCS)
143
143
  OBJS = escape.o markup.o query.o tag.o template.o trenni.o
144
- HDRS = $(srcdir)/tag.h $(srcdir)/query.h $(srcdir)/markup.h $(srcdir)/escape.h $(srcdir)/trenni.h $(srcdir)/template.h
144
+ HDRS = $(srcdir)/tag.h $(srcdir)/trenni.h $(srcdir)/markup.h $(srcdir)/query.h $(srcdir)/escape.h $(srcdir)/template.h
145
145
  LOCAL_HDRS =
146
146
  TARGET = trenni
147
147
  TARGET_NAME = trenni
148
148
  TARGET_ENTRY = Init_$(TARGET_NAME)
149
- DLLIB = $(TARGET).bundle
149
+ DLLIB = $(TARGET).so
150
150
  EXTSTATIC =
151
151
  STATIC_LIB =
152
152
 
@@ -260,7 +260,6 @@ $(TARGET_SO): $(OBJS) Makefile
260
260
  $(ECHO) linking shared-object trenni/$(DLLIB)
261
261
  -$(Q)$(RM) $(@)
262
262
  $(Q) $(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
263
- $(Q) $(POSTLINK)
264
263
 
265
264
 
266
265
 
@@ -0,0 +1,113 @@
1
+ have_func: checking for rb_sym2str()... -------------------- yes
2
+
3
+ "gcc -o conftest -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0/x86_64-linux -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0/ruby/backward -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0 -I../../../../trenni -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -O3 -std=c99 conftest.c -L. -L/home/samuel/.rubies/ruby-2.7.1/lib -Wl,-rpath,/home/samuel/.rubies/ruby-2.7.1/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,-rpath,/home/samuel/.rubies/ruby-2.7.1/lib -L/home/samuel/.rubies/ruby-2.7.1/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -lm -lc"
4
+ checked program was:
5
+ /* begin */
6
+ 1: #include "ruby.h"
7
+ 2:
8
+ 3: int main(int argc, char **argv)
9
+ 4: {
10
+ 5: return !!argv[argc];
11
+ 6: }
12
+ /* end */
13
+
14
+ "gcc -o conftest -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0/x86_64-linux -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0/ruby/backward -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0 -I../../../../trenni -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -O3 -std=c99 conftest.c -L. -L/home/samuel/.rubies/ruby-2.7.1/lib -Wl,-rpath,/home/samuel/.rubies/ruby-2.7.1/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,-rpath,/home/samuel/.rubies/ruby-2.7.1/lib -L/home/samuel/.rubies/ruby-2.7.1/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -lm -lc"
15
+ checked program was:
16
+ /* begin */
17
+ 1: #include "ruby.h"
18
+ 2:
19
+ 3: /*top*/
20
+ 4: extern int t(void);
21
+ 5: int main(int argc, char **argv)
22
+ 6: {
23
+ 7: if (argc > 1000000) {
24
+ 8: int (* volatile tp)(void)=(int (*)(void))&t;
25
+ 9: printf("%d", (*tp)());
26
+ 10: }
27
+ 11:
28
+ 12: return !!argv[argc];
29
+ 13: }
30
+ 14: int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_sym2str; return !p; }
31
+ /* end */
32
+
33
+ --------------------
34
+
35
+ have_func: checking for rb_str_cat_cstr()... -------------------- yes
36
+
37
+ "gcc -o conftest -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0/x86_64-linux -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0/ruby/backward -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0 -I../../../../trenni -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -O3 -std=c99 conftest.c -L. -L/home/samuel/.rubies/ruby-2.7.1/lib -Wl,-rpath,/home/samuel/.rubies/ruby-2.7.1/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,-rpath,/home/samuel/.rubies/ruby-2.7.1/lib -L/home/samuel/.rubies/ruby-2.7.1/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -lm -lc"
38
+ checked program was:
39
+ /* begin */
40
+ 1: #include "ruby.h"
41
+ 2:
42
+ 3: /*top*/
43
+ 4: extern int t(void);
44
+ 5: int main(int argc, char **argv)
45
+ 6: {
46
+ 7: if (argc > 1000000) {
47
+ 8: int (* volatile tp)(void)=(int (*)(void))&t;
48
+ 9: printf("%d", (*tp)());
49
+ 10: }
50
+ 11:
51
+ 12: return !!argv[argc];
52
+ 13: }
53
+ 14: int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_str_cat_cstr; return !p; }
54
+ /* end */
55
+
56
+ --------------------
57
+
58
+ have_func: checking for rb_str_reserve()... -------------------- no
59
+
60
+ "gcc -o conftest -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0/x86_64-linux -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0/ruby/backward -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0 -I../../../../trenni -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -O3 -std=c99 conftest.c -L. -L/home/samuel/.rubies/ruby-2.7.1/lib -Wl,-rpath,/home/samuel/.rubies/ruby-2.7.1/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,-rpath,/home/samuel/.rubies/ruby-2.7.1/lib -L/home/samuel/.rubies/ruby-2.7.1/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -lm -lc"
61
+ conftest.c: In function ‘t’:
62
+ conftest.c:14:57: error: ‘rb_str_reserve’ undeclared (first use in this function); did you mean ‘rb_str_resize’?
63
+ 14 | int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_str_reserve; return !p; }
64
+ | ^~~~~~~~~~~~~~
65
+ | rb_str_resize
66
+ conftest.c:14:57: note: each undeclared identifier is reported only once for each function it appears in
67
+ conftest.c: At top level:
68
+ cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
69
+ cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
70
+ cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
71
+ checked program was:
72
+ /* begin */
73
+ 1: #include "ruby.h"
74
+ 2:
75
+ 3: /*top*/
76
+ 4: extern int t(void);
77
+ 5: int main(int argc, char **argv)
78
+ 6: {
79
+ 7: if (argc > 1000000) {
80
+ 8: int (* volatile tp)(void)=(int (*)(void))&t;
81
+ 9: printf("%d", (*tp)());
82
+ 10: }
83
+ 11:
84
+ 12: return !!argv[argc];
85
+ 13: }
86
+ 14: int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_str_reserve; return !p; }
87
+ /* end */
88
+
89
+ "gcc -o conftest -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0/x86_64-linux -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0/ruby/backward -I/home/samuel/.rubies/ruby-2.7.1/include/ruby-2.7.0 -I../../../../trenni -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -O3 -std=c99 conftest.c -L. -L/home/samuel/.rubies/ruby-2.7.1/lib -Wl,-rpath,/home/samuel/.rubies/ruby-2.7.1/lib -L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,-rpath,/home/samuel/.rubies/ruby-2.7.1/lib -L/home/samuel/.rubies/ruby-2.7.1/lib -lruby-static -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm -lm -lc"
90
+ /usr/bin/ld: /tmp/cc913emt.o: in function `t':
91
+ /home/samuel/Documents/ioquatix/trenni/ext/tmp/x86_64-linux/trenni/2.7.1/conftest.c:15: undefined reference to `rb_str_reserve'
92
+ collect2: error: ld returned 1 exit status
93
+ checked program was:
94
+ /* begin */
95
+ 1: #include "ruby.h"
96
+ 2:
97
+ 3: /*top*/
98
+ 4: extern int t(void);
99
+ 5: int main(int argc, char **argv)
100
+ 6: {
101
+ 7: if (argc > 1000000) {
102
+ 8: int (* volatile tp)(void)=(int (*)(void))&t;
103
+ 9: printf("%d", (*tp)());
104
+ 10: }
105
+ 11:
106
+ 12: return !!argv[argc];
107
+ 13: }
108
+ 14: extern void rb_str_reserve();
109
+ 15: int t(void) { rb_str_reserve(); return 0; }
110
+ /* end */
111
+
112
+ --------------------
113
+
@@ -28,25 +28,57 @@ module Trenni
28
28
  class Builder
29
29
  include Markup
30
30
 
31
- INDENT = "\t".freeze
31
+ INDENT = "\t"
32
+
33
+ class Fragment
34
+ def initialize(block)
35
+ @block = block
36
+ @builder = nil
37
+ end
38
+
39
+ def call(builder)
40
+ @block.call(builder)
41
+ end
42
+
43
+ def to_s
44
+ unless @builder
45
+ @builder = Builder.new
46
+
47
+ self.call(@builder)
48
+ end
49
+
50
+ return @builder.to_s
51
+ end
52
+
53
+ def == other
54
+ # This is a bit of a hack... but is required for existing specs to pass:
55
+ self.to_s == other.to_s
56
+ end
57
+ end
32
58
 
33
59
  # A helper to generate fragments of markup.
34
- def self.fragment(builder = nil, &block)
35
- if builder.is_a?(self)
36
- yield builder
60
+ def self.fragment(output = nil, &block)
61
+ if output.is_a?(Binding)
62
+ output = Template.buffer(output)
63
+ end
64
+
65
+ if output.nil?
66
+ return Fragment.new(block)
67
+ end
68
+
69
+ if output.is_a?(Builder)
70
+ block.call(output)
37
71
  else
38
- builder = self.new(builder)
39
-
40
- yield builder
72
+ block.call(Builder.new(output))
41
73
  end
42
74
 
43
- return builder
75
+ return nil
44
76
  end
45
77
 
46
78
  def self.tag(name, content, **attributes)
47
79
  self.fragment do |builder|
48
80
  builder.inline(name, attributes) do
49
- builder.text content
81
+ builder.text(content)
50
82
  end
51
83
  end
52
84
  end
@@ -129,7 +161,11 @@ module Trenni
129
161
  def <<(content)
130
162
  return unless content
131
163
 
132
- Markup.append(@output, content)
164
+ if content.is_a?(Fragment)
165
+ content.call(self)
166
+ else
167
+ Markup.append(@output, content)
168
+ end
133
169
  end
134
170
 
135
171
  # Append pre-existing markup:
@@ -0,0 +1,278 @@
1
+ digraph markup {
2
+ rankdir=LR;
3
+ node [ shape = point ];
4
+ ENTRY;
5
+ en_42;
6
+ en_48;
7
+ eof_1;
8
+ eof_2;
9
+ eof_3;
10
+ eof_4;
11
+ eof_5;
12
+ eof_6;
13
+ eof_7;
14
+ eof_8;
15
+ eof_9;
16
+ eof_10;
17
+ eof_11;
18
+ eof_12;
19
+ eof_13;
20
+ eof_14;
21
+ eof_17;
22
+ eof_18;
23
+ eof_19;
24
+ eof_26;
25
+ eof_33;
26
+ eof_34;
27
+ eof_35;
28
+ eof_36;
29
+ eof_37;
30
+ eof_38;
31
+ eof_39;
32
+ eof_40;
33
+ eof_41;
34
+ eof_42;
35
+ eof_43;
36
+ eof_44;
37
+ eof_45;
38
+ eof_46;
39
+ eof_47;
40
+ eof_49;
41
+ eof_50;
42
+ eof_51;
43
+ eof_52;
44
+ eof_53;
45
+ eof_54;
46
+ eof_55;
47
+ eof_56;
48
+ node [ shape = circle, height = 0.2 ];
49
+ err_1 [ label=""];
50
+ err_2 [ label=""];
51
+ err_3 [ label=""];
52
+ err_4 [ label=""];
53
+ err_5 [ label=""];
54
+ err_6 [ label=""];
55
+ err_7 [ label=""];
56
+ err_8 [ label=""];
57
+ err_9 [ label=""];
58
+ err_10 [ label=""];
59
+ err_11 [ label=""];
60
+ err_12 [ label=""];
61
+ err_13 [ label=""];
62
+ err_14 [ label=""];
63
+ err_36 [ label=""];
64
+ err_37 [ label=""];
65
+ err_38 [ label=""];
66
+ err_39 [ label=""];
67
+ err_42 [ label=""];
68
+ err_43 [ label=""];
69
+ err_44 [ label=""];
70
+ err_45 [ label=""];
71
+ err_46 [ label=""];
72
+ err_47 [ label=""];
73
+ node [ fixedsize = true, height = 0.65, shape = doublecircle ];
74
+ 48;
75
+ 49;
76
+ 50;
77
+ 51;
78
+ 52;
79
+ 53;
80
+ 54;
81
+ 55;
82
+ 56;
83
+ 57;
84
+ node [ shape = circle ];
85
+ 1 -> err_1 [ label = "0..SP, '\"'..',', ';'..'>', '@', '['..'^', '`', '{'..127 / tag_error" ];
86
+ 1 -> 15 [ label = "'!'" ];
87
+ 1 -> 36 [ label = "'/'" ];
88
+ 1 -> 38 [ label = "'?'" ];
89
+ 1 -> 2 [ label = "DEF / identifier_begin" ];
90
+ 2 -> err_2 [ label = "0..'\\b', 14..31, '!'..',', ';'..'=', '?'..'@', '['..'^', '`', '{'..127 / tag_error" ];
91
+ 2 -> 3 [ label = "'\\t'..'\\r', SP / identifier_end, tag_name" ];
92
+ 2 -> 5 [ label = "'/' / identifier_end, tag_name, tag_self_closing" ];
93
+ 2 -> 51 [ label = "'>' / identifier_end, tag_name" ];
94
+ 2 -> 2 [ label = "DEF" ];
95
+ 3 -> err_3 [ label = "0..'\\b', 14..31, '!'..',', ';'..'=', '?'..'@', '['..'^', '`', '{'..127 / tag_error" ];
96
+ 3 -> 3 [ label = "'\\t'..'\\r', SP" ];
97
+ 3 -> 5 [ label = "'/' / tag_self_closing" ];
98
+ 3 -> 51 [ label = "'>'" ];
99
+ 3 -> 4 [ label = "DEF / attribute_begin, identifier_begin" ];
100
+ 4 -> err_4 [ label = "0..'\\b', 14..31, '!'..',', ';'..'<', '?'..'@', '['..'^', '`', '{'..127 / tag_error" ];
101
+ 4 -> 3 [ label = "'\\t'..'\\r', SP / identifier_end, attribute" ];
102
+ 4 -> 5 [ label = "'/' / identifier_end, attribute, tag_self_closing" ];
103
+ 4 -> 6 [ label = "'=' / identifier_end" ];
104
+ 4 -> 51 [ label = "'>' / identifier_end, attribute" ];
105
+ 4 -> 4 [ label = "DEF" ];
106
+ 5 -> 51 [ label = "'>'" ];
107
+ 5 -> err_5 [ label = "DEF / tag_error" ];
108
+ 6 -> 7 [ label = "'\"'" ];
109
+ 6 -> 12 [ label = "'''" ];
110
+ 6 -> err_6 [ label = "DEF / tag_error" ];
111
+ 7 -> 11 [ label = "'\"'" ];
112
+ 7 -> 10 [ label = "'&' / pcdata_begin, 10:16" ];
113
+ 7 -> err_7 [ label = "'<' / tag_error" ];
114
+ 7 -> 8 [ label = "DEF / pcdata_begin, characters_begin" ];
115
+ 8 -> 9 [ label = "'\"' / characters_end, pcdata_end" ];
116
+ 8 -> 10 [ label = "'&' / characters_end, 10:16" ];
117
+ 8 -> err_8 [ label = "'<' / tag_error" ];
118
+ 8 -> 8 [ label = "DEF" ];
119
+ 9 -> 3 [ label = "'\\t'..'\\r', SP / attribute_value, attribute" ];
120
+ 9 -> 5 [ label = "'/' / attribute_value, attribute, tag_self_closing" ];
121
+ 9 -> 51 [ label = "'>' / attribute_value, attribute" ];
122
+ 9 -> err_9 [ label = "DEF / tag_error" ];
123
+ 10 -> 9 [ label = "'\"' / pcdata_end" ];
124
+ 10 -> 10 [ label = "'&' / 10:16" ];
125
+ 10 -> err_10 [ label = "'<' / tag_error" ];
126
+ 10 -> 8 [ label = "DEF / characters_begin" ];
127
+ 11 -> 3 [ label = "'\\t'..'\\r', SP / attribute_empty, attribute" ];
128
+ 11 -> 5 [ label = "'/' / attribute_empty, attribute, tag_self_closing" ];
129
+ 11 -> 51 [ label = "'>' / attribute_empty, attribute" ];
130
+ 11 -> err_11 [ label = "DEF / tag_error" ];
131
+ 12 -> 14 [ label = "'&' / pcdata_begin, 10:16" ];
132
+ 12 -> 11 [ label = "'''" ];
133
+ 12 -> err_12 [ label = "'<' / tag_error" ];
134
+ 12 -> 13 [ label = "DEF / pcdata_begin, characters_begin" ];
135
+ 13 -> 14 [ label = "'&' / characters_end, 10:16" ];
136
+ 13 -> 9 [ label = "''' / characters_end, pcdata_end" ];
137
+ 13 -> err_13 [ label = "'<' / tag_error" ];
138
+ 13 -> 13 [ label = "DEF" ];
139
+ 14 -> 14 [ label = "'&' / 10:16" ];
140
+ 14 -> 9 [ label = "''' / pcdata_end" ];
141
+ 14 -> err_14 [ label = "'<' / tag_error" ];
142
+ 14 -> 13 [ label = "DEF / characters_begin" ];
143
+ 15 -> 16 [ label = "'-'" ];
144
+ 15 -> 20 [ label = "'D'" ];
145
+ 15 -> 27 [ label = "'['" ];
146
+ 16 -> 17 [ label = "'-'" ];
147
+ 17 -> 18 [ label = "'-'" ];
148
+ 17 -> 17 [ label = "DEF" ];
149
+ 18 -> 19 [ label = "'-'" ];
150
+ 18 -> 17 [ label = "DEF" ];
151
+ 19 -> 19 [ label = "'-'" ];
152
+ 19 -> 52 [ label = "'>'" ];
153
+ 19 -> 17 [ label = "DEF" ];
154
+ 20 -> 21 [ label = "'O'" ];
155
+ 21 -> 22 [ label = "'C'" ];
156
+ 22 -> 23 [ label = "'T'" ];
157
+ 23 -> 24 [ label = "'Y'" ];
158
+ 24 -> 25 [ label = "'P'" ];
159
+ 25 -> 26 [ label = "'E'" ];
160
+ 26 -> 53 [ label = "'>'" ];
161
+ 26 -> 26 [ label = "DEF" ];
162
+ 27 -> 28 [ label = "'C'" ];
163
+ 28 -> 29 [ label = "'D'" ];
164
+ 29 -> 30 [ label = "'A'" ];
165
+ 30 -> 31 [ label = "'T'" ];
166
+ 31 -> 32 [ label = "'A'" ];
167
+ 32 -> 33 [ label = "'['" ];
168
+ 33 -> 34 [ label = "']'" ];
169
+ 33 -> 33 [ label = "DEF" ];
170
+ 34 -> 35 [ label = "']'" ];
171
+ 34 -> 33 [ label = "DEF" ];
172
+ 35 -> 54 [ label = "'>'" ];
173
+ 35 -> 35 [ label = "']'" ];
174
+ 35 -> 33 [ label = "DEF" ];
175
+ 36 -> err_36 [ label = "0..',', '/', ';'..'@', '['..'^', '`', '{'..127 / tag_error" ];
176
+ 36 -> 37 [ label = "DEF / identifier_begin" ];
177
+ 37 -> err_37 [ label = "0..',', '/', ';'..'=', '?'..'@', '['..'^', '`', '{'..127 / tag_error" ];
178
+ 37 -> 55 [ label = "'>' / identifier_end" ];
179
+ 37 -> 37 [ label = "DEF" ];
180
+ 38 -> err_38 [ label = "0..',', '/', ';'..'@', '['..'^', '`', '{'..127 / instruction_error" ];
181
+ 38 -> 39 [ label = "DEF / identifier_begin" ];
182
+ 39 -> err_39 [ label = "0..'\\b', 14..31, '!'..',', '/', ';'..'@', '['..'^', '`', '{'..127 / instruction_error" ];
183
+ 39 -> 40 [ label = "'\\t'..'\\r', SP / identifier_end, instruction_text_begin" ];
184
+ 39 -> 39 [ label = "DEF" ];
185
+ 40 -> 41 [ label = "'?' / instruction_text_end" ];
186
+ 40 -> 40 [ label = "DEF" ];
187
+ 41 -> 56 [ label = "'>'" ];
188
+ 41 -> 41 [ label = "'?' / instruction_text_end" ];
189
+ 41 -> 40 [ label = "DEF" ];
190
+ 42 -> 43 [ label = "'#'" ];
191
+ 42 -> 47 [ label = "'0'..'9', 'A'..'Z', 'a'..'z' / entity_begin" ];
192
+ 42 -> err_42 [ label = "DEF / entity_error" ];
193
+ 43 -> 44 [ label = "'0'..'9' / entity_begin" ];
194
+ 43 -> 45 [ label = "'x'" ];
195
+ 43 -> err_43 [ label = "DEF / entity_error" ];
196
+ 44 -> 44 [ label = "'0'..'9'" ];
197
+ 44 -> 57 [ label = "';' / entity_number, 8:5" ];
198
+ 44 -> err_44 [ label = "DEF / entity_error" ];
199
+ 45 -> 46 [ label = "'0'..'9', 'A'..'F', 'a'..'f' / entity_begin" ];
200
+ 45 -> err_45 [ label = "DEF / entity_error" ];
201
+ 46 -> 46 [ label = "'0'..'9', 'A'..'F', 'a'..'f'" ];
202
+ 46 -> 57 [ label = "';' / entity_hex, 8:5" ];
203
+ 46 -> err_46 [ label = "DEF / entity_error" ];
204
+ 47 -> 47 [ label = "'0'..'9', 'A'..'Z', 'a'..'z'" ];
205
+ 47 -> 57 [ label = "';' / entity_name, 8:5" ];
206
+ 47 -> err_47 [ label = "DEF / entity_error" ];
207
+ 48 -> 50 [ label = "'&' / text_begin, pcdata_begin, 10:16" ];
208
+ 48 -> 1 [ label = "'<' / tag_opening_begin, tag_closing_begin, instruction_begin, comment_begin, doctype_begin, cdata_begin" ];
209
+ 48 -> 49 [ label = "DEF / text_begin, pcdata_begin, characters_begin" ];
210
+ 49 -> 50 [ label = "'&' / characters_end, 10:16" ];
211
+ 49 -> 1 [ label = "'<' / characters_end, pcdata_end, text_end, tag_opening_begin, tag_closing_begin, instruction_begin, comment_begin, doctype_begin, cdata_begin" ];
212
+ 49 -> 49 [ label = "DEF" ];
213
+ 50 -> 50 [ label = "'&' / 10:16" ];
214
+ 50 -> 1 [ label = "'<' / pcdata_end, text_end, tag_opening_begin, tag_closing_begin, instruction_begin, comment_begin, doctype_begin, cdata_begin" ];
215
+ 50 -> 49 [ label = "DEF / characters_begin" ];
216
+ 51 -> 50 [ label = "'&' / tag_opening_end, text_begin, pcdata_begin, 10:16" ];
217
+ 51 -> 1 [ label = "'<' / tag_opening_end, tag_opening_begin, tag_closing_begin, instruction_begin, comment_begin, doctype_begin, cdata_begin" ];
218
+ 51 -> 49 [ label = "DEF / tag_opening_end, text_begin, pcdata_begin, characters_begin" ];
219
+ 52 -> 50 [ label = "'&' / comment_end, text_begin, pcdata_begin, 10:16" ];
220
+ 52 -> 1 [ label = "'<' / comment_end, tag_opening_begin, tag_closing_begin, instruction_begin, comment_begin, doctype_begin, cdata_begin" ];
221
+ 52 -> 49 [ label = "DEF / comment_end, text_begin, pcdata_begin, characters_begin" ];
222
+ 53 -> 50 [ label = "'&' / doctype_end, text_begin, pcdata_begin, 10:16" ];
223
+ 53 -> 1 [ label = "'<' / doctype_end, tag_opening_begin, tag_closing_begin, instruction_begin, comment_begin, doctype_begin, cdata_begin" ];
224
+ 53 -> 49 [ label = "DEF / doctype_end, text_begin, pcdata_begin, characters_begin" ];
225
+ 54 -> 50 [ label = "'&' / cdata_end, text_begin, pcdata_begin, 10:16" ];
226
+ 54 -> 1 [ label = "'<' / cdata_end, tag_opening_begin, tag_closing_begin, instruction_begin, comment_begin, doctype_begin, cdata_begin" ];
227
+ 54 -> 49 [ label = "DEF / cdata_end, text_begin, pcdata_begin, characters_begin" ];
228
+ 55 -> 50 [ label = "'&' / tag_closing_end, text_begin, pcdata_begin, 10:16" ];
229
+ 55 -> 1 [ label = "'<' / tag_closing_end, tag_opening_begin, tag_closing_begin, instruction_begin, comment_begin, doctype_begin, cdata_begin" ];
230
+ 55 -> 49 [ label = "DEF / tag_closing_end, text_begin, pcdata_begin, characters_begin" ];
231
+ 56 -> 50 [ label = "'&' / instruction_end, text_begin, pcdata_begin, 10:16" ];
232
+ 56 -> 1 [ label = "'<' / instruction_end, tag_opening_begin, tag_closing_begin, instruction_begin, comment_begin, doctype_begin, cdata_begin" ];
233
+ 56 -> 49 [ label = "DEF / instruction_end, text_begin, pcdata_begin, characters_begin" ];
234
+ ENTRY -> 48 [ label = "IN" ];
235
+ en_42 -> 42 [ label = "parse_entity" ];
236
+ en_48 -> 48 [ label = "main" ];
237
+ 1 -> eof_1 [ label = "EOF / tag_error" ];
238
+ 2 -> eof_2 [ label = "EOF / tag_error" ];
239
+ 3 -> eof_3 [ label = "EOF / tag_error" ];
240
+ 4 -> eof_4 [ label = "EOF / tag_error" ];
241
+ 5 -> eof_5 [ label = "EOF / tag_error" ];
242
+ 6 -> eof_6 [ label = "EOF / tag_error" ];
243
+ 7 -> eof_7 [ label = "EOF / tag_error" ];
244
+ 8 -> eof_8 [ label = "EOF / tag_error" ];
245
+ 9 -> eof_9 [ label = "EOF / tag_error" ];
246
+ 10 -> eof_10 [ label = "EOF / tag_error" ];
247
+ 11 -> eof_11 [ label = "EOF / tag_error" ];
248
+ 12 -> eof_12 [ label = "EOF / tag_error" ];
249
+ 13 -> eof_13 [ label = "EOF / tag_error" ];
250
+ 14 -> eof_14 [ label = "EOF / tag_error" ];
251
+ 17 -> eof_17 [ label = "EOF / comment_error" ];
252
+ 18 -> eof_18 [ label = "EOF / comment_error" ];
253
+ 19 -> eof_19 [ label = "EOF / comment_error" ];
254
+ 26 -> eof_26 [ label = "EOF / doctype_error" ];
255
+ 33 -> eof_33 [ label = "EOF / cdata_error" ];
256
+ 34 -> eof_34 [ label = "EOF / cdata_error" ];
257
+ 35 -> eof_35 [ label = "EOF / cdata_error" ];
258
+ 36 -> eof_36 [ label = "EOF / tag_error" ];
259
+ 37 -> eof_37 [ label = "EOF / tag_error" ];
260
+ 38 -> eof_38 [ label = "EOF / instruction_error" ];
261
+ 39 -> eof_39 [ label = "EOF / instruction_error" ];
262
+ 40 -> eof_40 [ label = "EOF / instruction_error" ];
263
+ 41 -> eof_41 [ label = "EOF / instruction_error" ];
264
+ 42 -> eof_42 [ label = "EOF / entity_error" ];
265
+ 43 -> eof_43 [ label = "EOF / entity_error" ];
266
+ 44 -> eof_44 [ label = "EOF / entity_error" ];
267
+ 45 -> eof_45 [ label = "EOF / entity_error" ];
268
+ 46 -> eof_46 [ label = "EOF / entity_error" ];
269
+ 47 -> eof_47 [ label = "EOF / entity_error" ];
270
+ 49 -> eof_49 [ label = "EOF / characters_end, pcdata_end, text_end" ];
271
+ 50 -> eof_50 [ label = "EOF / pcdata_end, text_end" ];
272
+ 51 -> eof_51 [ label = "EOF / tag_opening_end" ];
273
+ 52 -> eof_52 [ label = "EOF / comment_end" ];
274
+ 53 -> eof_53 [ label = "EOF / doctype_end" ];
275
+ 54 -> eof_54 [ label = "EOF / cdata_end" ];
276
+ 55 -> eof_55 [ label = "EOF / tag_closing_end" ];
277
+ 56 -> eof_56 [ label = "EOF / instruction_end" ];
278
+ }