• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

polserver / polserver / 12956160445

24 Jan 2025 07:20PM UTC coverage: 58.017% (+0.05%) from 57.971%
12956160445

push

github

web-flow
moved remaining eprog2/3 methods to eprog (#752)

simplified Token

21 of 65 new or added lines in 4 files covered. (32.31%)

13 existing lines in 5 files now uncovered.

41375 of 71315 relevant lines covered (58.02%)

398443.96 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

16.81
/pol-core/bscript/tkn_strm.cpp
1
/** @file
2
 *
3
 * @par History
4
 */
5

6

7
#include <sstream>
8
#include <stddef.h>
9

10
#include "objmembers.h"
11
#include "objmethods.h"
12
#include "token.h"
13
#include "tokens.h"
14

15

16
namespace Pol
17
{
18
namespace Bscript
19
{
20
void Token::printOn( std::ostream& os ) const
187✔
21
{
22
  switch ( id )
187✔
23
  {
24
  case TOK_LONG:
41✔
25
    os << lval << "L";
41✔
26
    break;
41✔
27
  case TOK_DOUBLE:
×
28
    os << dval << "LF";
×
29
    break;
×
30
  case TOK_IDENT:
×
31
    os << token;
×
32
    break;
×
33
  case INS_ADDMEMBER2:
×
34
    os << "addmember(" << token << ")";
×
35
    break;
×
36
  case INS_ADDMEMBER_ASSIGN:
×
37
    os << "addmember-assign(" << token << ")";
×
38
    break;
×
39
  case TOK_STRING:
7✔
40
    os << '\"' << token << '\"';
7✔
41
    break;
7✔
42
  case TOK_LOCALVAR:
31✔
43
    os << "local #" << lval;
31✔
44
    if ( !token.empty() )
31✔
45
      os << " (" << token << ")";
×
46
    break;
31✔
47
  case TOK_GLOBALVAR:
12✔
48
    os << "global #" << lval;
12✔
49
    if ( !token.empty() )
12✔
50
      os << " (" << token << ")";
×
51
    break;
12✔
52

53
  case TOK_ERROR:
4✔
54
    os << "error";
4✔
55
    break;
4✔
56
  case TOK_DICTIONARY:
×
57
    os << "dictionary";
×
58
    break;
×
59

60
  case TOK_MULT:
×
61
    os << "*";
×
62
    break;
×
63
  case TOK_DIV:
×
64
    os << "/";
×
65
    break;
×
66
  case TOK_ADD:
×
67
    os << "+";
×
68
    break;
×
69

70
  case TOK_INSERTINTO:
×
71
    os << "init{}";
×
72
    break;
×
73
  case TOK_SUBTRACT:
×
74
    os << "-";
×
75
    break;
×
76
  case TOK_PLUSEQUAL:
×
77
    os << "+=";
×
78
    break;
×
79
  case TOK_MINUSEQUAL:
×
80
    os << "-=";
×
81
    break;
×
82
  case TOK_TIMESEQUAL:
×
83
    os << "*=";
×
84
    break;
×
85
  case TOK_DIVIDEEQUAL:
×
86
    os << "/=";
×
87
    break;
×
88
  case TOK_MODULUSEQUAL:
×
89
    os << "%=";
×
90
    break;
×
91

92
  case TOK_ASSIGN:
3✔
93
    os << ":=";
3✔
94
    break;
3✔
95
  case INS_ASSIGN_LOCALVAR:
3✔
96
    os << "local" << lval;
3✔
97
    if ( !token.empty() )
3✔
98
      os << " (" << token << ")";
×
99
    os << " := ";
3✔
100
    break;
3✔
101
  case INS_ASSIGN_GLOBALVAR:
×
102
    os << "global" << lval;
×
NEW
103
    if ( !token.empty() )
×
104
      os << " (" << token << ")";
×
105
    os << " := ";
×
106
    break;
×
107
  case INS_ASSIGN_CONSUME:
×
108
    os << ":= #";
×
109
    break;
×
110
  case INS_SUBSCRIPT_ASSIGN_CONSUME:
×
111
    os << "[] := (" << lval << ") #";
×
112
    break;
×
113
  case INS_SUBSCRIPT_ASSIGN:
×
114
    os << "[] := (" << lval << ")";
×
115
    break;
×
116
  case TOK_LESSTHAN:
×
117
    os << "<";
×
118
    break;
×
119
  case TOK_LESSEQ:
×
120
    os << "<=";
×
121
    break;
×
122
  case TOK_GRTHAN:
×
123
    os << ">";
×
124
    break;
×
125
  case TOK_GREQ:
×
126
    os << ">=";
×
127
    break;
×
128
  case TOK_EQUAL1:
×
129
    os << "=";
×
130
    break;
×
131
  case TOK_EQUAL:
4✔
132
    os << "==";
4✔
133
    break;
4✔
134
  case TOK_NEQ:
×
135
    os << "<>";
×
136
    break;
×
137
  case TOK_AND:
×
138
    os << "&&";
×
139
    break;
×
140
  case TOK_OR:
×
141
    os << "||";
×
142
    break;
×
143
  case TOK_ARRAY_SUBSCRIPT:
2✔
144
    os << "[] " << lval;
2✔
145
    break;
2✔
146
  case INS_MULTISUBSCRIPT:
×
147
    os << "[";
×
148
    for ( int i = 1; i < lval; ++i )
×
149
      os << ",";
×
150
    os << "]";
×
151
    break;
×
152
  case INS_MULTISUBSCRIPT_ASSIGN:
×
153
    os << "[";
×
154
    for ( int i = 1; i < lval; ++i )
×
155
      os << ",";
×
156
    os << "] :=";
×
157
    break;
×
158
  case TOK_ADDMEMBER:
×
159
    os << ".+";
×
160
    break;
×
161
  case TOK_DELMEMBER:
×
162
    os << ".-";
×
163
    break;
×
164
  case TOK_CHKMEMBER:
×
165
    os << ".?";
×
166
    break;
×
167
  case TOK_MEMBER:
×
168
    os << ".";
×
169
    break;
×
170
  case INS_GET_MEMBER:
×
171
    os << "get member '" << token << "'";
×
172
    break;
×
173
  case INS_SET_MEMBER:
×
174
    os << "set member '" << token << "'";
×
175
    break;
×
176
  case INS_SET_MEMBER_CONSUME:
×
177
    os << "set member '" << token << "' #";
×
178
    break;
×
179
  case INS_GET_MEMBER_ID:
14✔
180
    os << "get member id '" << getObjMember( lval )->code << "' (" << lval << ")";
14✔
181
    break;
14✔
182
  case INS_SET_MEMBER_ID:
×
183
    os << "set member id '" << getObjMember( lval )->code << "' (" << lval << ")";
×
184
    break;
×
185
  case INS_SET_MEMBER_ID_CONSUME:
×
186
    os << "set member id '" << getObjMember( lval )->code << "' (" << lval << ") #";
×
187
    break;
×
188
  case INS_SET_MEMBER_ID_CONSUME_PLUSEQUAL:
×
189
    os << "set member id '" << getObjMember( lval )->code << "' (" << lval << ")  += #";
×
190
    break;
×
191
  case INS_SET_MEMBER_ID_CONSUME_MINUSEQUAL:
×
192
    os << "set member id '" << getObjMember( lval )->code << "' (" << lval << ")  -= #";
×
193
    break;
×
194
  case INS_SET_MEMBER_ID_CONSUME_TIMESEQUAL:
×
195
    os << "set member id '" << getObjMember( lval )->code << "' (" << lval << ")  *= #";
×
196
    break;
×
197
  case INS_SET_MEMBER_ID_CONSUME_DIVIDEEQUAL:
×
198
    os << "set member id '" << getObjMember( lval )->code << "' (" << lval << ")  /= #";
×
199
    break;
×
200
  case INS_SET_MEMBER_ID_CONSUME_MODULUSEQUAL:
×
201
    os << "set member id '" << getObjMember( lval )->code << "' (" << lval << ")  %= #";
×
202
    break;
×
203

204
  case INS_CALL_METHOD_ID:
7✔
205
    os << "Call Method id " << getObjMethod( lval )->code << " (#" << lval << ", "
7✔
206
       << static_cast<int>( type ) << " params)";
7✔
207
    break;
7✔
208
  case TOK_IN:
×
209
    os << "in";
×
210
    break;
×
211
  case INS_DICTIONARY_ADDMEMBER:
×
212
    os << "add dictionary member";
×
213
    break;
×
214

215
  case TOK_UNPLUS:
×
216
    os << "unary +";
×
217
    break;
×
218
  case TOK_UNMINUS:
×
219
    os << "unary -";
×
220
    break;
×
221
  case TOK_LOG_NOT:
×
222
    os << "!";
×
223
    break;
×
224
  case TOK_CONSUMER:
16✔
225
    os << "#";
16✔
226
    break;
16✔
227
  case TOK_REFTO:
×
228
    os << "refto";
×
229
    break;
×
230
  case TOK_UNUSED:
×
231
    os << "unused";
×
232
    break;
×
233
  case TOK_BITAND:
×
234
    os << "&";
×
235
    break;
×
236
  case TOK_BITOR:
×
237
    os << "|";
×
238
    break;
×
239
  case TOK_BSRIGHT:
×
240
    os << ">>";
×
241
    break;
×
242
  case TOK_BSLEFT:
×
243
    os << "<<";
×
244
    break;
×
245
  case TOK_BITXOR:
×
246
    os << "^";
×
247
    break;
×
248
  case TOK_BITWISE_NOT:
×
249
    os << "~";
×
250
    break;
×
251
  case TOK_MODULUS:
×
252
    os << "%";
×
253
    break;
×
254

255
  case INS_INITFOREACH:
4✔
256
    os << "initforeach @" << lval;
4✔
257
    break;
4✔
258
  case INS_STEPFOREACH:
3✔
259
    os << "stepforeach @" << lval;
3✔
260
    break;
3✔
261
  case INS_CASEJMP:
×
262
    os << "casejmp";
×
263
    break;
×
264
  case INS_INITFOR:
4✔
265
    os << "initfor @" << lval;
4✔
266
    break;
4✔
267
  case INS_NEXTFOR:
2✔
268
    os << "nextfor @" << lval;
2✔
269
    break;
2✔
270

271
  case TOK_TERM:
×
272
    os << "Terminator";
×
273
    break;
×
274

275
  case TOK_LPAREN:
×
276
    os << "(";
×
277
    break;
×
278
  case TOK_RPAREN:
×
279
    os << ")";
×
280
    break;
×
281
  case TOK_LBRACKET:
×
282
    os << "[";
×
283
    break;
×
284
  case TOK_RBRACKET:
×
285
    os << "]";
×
286
    break;
×
287
  case TOK_LBRACE:
×
288
    os << "{";
×
289
    break;
×
290
  case TOK_RBRACE:
×
291
    os << "}";
×
292
    break;
×
293

294
  case RSV_JMPIFTRUE:
2✔
295
    os << "if true goto " << lval;
2✔
296
    break;
2✔
297
  case RSV_JMPIFFALSE:
5✔
298
    os << "if false goto " << lval;
5✔
299
    break;
5✔
300
  case RSV_ST_IF:
×
301
    os << "if";
×
302
    break;
×
303
  case RSV_GOTO:
6✔
304
    os << "goto " << lval;
6✔
305
    break;
6✔
306
  case RSV_GOSUB:
×
307
    os << "gosub" << lval;
×
308
    break;
×
309
  case RSV_EXIT:
×
310
    os << "exit";
×
311
    break;
×
312
  case RSV_RETURN:
×
313
    os << "return";
×
314
    break;
×
315
  case RSV_LOCAL:
1✔
316
    os << "decl local #" << lval;
1✔
317
    break;
1✔
318
  case RSV_GLOBAL:
×
319
    os << "decl global #" << lval;
×
320
    break;
×
321
  case RSV_VAR:
×
322
    os << "var";
×
323
    break;
×
324
  case RSV_CONST:
×
325
    os << "const";
×
326
    break;
×
327
  case RSV_FUNCTION:
×
328
    os << "function";
×
329
    break;
×
330
  case RSV_ENDFUNCTION:
×
331
    os << "endfunction";
×
332
    break;
×
333
  case RSV_DO:
×
334
    os << "do";
×
335
    break;
×
336
  case RSV_DOWHILE:
×
337
    os << "dowhile";
×
338
    break;
×
339
  case RSV_WHILE:
×
340
    os << "while";
×
341
    break;
×
342
  case RSV_ENDWHILE:
×
343
    os << "endwhile";
×
344
    break;
×
345
  case RSV_REPEAT:
×
346
    os << "repeat";
×
347
    break;
×
348
  case RSV_UNTIL:
×
349
    os << "until";
×
350
    break;
×
351
  case RSV_FOR:
×
352
    os << "for";
×
353
    break;
×
354
  case RSV_ENDFOR:
×
355
    os << "endfor";
×
356
    break;
×
357
  case RSV_FOREACH:
×
358
    os << "foreach";
×
359
    break;
×
360
  case RSV_ENDFOREACH:
×
361
    os << "endforeach";
×
362
    break;
×
363
  case INS_DECLARE_ARRAY:
×
364
    os << "declare array";
×
365
    break;
×
366
  case TOK_ARRAY:
×
367
    os << "array";
×
368
    break;
×
369
  case TOK_STRUCT:
×
370
    os << "struct";
×
371
    break;
×
372
  case TOK_CLASSINST:
×
373
    os << "class instance #" << lval;
×
374
    break;
×
375
  case INS_UNINIT:
×
376
    os << "uninit";
×
377
    break;
×
378
  case RSV_USE_MODULE:
×
379
    os << "use module";
×
380
    break;
×
381
  case RSV_INCLUDE_FILE:
×
382
    os << "include file";
×
383
    break;
×
384

385
  case CTRL_LABEL:
×
386
    os << token << ":";
×
387
    break;
×
388

389
  case TOK_COMMA:
×
390
    os << "','";
×
391
    break;
×
392
  case TOK_SEMICOLON:
×
393
    os << "';'";
×
394
    break;
×
395

396
  case CTRL_STATEMENTBEGIN:
×
NEW
397
    os << "[" << ( !token.empty() ? token : "--source not available--" ) << "]";
×
398
    break;
×
399
  case CTRL_PROGEND:
×
400
    os << "progend";
×
401
    break;
×
402
  case CTRL_MAKELOCAL:
×
403
    os << "makelocal";
×
404
    break;
×
405
  case CTRL_JSR_USERFUNC:
×
406
    os << "jmp userfunc @" << lval;
×
407
    break;
×
408
  case INS_CHECK_MRO:
×
409
    os << "check mro (this at offset " << lval << ")";
×
410
    break;
×
411
  case INS_POP_PARAM_BYREF:
×
412
    os << "pop param byref '" << token << "'";
×
413
    break;
×
414
  case INS_POP_PARAM:
×
415
    os << "pop param '" << token << "'";
×
416
    break;
×
417
  case INS_GET_ARG:
×
418
    os << "get arg '" << token << "'";
×
419
    break;
×
420
  case CTRL_LEAVE_BLOCK:
4✔
421
    os << "leave block(" << lval << ")";
4✔
422
    break;
4✔
423

424
  case INS_CALL_METHOD:
×
425
    os << "Call Method " << token << " (" << lval << " params)";
×
426
    break;
×
427
  case TOK_USERFUNC:
×
NEW
428
    os << "User Function " << ( !token.empty() ? token : "--function name not available--" );
×
429
    break;
×
430
  case TOK_FUNCREF:
×
NEW
431
    os << "Function Ref " << ( !token.empty() ? token : "--function name not available--" ) << "@"
×
NEW
432
       << lval;
×
433
    break;
×
434
  case TOK_UNPLUSPLUS:
×
435
    os << "unary ++";
×
436
    break;
×
437
  case TOK_UNMINUSMINUS:
×
438
    os << "unary --";
×
439
    break;
×
440
  case TOK_UNPLUSPLUS_POST:
×
441
    os << "unary ++ post";
×
442
    break;
×
443
  case TOK_UNMINUSMINUS_POST:
×
444
    os << "unary -- post";
×
445
    break;
×
446
  case INS_SET_MEMBER_ID_UNPLUSPLUS:
×
447
    os << "set member id '" << getObjMember( lval )->code << "' unary ++";
×
448
    break;
×
449
  case INS_SET_MEMBER_ID_UNMINUSMINUS:
×
450
    os << "set member id '" << getObjMember( lval )->code << "' unary --";
×
451
    break;
×
452
  case INS_SET_MEMBER_ID_UNPLUSPLUS_POST:
×
453
    os << "set member id '" << getObjMember( lval )->code << "' unary ++ post";
×
454
    break;
×
455
  case INS_SET_MEMBER_ID_UNMINUSMINUS_POST:
×
456
    os << "set member id '" << getObjMember( lval )->code << "' unary -- post";
×
457
    break;
×
458
  case INS_SKIPIFTRUE_ELSE_CONSUME:
×
459
    os << "peek at top of stack; skip " << lval << " instructions if true, otherwise consume it";
×
460
    break;
×
461
  case RSV_COLON:
×
462
    os << "':'";
×
463
    break;
×
464
  case RSV_PROGRAM:
×
465
    os << "program";
×
466
    break;
×
467
  case RSV_ENDPROGRAM:
×
468
    os << "endprogram";
×
469
    break;
×
470
  case RSV_ENUM:
×
471
    os << "enum";
×
472
    break;
×
473
  case RSV_ENDENUM:
×
474
    os << "endenum";
×
475
    break;
×
476
  case RSV_ELVIS:
×
477
    os << "?: (elvis)";
×
478
    break;
×
479
  case TOK_INTERPOLATE_STRING:
×
480
    os << "interpolate string "
481
       << "(" << lval << "parts)";
×
482
    break;
×
483
  case TOK_FORMAT_EXPRESSION:
×
484
    os << "format expression";
×
485
    break;
×
486

487

488
  case TOK_FUNC:
12✔
489
  {
490
    os << "Func(" << (int)module << "," << lval << "): ";
12✔
491
    if ( !token.empty() )
12✔
492
      os << token;
12✔
493
    else
494
      os << "<unknown>";
×
495
    return;
12✔
496
  }
497

498
  default:
×
499
    os << "Unknown Token: (" << int( id ) << "," << int( type );
×
NEW
500
    if ( !token.empty() )
×
501
      os << ",'" << token << "'";
×
502
    os << ")";
×
503
    break;
×
504
  }
505
}
506

507
std::ostream& operator<<( std::ostream& os, const Token& tok )
187✔
508
{
509
  tok.printOn( os );
187✔
510
  return os;
187✔
511
}
512
}  // namespace Bscript
513
}  // namespace Pol
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc