Última atividade 1748752843

capitalex's Avatar capitalex revisou este gist 1748752843. Ir para a revisão

1 file changed, 16 insertions, 14 deletions

hello-world.inlang.nils.nv

@@ -132,12 +132,14 @@ intended to be written by hand."
132 132 |:: unbind|
133 133
134 134
135 - |:: done :rule: 1 :failed:| :: rule 2
136 - |:: done :rule: 2 :failed:| :: rule 3
137 - |:: done :rule: 3 :failed:| :: rule 4
138 - |:: done :rule: $x :failed:?|
139 - |:: done :rule: $x| :: rule 1
135 + |:: done :failed:| :: next rule :: ;
136 + |:: done| :: reset rules :: rule :: ;
140 137
138 + |:: reset rules :rule: ;|
139 + |:: reset rules? :rule:|
140 +
141 + |:: next rule :rule: ;| :: rule
142 + |:: next rule :rule:| :: next rule :: rule
141 143
142 144 |:: jet @stdio write/1 :failed:?|
143 145 |:: jet @stdio write/1 :@registers result: $symbol|
@@ -146,8 +148,8 @@ intended to be written by hand."
146 148 :@registers: fetch 1
147 149
148 150 |:/:| :: print message :message: "Hello, World!"
149 - |:: rule 0|
150 - :rule: 0
151 + |:: ;|
152 + :rule: ;
151 153 :: push .arity 2 :: push .1 print :: push .2 message
152 154 :: push message.arity 1 :: push message.1 33
153 155 :: push message.arity 1 :: push message.1 100
@@ -166,8 +168,8 @@ intended to be written by hand."
166 168
167 169 |:@stdio: write $char|
168 170 :@jet: "io.write(string.char(tonumber($char)))"
169 - |:: rule 1|
170 - :rule: 1
171 + |:: rule :: ;|
172 + :rule: :rule: ;
171 173 :: match 2 at top of @stdio.arity :: match write at top of @stdio.1 :: bind @stdio.2 1
172 174 :: consume @stdio.arity
173 175 :: consume @stdio.1
@@ -178,8 +180,8 @@ intended to be written by hand."
178 180
179 181 |:: print message? :message: $char|
180 182 :@stdio: write $char
181 - |:: rule 2|
182 - :rule: 2
183 + |:: rule :: rule :: ;|
184 + :rule: :rule: :rule: ;
183 185 :: match 2 at top of .arity :: match print at top of .1 :: match message at top of .2
184 186 :: match 1 at top of message.arity :: bind message.1 1
185 187 :: consume .arity :: consume .1 :: consume .2
@@ -192,8 +194,8 @@ intended to be written by hand."
192 194
193 195 |:: print message|
194 196 :@stdio: write 10
195 - |:: rule 3|
196 - :rule: 3
197 + |:: rule :: rule :: rule :: ;|
198 + :rule: :rule: :rule: :rule: ;
197 199 :: match 2 at top of .arity :: match print at top of .1 :: match message at top of .2
198 200 :: consume .arity :: consume .1 :: consume .2
199 201 :: push @stdio.arity 2 :: push @stdio.1 write :: push @stdio.2 10
@@ -201,4 +203,4 @@ intended to be written by hand."
201 203 :: done
202 204
203 205
204 - || :: rule 0
206 + || :: ;

capitalex's Avatar capitalex revisou este gist 1748737252. Ir para a revisão

1 file changed, 204 insertions

hello-world.inlang.nils.nv(arquivo criado)

