aboutsummaryrefslogtreecommitdiff
path: root/doc/docs/pt-br
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2026-02-15 05:49:13 +0000
committerLi Jin <dragon-fly@qq.com>2026-02-15 07:36:30 +0000
commitcf5b1b4a68d762e6e33cac8367611ecea15fa942 (patch)
tree25de1a4113d26882c0135e38b7ff166efbc39969 /doc/docs/pt-br
parentecd8f3bfd07e91d04e0a2d72f4a50f9cc6c75433 (diff)
downloadyuescript-cf5b1b4a68d762e6e33cac8367611ecea15fa942.tar.gz
yuescript-cf5b1b4a68d762e6e33cac8367611ecea15fa942.tar.bz2
yuescript-cf5b1b4a68d762e6e33cac8367611ecea15fa942.zip
Add goto statement documentation and tests
- Added goto.md documentation files in all languages (en, de, zh, pt-br, id-id) - Updated conditionals.md to include goto statement references - Updated VitePress config to include new goto documentation pages - Updated makefile for goto documentation compilation - Added test outputs for goto examples in all languages - Updated yue.cpp core implementation Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'doc/docs/pt-br')
-rw-r--r--doc/docs/pt-br/doc/control-flow/conditionals.md58
-rw-r--r--doc/docs/pt-br/doc/control-flow/goto.md106
2 files changed, 164 insertions, 0 deletions
diff --git a/doc/docs/pt-br/doc/control-flow/conditionals.md b/doc/docs/pt-br/doc/control-flow/conditionals.md
index bc12d4e..ce32d89 100644
--- a/doc/docs/pt-br/doc/control-flow/conditionals.md
+++ b/doc/docs/pt-br/doc/control-flow/conditionals.md
@@ -143,3 +143,61 @@ if a in list
143``` 143```
144 144
145</YueDisplay> 145</YueDisplay>
146
147O operador `in` também pode ser usado com tabelas e suporta a variante `not in` para negação:
148
149```yuescript
150has = "foo" in {"bar", "foo"}
151
152if a in {1, 2, 3}
153 print "a está na tabela"
154
155not_exist = item not in list
156
157check = -> value not in table
158```
159
160<YueDisplay>
161
162```yue
163has = "foo" in {"bar", "foo"}
164
165if a in {1, 2, 3}
166 print "a está na tabela"
167
168not_exist = item not in list
169
170check = -> value not in table
171```
172
173</YueDisplay>
174
175Uma lista ou tabela de único elemento verifica igualdade com esse elemento:
176
177```yuescript
178-- [1,] verifica se valor == 1
179c = a in [1,]
180
181-- {1} também verifica se valor == 1
182c = a in {1}
183
184-- Sem vírgula, [1] é acesso por índice (tb[1])
185with tb
186 c = a in [1]
187```
188
189<YueDisplay>
190
191```yue
192-- [1,] verifica se valor == 1
193c = a in [1,]
194
195-- {1} também verifica se valor == 1
196c = a in {1}
197
198-- Sem vírgula, [1] é acesso por índice (tb[1])
199with tb
200 c = a in [1]
201```
202
203</YueDisplay>
diff --git a/doc/docs/pt-br/doc/control-flow/goto.md b/doc/docs/pt-br/doc/control-flow/goto.md
new file mode 100644
index 0000000..f4c85f4
--- /dev/null
+++ b/doc/docs/pt-br/doc/control-flow/goto.md
@@ -0,0 +1,106 @@
1# Goto
2
3YueScript suporta a instrução goto e a sintaxe de rótulos para controlar o fluxo do programa, seguindo as mesmas regras da instrução goto do Lua. **Nota:** A instrução goto requer Lua 5.2 ou superior. Ao compilar para Lua 5.1, o uso da sintaxe goto resultará em um erro de compilação.
4
5Um rótulo é definido usando dois pontos duplos:
6
7```yuescript
8::inicio::
9::fim::
10::meu_rotulo::
11```
12
13<YueDisplay>
14
15```yue
16::inicio::
17::fim::
18::meu_rotulo::
19```
20
21</YueDisplay>
22
23A instrução goto salta para um rótulo especificado:
24
25```yuescript
26a = 0
27::inicio::
28a += 1
29goto fim if a == 5
30goto inicio
31::fim::
32print "a agora é 5"
33```
34
35<YueDisplay>
36
37```yue
38a = 0
39::inicio::
40a += 1
41goto fim if a == 5
42goto inicio
43::fim::
44print "a agora é 5"
45```
46
47</YueDisplay>
48
49A instrução goto é útil para sair de laços profundamente aninhados:
50
51```yuescript
52for z = 1, 10
53 for y = 1, 10 do for x = 1, 10
54 if x^2 + y^2 == z^2
55 print 'triplo pitagórico encontrado:', x, y, z
56 goto ok
57::ok::
58```
59
60<YueDisplay>
61
62```yue
63for z = 1, 10
64 for y = 1, 10 do for x = 1, 10
65 if x^2 + y^2 == z^2
66 print 'triplo pitagórico encontrado:', x, y, z
67 goto ok
68::ok::
69```
70
71</YueDisplay>
72
73Você também pode usar rótulos para pular para um nível específico de laço:
74
75```yuescript
76for z = 1, 10
77 for y = 1, 10
78 for x = 1, 10
79 if x^2 + y^2 == z^2
80 print 'triplo pitagórico encontrado:', x, y, z
81 print 'tentando próximo z...'
82 goto zcontinue
83 ::zcontinue::
84```
85
86<YueDisplay>
87
88```yue
89for z = 1, 10
90 for y = 1, 10
91 for x = 1, 10
92 if x^2 + y^2 == z^2
93 print 'triplo pitagórico encontrado:', x, y, z
94 print 'tentando próximo z...'
95 goto zcontinue
96 ::zcontinue::
97```
98
99</YueDisplay>
100
101## Notas
102
103- Rótulos devem ser únicos dentro de seu escopo
104- goto pode pular para rótulos nos mesmos níveis de escopo ou externos
105- goto não pode pular para escopos internos (como dentro de blocos ou laços)
106- Use goto com moderação, pois pode tornar o código mais difícil de ler e manter