mirror of
https://github.com/zrax/pycdc.git
synced 2026-06-23 11:34:07 +00:00
(Plus some whitespace cleanup) commitca30277743Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Thu Jun 1 14:55:26 2023 -0400 Test commit1764514e1dAuthor: TheHellTower <dontbeshybuddy@gmail.com> Date: Thu Jun 1 14:46:49 2023 -0400 Semi-Support commit104fa62355Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Thu Jun 1 14:46:30 2023 -0400 Semi-Support commit0809a71c72Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Thu Jun 1 14:46:11 2023 -0400 Semi-Support commitbdf1695a57Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Thu Jun 1 00:06:34 2023 -0400 Updated Test commitea69a0b3beAuthor: TheHellTower <dontbeshybuddy@gmail.com> Date: Thu Jun 1 00:06:23 2023 -0400 Updated Test commitecde214620Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Thu Jun 1 00:06:12 2023 -0400 Updated Test commitd5bbbe6224Author: TheHellTower <thehelltower@tuta.io> Date: Wed May 31 23:59:46 2023 -0400 Feat: @zrax Co-authored-by: Michael Hansen <zrax0111@gmail.com> commitf8d2299d14Author: TheHellTower <thehelltower@tuta.io> Date: Wed May 31 23:59:03 2023 -0400 Feat: @zrax Co-authored-by: Michael Hansen <zrax0111@gmail.com> commit3fa8691f4cAuthor: TheHellTower <thehelltower@tuta.io> Date: Wed May 31 23:58:53 2023 -0400 Feat: @zrax Co-authored-by: Michael Hansen <zrax0111@gmail.com> commit6af17f0cffAuthor: TheHellTower <thehelltower@tuta.io> Date: Wed May 31 23:58:45 2023 -0400 Feat: @zrax Co-authored-by: Michael Hansen <zrax0111@gmail.com> commitc7c76097fcAuthor: TheHellTower <thehelltower@tuta.io> Date: Wed May 31 16:55:20 2023 -0400 Remove `iostream` commit2edaec022fAuthor: TheHellTower <thehelltower@tuta.io> Date: Wed May 31 16:54:48 2023 -0400 Mistake commita36d4c5e62Author: TheHellTower <thehelltower@tuta.io> Date: Wed May 31 16:52:12 2023 -0400 Remove `iostream` commit1c3a5b02c9Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Wed May 31 16:43:30 2023 -0400 Should be a bit better commit11603f1bb2Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Wed May 31 04:07:47 2023 -0400 Update commit689b544fc1Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Wed May 31 04:07:38 2023 -0400 Update commit20bc5b820fAuthor: TheHellTower <dontbeshybuddy@gmail.com> Date: Wed May 31 04:07:24 2023 -0400 Update commitc01e8251faAuthor: TheHellTower <dontbeshybuddy@gmail.com> Date: Wed May 31 04:05:28 2023 -0400 Format problem ? commitf35c494dd0Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Wed May 31 04:02:03 2023 -0400 Fix commit7f3265e419Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Mon May 29 00:57:01 2023 -0400 BINARY_OP | Simplified commit045a6041f7Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Mon May 29 00:56:53 2023 -0400 BINARY_OP | Simplified commit0bfb76280eAuthor: TheHellTower <dontbeshybuddy@gmail.com> Date: Mon May 29 00:56:41 2023 -0400 BINARY_OP | Simplified commit31159d69e8Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Mon May 29 00:50:19 2023 -0400 Fix Matching... commite4a978aeadAuthor: TheHellTower <dontbeshybuddy@gmail.com> Date: Mon May 29 00:50:06 2023 -0400 Fix Matching... commitd7a1b25b8fAuthor: TheHellTower <thehelltower@tuta.io> Date: Mon May 29 00:41:43 2023 -0400 Add `BINARY_OP` support commit6527299a67Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Mon May 29 00:40:32 2023 -0400 Add `BINARY_OP` test tokenized commitc053cab789Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Mon May 29 00:40:11 2023 -0400 Add `BINARY_OP` test commite32f006f90Author: TheHellTower <dontbeshybuddy@gmail.com> Date: Mon May 29 00:39:53 2023 -0400 Add `BINARY_OP` test compiled Closes #333 Closes #348 Co-authored-by: TheHellTower <dontbeshybuddy@gmail.com>
141 lines
2.9 KiB
C++
141 lines
2.9 KiB
C++
#include "ASTNode.h"
|
|
|
|
/* ASTNodeList */
|
|
void ASTNodeList::removeLast()
|
|
{
|
|
list_t::iterator it = m_nodes.end();
|
|
--it;
|
|
m_nodes.erase(it);
|
|
}
|
|
|
|
void ASTNodeList::removeFirst()
|
|
{
|
|
m_nodes.erase(m_nodes.cbegin());
|
|
}
|
|
|
|
|
|
/* ASTUnary */
|
|
const char* ASTUnary::op_str() const
|
|
{
|
|
static const char* s_op_strings[] = {
|
|
"+", "-", "~", "not "
|
|
};
|
|
return s_op_strings[op()];
|
|
}
|
|
|
|
|
|
/* ASTBinary */
|
|
const char* ASTBinary::op_str() const
|
|
{
|
|
static const char* s_op_strings[] = {
|
|
".", " ** ", " * ", " / ", " // ", " % ", " + ", " - ",
|
|
" << ", " >> ", " & ", " ^ ", " | ", " and ", " or ", " @ ",
|
|
" += ", " -= ", " *= ", " /= ", " %= ", " **= ", " <<= ",
|
|
" >>= ", " &= ", " ^= ", " |= ", " //= ", " @= ", " <INVALID> "
|
|
|
|
};
|
|
return s_op_strings[op()];
|
|
}
|
|
|
|
ASTBinary::BinOp ASTBinary::getBinOpFromOperand(int operand)
|
|
{
|
|
switch (operand) {
|
|
case 0:
|
|
return BIN_ADD;
|
|
case 1:
|
|
return BIN_AND;
|
|
case 2:
|
|
return BIN_FLOOR;
|
|
case 3:
|
|
return BIN_LSHIFT;
|
|
case 4:
|
|
return BIN_MAT_MULTIPLY;
|
|
case 5:
|
|
return BIN_MULTIPLY;
|
|
case 6:
|
|
return BIN_MODULO;
|
|
case 7:
|
|
return BIN_OR;
|
|
case 8:
|
|
return BIN_POWER;
|
|
case 9:
|
|
return BIN_RSHIFT;
|
|
case 10:
|
|
return BIN_SUBTRACT;
|
|
case 11:
|
|
return BIN_DIVIDE;
|
|
case 12:
|
|
return BIN_XOR;
|
|
case 13:
|
|
return BIN_IP_ADD;
|
|
case 14:
|
|
return BIN_IP_AND;
|
|
case 15:
|
|
return BIN_IP_FLOOR;
|
|
case 16:
|
|
return BIN_IP_LSHIFT;
|
|
case 17:
|
|
return BIN_MAT_MULTIPLY;
|
|
case 18:
|
|
return BIN_IP_MULTIPLY;
|
|
case 19:
|
|
return BIN_IP_MODULO;
|
|
case 20:
|
|
return BIN_IP_OR;
|
|
case 21:
|
|
return BIN_IP_POWER;
|
|
case 22:
|
|
return BIN_IP_RSHIFT;
|
|
case 23:
|
|
return BIN_IP_SUBTRACT;
|
|
case 24:
|
|
return BIN_IP_DIVIDE;
|
|
case 25:
|
|
return BIN_IP_XOR;
|
|
default:
|
|
return BIN_INVALID; // Return BIN_INVALID for out-of-range operand
|
|
}
|
|
}
|
|
|
|
/* ASTCompare */
|
|
const char* ASTCompare::op_str() const
|
|
{
|
|
static const char* s_cmp_strings[] = {
|
|
" < ", " <= ", " == ", " != ", " > ", " >= ", " in ", " not in ", " is ", " is not ",
|
|
"<EXCEPTION MATCH>", "<BAD>"
|
|
};
|
|
return s_cmp_strings[op()];
|
|
}
|
|
|
|
|
|
/* ASTKeyword */
|
|
const char* ASTKeyword::word_str() const
|
|
{
|
|
static const char* s_word_strings[] = {
|
|
"pass", "break", "continue"
|
|
};
|
|
return s_word_strings[key()];
|
|
}
|
|
|
|
|
|
/* ASTBlock */
|
|
void ASTBlock::removeLast()
|
|
{
|
|
list_t::iterator it = m_nodes.end();
|
|
--it;
|
|
m_nodes.erase(it);
|
|
}
|
|
|
|
void ASTBlock::removeFirst()
|
|
{
|
|
m_nodes.erase(m_nodes.begin());
|
|
}
|
|
|
|
const char* ASTBlock::type_str() const
|
|
{
|
|
static const char* s_type_strings[] = {
|
|
"", "if", "else", "elif", "try", "CONTAINER", "except",
|
|
"finally", "while", "for", "with", "async for"
|
|
};
|
|
return s_type_strings[blktype()];
|
|
}
|