@@ -0,0 +1,204 @@
1 + |:: documentation for NILS Form|
2 + :@doc string:
3 + "Nova In-Language Static Form is a possible structure for lowering
4 + Nova code into a bytecode language describable in Nova. This is not
5 + intended to be written by hand."
6 +
7 + |:@data stack: reset? :@data seen: $stack $value|
8 + :@data: $stack $value
9 + |:@data stack: reset|
10 +
11 + |:@data stack: push $stack $value|
12 + :@data: $stack $value
13 +
14 + |:@data stack: pop $stack :@data: $stack $value|
15 + :@data stack: reset
16 + :@data result: $value
17 + |:@data stack: pop $stack? :@data: $x $y|
18 + :@data seen: $x $y
19 + |:@data stack: pop $stack|
20 + :@data stack: reset
21 + :@data result: empty
22 +
23 + |:@data stack: peek $stack :@data: $stack $value?|
24 + :@data stack: reset
25 + :@data result: $value
26 + |:@data stack: peek $stack? :@data: $x $y|
27 + :@data seen: $x $y
28 + |:@data stack: peek $stack|
29 + :@data stack: reset
30 + :@data result: empty
31 +
32 +
33 + |:@retained stack: reset? :@retained seen: $stack $value|
34 + :@retained: $stack $value
35 + |:@retained stack: reset|
36 +
37 + |:@retained stack: push $stack $value|
38 + :@retained: $stack $value
39 +
40 + |:@retained stack: pop $stack :@retained: $stack $value|
41 + :@retained stack: reset
42 + :@retained result: $value
43 + |:@retained stack: pop $stack? :@retained: $x $y|
44 + :@retained seen: $x $y
45 + |:@retained stack: pop $stack|
46 + :@retained stack: reset
47 + :@retained result: empty
48 +
49 + |:@retained stack: peek $stack :@retained: $stack $value?|
50 + :@retained stack: reset
51 + :@retained result: $value
52 + |:@retained stack: peek $stack? :@retained: $x $y|
53 + :@retained seen: $x $y
54 + |:@retained stack: peek $stack|
55 + :@retained stack: reset
56 + :@retained result: empty
57 +
58 +
59 + |:@registers: reset :@reg seen: $reg $value|
60 + :@reg: $reg $value
61 + |:@registers: reset|
62 +
63 + |:@registers: store $register $value :@reg: $register $other-value|
64 + :@registers: reset
65 + :@reg: $register $value
66 + |:@registers: store $register $value :@reg: $other-register $other-value|
67 + :@reg seen: $other-register $other-value
68 + |:@registers: store $register $value|
69 + :@reg: $register $value
70 +
71 + |:@registers: fetch $register :@reg: $register $value?|
72 + :@registers: reset
73 + :@registers result: $value
74 + |:@registers: fetch $register :@reg: $other-register $other-value|
75 + :seen @reg: $other-register $other-value
76 + |:@registers: fetch $register|
77 + :@registers: reset
78 + :@registers result: empty
79 +
80 + |:@registers: clear $register :@reg: $register $value|
81 + :@registers: reset
82 + |:@registers: clear $register :@reg: $other-register $value|
83 + :@registers seen: $other-register $value
84 + |:@registers: clear $register|
85 +
86 +
87 +
88 + |:: match $symbol at top of $stack :failed:?|
89 + |:: match $symbol at top of $stack :@data result: $symbol|
90 + :@retained stack: push $stack $symbol
91 + |:: match $symbol at top of $stack :@data result: $wrong-symbol|
92 + :@data stack: push $stack $wrong-symbol :failed:
93 + |:: match $symbol at top of $stack :@data result: empty|
94 + :failed:
95 + |:: match $symbol at top of $stack?|
96 + :@data stack: pop $stack
97 +
98 + |:: bind $stack $reg :failed:?|
99 + |:: bind $stack $reg :@registers result: $empty :@data result: $symbol|
100 + :@retained stack: push $stack $symbol
101 + :@registers: store $reg $symbol
102 + |:: bind $stack $reg :@register result: $symbol :@data result: $symbol|
103 + :@retained stack: push $stack $symbol
104 + |:: bind $stack $reg :@register result: $symbol :@data result: $different-symbol|
105 + :failed: :@data stack: push $stack $different-symbol
106 + |:: bind $stack $reg?|
107 + :@registers: fetch $reg
108 + :@data stack: pop $stack
109 +
110 +
111 + |:: consume $stack :failed:? :@retained result: empty|
112 + |:: consume $stack :failed:? :@retained result: $value|
113 + :@data stack: push $stack $value
114 + |:: consume $stack :@retained result: $_|
115 + |:: consume $stack?|
116 + :@retained stack: pop $stack
117 +
118 +
119 + |:: push $stack $symbol :failed:?|
120 + |:: push $stack $symbol|
121 + :@data stack: push $stack $symbol
122 +
123 +
124 + |:: pushvar $stack $reg :failed:?|
125 + |:: pushvar $stack $reg :@registers result: $value|
126 + :@data stack: push $stack $value
127 + |:: pushvar $stack $reg?|
128 + :@registers: fetch $reg
129 +
130 +
131 + |:: unbind $reg| :@registers: clear $reg
132 + |:: unbind|
133 +
134 +
135 + |:: done :rule: 1 :failed:| :: rule 2
136 + |:: done :rule: 2 :failed:| :: rule 3
137 + |:: done :rule: 3 :failed:| :: rule 4
138 + |:: done :rule: $x :failed:?|
139 + |:: done :rule: $x| :: rule 1
140 +
141 +
142 + |:: jet @stdio write/1 :failed:?|
143 + |:: jet @stdio write/1 :@registers result: $symbol|
144 + :@jet: "io.write(string.char(tonumber($symbol)))"
145 + |:: jet @stdio write/1?|
146 + :@registers: fetch 1
147 +
148 + |:/:| :: print message :message: "Hello, World!"
149 + |:: rule 0|
150 + :rule: 0
151 + :: push .arity 2 :: push .1 print :: push .2 message
152 + :: push message.arity 1 :: push message.1 33
153 + :: push message.arity 1 :: push message.1 100
154 + :: push message.arity 1 :: push message.1 108
155 + :: push message.arity 1 :: push message.1 114
156 + :: push message.arity 1 :: push message.1 111
157 + :: push message.arity 1 :: push message.1 87
158 + :: push message.arity 1 :: push message.1 32
159 + :: push message.arity 1 :: push message.1 44
160 + :: push message.arity 1 :: push message.1 111
161 + :: push message.arity 1 :: push message.1 108
162 + :: push message.arity 1 :: push message.1 108
163 + :: push message.arity 1 :: push message.1 101
164 + :: push message.arity 1 :: push message.1 72
165 + :: done
166 +
167 + |:@stdio: write $char|
168 + :@jet: "io.write(string.char(tonumber($char)))"
169 + |:: rule 1|
170 + :rule: 1
171 + :: match 2 at top of @stdio.arity :: match write at top of @stdio.1 :: bind @stdio.2 1
172 + :: consume @stdio.arity
173 + :: consume @stdio.1
174 + :: consume @stdio.2
175 + :: jet @stdio write/1
176 + :: unbind 1
177 + :: done
178 +
179 + |:: print message? :message: $char|
180 + :@stdio: write $char
181 + |:: rule 2|
182 + :rule: 2
183 + :: match 2 at top of .arity :: match print at top of .1 :: match message at top of .2
184 + :: match 1 at top of message.arity :: bind message.1 1
185 + :: consume .arity :: consume .1 :: consume .2
186 + :: consume message.arity :: consume message.1
187 + :: push @stdio.arity 2 :: push @stdio.1 write :: pushvar @stdio.2 1
188 + :: push .arity 2 :: push .1 print :: push .2 message
189 + :: unbind 1
190 + :: done
191 +
192 +
193 + |:: print message|
194 + :@stdio: write 10
195 + |:: rule 3|
196 + :rule: 3
197 + :: match 2 at top of .arity :: match print at top of .1 :: match message at top of .2
198 + :: consume .arity :: consume .1 :: consume .2
199 + :: push @stdio.arity 2 :: push @stdio.1 write :: push @stdio.2 10
200 + :: unbind 1
201 + :: done
202 +
203 +
204 + || :: rule 0
Próximo Anterior