27
|
1 # HG changeset patch
|
|
2 # Parent 33bf887e240c8c5aa843193ac5ec24663dc7eb8b
|
|
3 Add #include in template chunks
|
|
4
|
|
5 diff --git a/rathaxes/compiler/rtxParse/rtx.cwp b/rathaxes/compiler/rtxParse/rtx.cwp
|
|
6 --- a/rathaxes/compiler/rtxParse/rtx.cwp
|
|
7 +++ b/rathaxes/compiler/rtxParse/rtx.cwp
|
|
8 @@ -1,11 +1,22 @@
|
|
9 #include "cnorm.cwp"
|
|
10
|
|
11 +#ignore["rathaxes"] ::=
|
|
12 +[
|
|
13 + ["//" ->[['\r']? '\n']]
|
|
14 + | ["/*" ->"*/"]
|
|
15 + | ' '
|
|
16 + | '\t'
|
|
17 + | '\n'
|
|
18 + | '\r'
|
|
19 + | '\f' // form feed, sometimes Windows kernel headers have this character.
|
|
20 +]+:skip
|
|
21 +;
|
|
22 /* root of grammar */
|
|
23 #overload
|
|
24 translation_unit ::=
|
|
25 => traceLine("PARSE!");
|
|
26 #try
|
|
27 - #ignore
|
|
28 + #ignore("rathaxes")
|
|
29 #check(cnormNodeRoot(this))
|
|
30 [
|
|
31 rtx_declaration(this)
|
|
32 diff --git a/rathaxes/compiler/rtxParse/rtxBack.cwp b/rathaxes/compiler/rtxParse/rtxBack.cwp
|
|
33 --- a/rathaxes/compiler/rtxParse/rtxBack.cwp
|
|
34 +++ b/rathaxes/compiler/rtxParse/rtxBack.cwp
|
|
35 @@ -189,7 +189,32 @@
|
|
36 /* The two following lines prevent artefacts (by failing previous alternative) */
|
|
37 =>clearVariable(theBody);
|
|
38 #check(cnormNodeBlock(theBody))
|
|
39 - compound_statement(theBody)
|
|
40 + rtx_chunk_compound_statement(theBody)
|
|
41 +;
|
|
42 +
|
|
43 +rtx_chunk_compound_statement(theBlock : node) ::=
|
|
44 +'{'
|
|
45 +/**/ #check(cnormNodeBlock(theBlock, true))
|
|
46 + rtx_chunk_block_item_list(theBlock)
|
|
47 +'}'
|
|
48 +;
|
|
49 +
|
|
50 +rtx_chunk_block_item_list(theBlock : node) ::=
|
|
51 +[
|
|
52 + line_of_code(theBlock)
|
|
53 + | '#'
|
|
54 + [// TODO: Add Define with chunks variables detections/substitutions
|
|
55 + "include"
|
|
56 + [
|
|
57 + ['"' -> '"' | '<' -> '>' ]:sFile
|
|
58 + ]
|
|
59 +/**/ #pushItem(theBlock.block)
|
|
60 +/**/ => local lastNode;
|
|
61 +/**/ #check(cnormNodeBlock_GetLastNode(theBlock, lastNode))
|
|
62 +/**/ => local sData = "\n#include " + sFile + " \n";
|
|
63 +/**/ => cnormNode_Raw(lastNode, sData);
|
|
64 + ]
|
|
65 +]*
|
|
66 ;
|
|
67
|
|
68 rtx_stmt<"chunk">(theBlock : node) ::=
|
|
69 diff --git a/rathaxes/compiler/rtxTpl/rtxIntrospect.inc.cws b/rathaxes/compiler/rtxTpl/rtxIntrospect.inc.cws
|
|
70 --- a/rathaxes/compiler/rtxTpl/rtxIntrospect.inc.cws
|
|
71 +++ b/rathaxes/compiler/rtxTpl/rtxIntrospect.inc.cws
|
|
72 @@ -469,6 +469,10 @@
|
|
73 * Expression type code introspection function
|
|
74 *
|
|
75 */
|
|
76 +function rtxIntrospect_expr<"__raw__">(local_node : node, theChunk : node, blockIds : node)
|
|
77 +{/*nothing to do*/
|
|
78 +}
|
|
79 +
|
|
80 function rtxIntrospect_expr<"__terminal__">(local_node : node, theChunk : node,
|
|
81 blockIds : node)
|
|
82 {
|
|
83 diff --git a/rathaxes/samples/helloworld/main.blt b/rathaxes/samples/helloworld/main.blt
|
|
84 --- a/rathaxes/samples/helloworld/main.blt
|
|
85 +++ b/rathaxes/samples/helloworld/main.blt
|
|
86 @@ -44,7 +44,6 @@
|
|
87 {
|
|
88 chunk Main::include_headers
|
|
89 {
|
|
90 - /* Won't be printed because # is not supported yet */
|
|
91 #include <stdlib.h>
|
|
92 typedef int stdlib_include_stamp;
|
|
93 }
|