ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
case_else.c
Go to the documentation of this file.
1/*****************************************************************************
2 * ugBASIC - an isomorphic BASIC language compiler for retrocomputers *
3 *****************************************************************************
4 * Copyright 2021-2026 Marco Spedaletti (asimov@mclink.it)
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *----------------------------------------------------------------------------
18 * Concesso in licenza secondo i termini della Licenza Apache, versione 2.0
19 * (la "Licenza"); è proibito usare questo file se non in conformità alla
20 * Licenza. Una copia della Licenza è disponibile all'indirizzo:
21 *
22 * http://www.apache.org/licenses/LICENSE-2.0
23 *
24 * Se non richiesto dalla legislazione vigente o concordato per iscritto,
25 * il software distribuito nei termini della Licenza è distribuito
26 * "COSÌ COM'È", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o
27 * implicite. Consultare la Licenza per il testo specifico che regola le
28 * autorizzazioni e le limitazioni previste dalla medesima.
29 ****************************************************************************/
30
31/****************************************************************************
32 * INCLUDE SECTION
33 ****************************************************************************/
34
35#include "../../ugbc.h"
36
37/****************************************************************************
38 * CODE SECTION
39 ****************************************************************************/
40
49/* <usermanual>
50@keyword CASE ELSE
51
52@english
53
54The ''CASE ELSE'' command is part of ''SELECT...ENDSELECT'' construct.
55It is optional and is executed if none of the previous cases are true.
56The code will be executed up to the ''ENDSELECT'' instruction.
57
58@italian
59
60Il comando ''CASE ELSE'' fa parte della costruzione ''SELECT...ENDSELECT''.
61È facoltativo e viene eseguito se nessuno dei casi precedenti è vero.
62Il codice verrà eseguito fino all'istruzione ''ENDSELECT''.
63
64@syntax CASE ELSE
65
66@example SELECT CASE answer
67@example CASE 42
68@example PRINT "The answer!"
69@example CASE ELSE
70@example PRINT "I am still thinking..."
71@example ENDSELECT
72
73@seeAlso SELECT CASE
74@seeAlso CASE
75@seeAlso ENDSELECT
76
77</usermanual> */
78void case_else( Environment * _environment ) {
79
80 Conditional * conditional = _environment->conditionals;
81
82 if ( ! conditional ) {
84 }
85
86 if ( conditional->type != CT_SELECT_CASE ) {
88 }
89
90 if ( conditional->caseElse ) {
92 }
93 conditional->caseElse = 1;
94
95}
void case_else(Environment *_environment)
Emit ASM code for CASE ELSE.
Definition case_else.c:78
int caseElse
Definition ugbc.h:1375
ConditionalType type
Definition ugbc.h:1363
Conditional * conditionals
Definition ugbc.h:2664
#define CRITICAL_CASE_ELSE_ALREADY_EMITTED()
Definition ugbc.h:3740
@ CT_SELECT_CASE
Definition ugbc.h:1348
#define CRITICAL_CASE_ELSE_WITHOUT_SELECT_CASE()
Definition ugbc.h:3597
struct _Environment Environment
Structure of compilation environment.
struct _Conditional Conditional
Structure of a single conditional jump.