MCPcopy Create free account
hub / github.com/Singular/Singular / Transform

Function Transform

ppcc/src/parser.cc:454–519  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

452}
453
454TokenList *Transform(SourceFile *source) {
455 Parser *parser = new Parser(source);
456 Arr<int> *toplevel = new Arr<int>();
457 int tl = 0;
458 while (parser->current().sym != SymEOF) {
459 parser->skip_until(SymsSpecial);
460 parser->push_marked();
461 bool is_toplevel = IsToplevel(toplevel);
462 switch (parser->current().sym) {
463 case SymVAR:
464 TransformVarDecl(parser, decl_var,
465 false, is_toplevel, NormalDecl);
466 break;
467 case SymEXTERN_VAR:
468 parser->current().str = decl_extern_var;
469 parser->advance();
470 parser->push_marked();
471 break;
472 case SymSTATIC_VAR:
473 TransformVarDecl(parser, decl_static_var,
474 false, is_toplevel, StaticDecl);
475 break;
476 case SymINST_VAR:
477 TransformVarDecl(parser, decl_var,
478 true, is_toplevel, NormalDecl);
479 break;
480 case SymEXTERN_INST_VAR:
481 TransformVarDecl(parser, decl_extern_var,
482 true, is_toplevel, ExternDecl);
483 break;
484 case SymSTATIC_INST_VAR:
485 TransformVarDecl(parser, decl_static_var,
486 true, is_toplevel, StaticDecl);
487 break;
488 case SymExtern:
489 parser->advance();
490 if (parser->current().sym != SymLiteral)
491 break;
492 if (!parser->current().str->eq("\"C\""))
493 break;
494 tl = 1;
495 break;
496 case SymNamespace:
497 tl = 1;
498 parser->advance();
499 break;
500 case SymLBrace:
501 toplevel->add(tl);
502 parser->advance();
503 break;
504 case SymRBrace:
505 if (toplevel->len() > 0)
506 toplevel->pop();
507 tl = 0;
508 parser->advance();
509 break;
510 case SymEOF:
511 break;

Callers 2

TestPreProcessorFunction · 0.85
RunPreProcessorFunction · 0.85

Calls 12

IsToplevelFunction · 0.85
TransformVarDeclFunction · 0.85
assertFunction · 0.85
EmitEpilogueFunction · 0.85
skip_untilMethod · 0.80
push_markedMethod · 0.80
advanceMethod · 0.80
eqMethod · 0.45
addMethod · 0.45
lenMethod · 0.45
popMethod · 0.45
cloneMethod · 0.45

Tested by 1

TestPreProcessorFunction · 0.68