adding cs235

This commit is contained in:
dm
2016-04-06 20:46:10 -07:00
parent 8e52ce1982
commit cf99ec6565
178 changed files with 13079 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
#pragma once
#include <iostream>
#include <string>
#include <stack>
using namespace std;
class ExpressionManagerInterface
{
public:
ExpressionManagerInterface(){}
virtual ~ExpressionManagerInterface(){}
/*
* Checks whether an expression is balanced on its parentheses
*
* - The given expression will have a space between every number or operator
*
* @return true if expression is balanced
* @return false otherwise
*/
virtual bool isBalanced(string expression) = 0;
/**
* Converts a postfix expression into an infix expression
* and returns the infix expression.
*
* - The given postfix expression will have a space between every number or operator.
* - The returned infix expression must have a space between every number or operator.
* - Redundant parentheses are acceptable i.e. ( ( 3 * 4 ) + 5 ).
* - Check lab requirements for what will be considered invalid.
*
* return the string "invalid" if postfixExpression is not a valid postfix expression.
* otherwise, return the correct infix expression as a string.
*/
virtual string postfixToInfix(string postfixExpression) = 0;
/*
* Converts an infix expression into a postfix expression
* and returns the postfix expression
*
* - The given infix expression will have a space between every number or operator.
* - The returned postfix expression must have a space between every number or operator.
* - Check lab requirements for what will be considered invalid.
*
* return the string "invalid" if infixExpression is not a valid infix expression.
* otherwise, return the correct postfix expression as a string.
*/
virtual string infixToPostfix(string infixExpression) = 0;
/*
* Evaluates a postfix expression returns the result as a string
*
* - The given postfix expression will have a space between every number or operator.
* - Check lab requirements for what will be considered invalid.
*
* return the string "invalid" if postfixExpression is not a valid postfix Expression
* otherwise, return the correct evaluation as a string
*/
virtual string postfixEvaluate(string postfixExpression) = 0;
};
+22
View File
@@ -0,0 +1,22 @@
#include "Factory.h"
#include "expman.h"
//You may add #include statments here
using namespace std;
/*
Unlike all other documents provided, you may modify this document slightly (but do not change its name)
*/
//=======================================================================================
/*
createManager()
Creates and returns an object whose class extends ExpressionManagerInterface.
This should be an object of a class you have created.
Example: If you made a class called "ExpressionManager", you might say, "return new ExpressionManager();".
*/
ExpressionManagerInterface* Factory::createManager()
{
return new expman();//Modify this line
}
//=======================================================================================
+22
View File
@@ -0,0 +1,22 @@
#pragma once
#include "ExpressionManagerInterface.h"
using namespace std;
/*
WARNING: It is expressly forbidden to modify any part of this document, including its name
*/
//=======================================================================================
/*
createExpressionManager()
Creates and returns an object whose class extends ExpressionManagerInterface.
This should be an object of a class you have created.
Example: If you made a class called "ExpressionManager", you might say, "return new ExpressionManager();".
*/
class Factory
{
public:
static ExpressionManagerInterface * createManager();
};
//=======================================================================================
+35
View File
@@ -0,0 +1,35 @@
CXXFLAGS= -Wall -g -std=c++0x
OBJECTS=Factory.o expman.o pwnd.o ignoreme.a
EXE=main
all: pwnd.o $(EXE) test
$(EXE): $(OBJECTS)
$(CXX) $(CXXFLAGS) $(OBJECTS) -o $@
main.o: main.cpp Factory.o expman.o pwnd.o ignoreme.a
Factory.o: Factory.cpp Factory.h
expman.o: expman.cpp expman.h
pwnd.o: pwnd.c
test: test.cc expman.o
run: main
./main
rtest: test
./test
clean:
@rm -vf *.o
@rm -vf $(EXE)
@rm -vf *.1
@rm -vf *.0
@rm -vf test
@rm -rvf *.dSYM
drun: main
gdb ./main
debug: test
gdb ./test
valgrind: $(EXE)
valgrind --tool=memcheck --leak-check=yes ./$(EXE)
+32
View File
@@ -0,0 +1,32 @@
TITLE TA Test Driver
@echo off
rem setting up environment variables needed for VS compiler
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86_amd64
rem compiling the .obj
cl /EHsc /Fedont_run_me.exe Student_Code\*.cpp ignoreme.lib
rem if compilation failed, goto error section
if ERRORLEVEL 1 goto error
rem cleanup unnecessary generated files
del *.obj
rem run the driver in another window
.\dont_run_me.exe
del dont_run_me.exe
pause
exit
:error
rem remove any generated files
del *.obj
echo ----------ERROR--------
pause
exit
+7
View File
@@ -0,0 +1,7 @@
import sys
from shunting import shunt
for line in sys.stdin:
print shunt(line.split())
+274
View File
@@ -0,0 +1,274 @@
#include "expman.h"
#include <cctype>
const string OPEN = "([{";
const string CLOSE = ")]}";
bool is_open(char ch) {
return OPEN.find(ch) != string::npos;
}
bool is_close(char ch) {
return CLOSE.find(ch) != string::npos;
}
int precedence(string ch) {
int status;
if(ch == "(") {
status = -1;
}
if(ch == ")") {
status = -1;
}
if(ch == "+" or ch == "-")
status = 2;
if(ch == "*" or ch == "/")
status = 3;
return status;
}
void process_operator(string ch, stack<string> & operator_stack, string & postfix) {
cout << ch << " this is ch" << endl;
if(operator_stack.empty()) {
operator_stack.push(ch);
return;
}
if(ch == ")") {
bool validity = true;
while(validity) {
postfix += operator_stack.top();
postfix += " ";
operator_stack.pop();
if(operator_stack.top() == "(") {
operator_stack.pop();
validity = false;
}
}
}
else {
if(precedence(ch) > precedence(operator_stack.top())) {
operator_stack.push(ch);
}
else {
while(!operator_stack.empty() and (precedence(ch) <= precedence(operator_stack.top()))) {
postfix += operator_stack.top();
postfix += " ";
operator_stack.pop();
}
operator_stack.push(ch);
}
}
}
bool is_operator(string token) {
if(token.size() != 1) {
return false;
}
if(token == "+" or
token == "-" or
token == "/" or
token == "*" or
token == "^" or
token == "(" or
token == ")") {
return true;
}
return false;
}
bool is_int(string token) {
if(token == "") {
return false;
}
for(unsigned int i = 0; i < token.size(); i++) {
if(!isdigit(token[i])) {
return false;
}
}
return true;
}
bool is_valid_token(string token) {
if(!is_int(token) and !is_operator(token) and !is_paren(token)) {
return false;
}
return true;
}
bool is_paren(string token) {
if(token == "(" or
token == "{" or
token == "[" or
token == ")" or
token == "}" or
token == "]") {
return true;
}
return false;
}
bool is_valid_expression(string expression) {
stack<string> temp = parse_expression(expression);
while(!temp.empty()) {
if(not is_valid_token(temp.top())) {
return false;
}
temp.pop();
}
return true;
}
bool expman::isBalanced(string expression) {
stack<char> s;
bool balanced = true;
string::const_iterator iter = expression.begin();
while(balanced && (iter != expression.end())) {
char next_ch = *iter;
if(is_open(next_ch)) {
s.push(next_ch);
}
else if(is_close(next_ch)) {
if(s.empty()) {
balanced = false;
}
else {
char top_ch = s.top();
s.pop();
balanced = OPEN.find(top_ch) == CLOSE.find(next_ch);
}
}
++iter;
}
return balanced && s.empty();
}
string expman::postfixToInfix(string postfixExpression) {
cout << postfixExpression << endl;
if(!isBalanced(postfixExpression))
return "invalid";
if(!is_valid_expression(postfixExpression))
return "invalid";
return "h";
}
string expman::infixToPostfix(string infixExpression) {
cout << infixExpression << endl;
if(!isBalanced(infixExpression))
return "invalid";
if(!is_valid_expression(infixExpression))
return "invalid";
stack<string> operator_stack;
stack<string> expression = parse_expression(infixExpression);
expression = reverse_stack(expression);
string postfix;
while(!expression.empty()) {
if(is_int(expression.top())) {
postfix += expression.top();
postfix += " ";
expression.pop();
}
else if(is_operator(expression.top())) {
process_operator(expression.top(), operator_stack, postfix);
expression.pop();
}
else if(is_paren(expression.top())) {
expression.pop();
}
}
while(!operator_stack.empty()) {
postfix += operator_stack.top();
postfix += " ";
operator_stack.pop();
}
cout << postfix << " final postfix" << endl;
return postfix;
}
string expman::postfixEvaluate(string postfixExpression) {
cout << postfixExpression.size() << " size of string" << endl;
if(!isBalanced(postfixExpression)) {
cout << "not balanced" << endl;
return "invalid";
}
if(!is_valid_expression(postfixExpression)) {
cout << "invalide character" << endl;
return "invalid";
}
stack<string> expression = parse_expression(postfixExpression);
if(expression.size() == 1) {
cout << "this is here" << endl;
return postfixExpression;
}
stack<string> numbers;
expression = reverse_stack(expression);
while(!expression.empty()) {
if(is_int(expression.top())) {
numbers.push(expression.top());
expression.pop();
}
else if(is_operator(expression.top())) {
if(numbers.empty()) {
return "invalid";
}
string r = numbers.top();
string l = numbers.top();
numbers.pop();
numbers.pop();
int left = atoi(l.c_str());
int right = atoi(r.c_str());
int result;
if(expression.top() == "+") {
result = left + right;
}
else if(expression.top() == "-") {
result = left - right;
}
else if(expression.top() == "*") {
result = left * right;
}
else if(expression.top()== "/") {
if(left == 0) {
return "invalid";
}
else {
result = right / left;
}
}
expression.pop();
stringstream ss;
ss << result;
numbers.push(ss.str());
}
}
return numbers.top();
}
stack<string> reverse_stack(stack<string> s) {
stack<string> r;
while(!s.empty()) {
r.push(s.top());
s.pop();
}
return r;
}
stack<string> parse_expression(string expression) {
stack<string> results;
string s;
for(unsigned int i = 0; i < expression.length(); i++) {
char c = expression[i];
if(c != ' ') {
s += c;
}
else {
if(s != "") {
results.push(s);
s.clear();
}
}
}
if(s != "") {
results.push(s);
}
return results;
}
+28
View File
@@ -0,0 +1,28 @@
#ifndef __EXPMAN_H__
#define __EXPMAN_H__
#include <iostream>
#include <stack>
#include <vector>
#include <cstdlib>
#include <sstream>
#include <string>
#include "ExpressionManagerInterface.h"
using namespace std;
class expman : public ExpressionManagerInterface {
public:
bool isBalanced(string expression);
string postfixToInfix(string postfixExpression);
string infixToPostfix(string infixExpression);
string postfixEvaluate(string postfixExpression);
};
int precedence(string ch);
bool is_paren(string token);
bool is_int(string token);
bool is_valid_expression(string token);
bool is_valid_token(string token);
stack<string> reverse_stack(stack<string>);
stack<string> parse_expression(string);
#endif
Binary file not shown.
+165
View File
@@ -0,0 +1,165 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0063)http://students.cs.byu.edu/~cs235headta/homework/labs.php?lab=4 -->
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>CS 235 - Labs</title>
<link rel="stylesheet" type="text/css" href="./lab04_files/main.css">
<link rel="stylesheet" type="text/css" href="./lab04_files/labs.css">
</head>
<body>
<div id="header">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="http://students.cs.byu.edu/~cs235headta/index.php"><img src="./lab04_files/title.png" alt="Computer Science 235" class="centered" border="0" height="77"></a>
</div>
<div id="sidebar">
<div id="menu">
<h2>Information</h2>
<ul>
<li><a href="http://students.cs.byu.edu/~cs235headta/index.php">Announcements</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/information/ta_schedule.php">TA Schedule</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/information/personnel.php">Personnel</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/information/view_grades.php">View Grades</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/information/syllabus.php">Syllabus</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/homework/labs.php?lab=0">Orientation</a></li>
</ul>
</div>
<div id="menu">
<h2>Homework</h2>
<ul>
<li><a href="http://students.cs.byu.edu/~cs235headta/homework/labs.php?lab=1">Labs</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/homework/course_schedule.php">Course Schedule</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/homework/cover_sheets.php">Cover Sheets</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/homework/submit_exam.php">Submit Exam</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/homework/help_passoff.php">Help / Passoff</a></li>
</ul>
</div>
<div id="menu">
<h2>Reference</h2>
<ul>
<li><a href="http://students.cs.byu.edu/~cs235headta/reference/lecture_slides.php">Lecture Slides</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/reference/book_examples.php">Book Examples</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/reference/vs_guide.php">Visual Studio Guide</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/reference/eclipse_guide.php">Eclipse/Linux Guide</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/reference/msdn.php">MSDN Academic Alliance</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/reference/exam_guide.php">Exam Guide</a></li>
<li><a href="http://www.cplusplus.com/reference/">C++ Reference</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/reference/javacpp.php">Java vs. C++</a></li>
</ul>
</div>
<div id="menu">
<h2>Software</h2>
<ul>
<li><a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express"> Visual Studio</a>
</li></ul>
</div>
</div>
<div id="page">
<div id="content">
<script type="text/javascript">
function redirectLab(lab) {
window.location = "labs.php?lab=" + lab;
}
</script>
<h2>Lab 4</h2>
<form action="" method="get" name="changeLab">
<select name="lab" onchange="redirectLab(document.changeLab.lab.value);">
<option value="0" selected="">Select a Lab:</option>
<option value="0">Orientation</option>
<option value="1">Lab 1</option>
<option value="2">Lab 2</option>
<option value="3">Lab 3</option>
<option value="4" selected="selected">Lab 4</option>
<option value="5">Lab 5</option>
<option value="6">Lab 6</option>
<option value="7">Lab 7</option>
<option value="8">Lab 8</option>
<option value="9">Lab 9</option>
<option value="10">Lab 10</option>
</select>
</form>
<div class="infoBox">
<h3>Purpose</h3>
<p>To become familiarized with the use of stacks as data structures.</p>
<h3>Key Reading</h3>
<ul>
<li>5.1-5.4</li>
</ul>
<h3>Background</h3>
<p>Develop an Expression Manager that performs several operations on infix and postfix expressions. Be able to convert from one form to the other, evaluate postfix expressions, and check for balanced parenthetical expressions.</p>
<p>You may also refer to Edsger Dijkstra's "Shunting-yard algorithm" for additional help, which can be viewed <a href="http://en.wikipedia.org/wiki/Shunting_yard_algorithm" target="_blank">here</a>.</p>
<h3>Requirements</h3>
<p>You will need <a href="http://students.cs.byu.edu/~cs235headta/homework/student_files/Lab3ShuntingYard.zip">these files</a> to complete the assignment. Details for method constraints are found in these documents and are still a part of the requirements. (If downloaded before 9/17, 2:00 pm re-download. There are errors that were fixed that will cause the driver to break on working code.)</p>
<p>Extend the <code>ExpressionManagerInterface.h</code>.</p>
<p></p>
<h4>Part 1 - Balanced Symbols Check (10 points)</h4>
<ul>
<li>Determine and report whether an expression is balanced. { [ } ] is not balanced. [ ( ) ] is balanced and valid</li>
</ul>
<h4>Part 2 - Infix to Postfix Conversion (10 points)</h4>
<ul>
<li>Alert the user if the given infix expression is not valid</li>
<li>Convert the infix expression into a postfix expression and display the postfix expression</li>
</ul>
<h4>Part 3 - Postfix to Infix Conversion (10 points)</h4>
<ul>
<li>Alert the user if the given postfix expression is not valid</li>
<li>Convert the postfix expression into an infix expression and display the infix expression</li>
</ul>
<h4>Part 4 - Postfix Expression Evaluation (10 points)</h4>
<ul>
<li>Alert the user if the given postfix expression is not valid</li>
<li>Evaluate the given postfix expression and display the result</li>
<li>Handle attempts to divide by 0</li>
</ul>
<h3>Requirement Notes</h3>
<h4>General</h4>
<ul>
<li>Valid expressions consist of integers; brackets, braces, and parentheses; and +, -, *, /, and %. Reject any invalid expressions and inform the user.</li>
<li>Your calculations should perform integer divison and produce integer results</li>
<li>Valid expressions also need to satisfy standard infix or postfix requirements</li>
<li>{,},(,),[, and ] are the only symbols considered for the Balanced Symbols Check</li>
<li>Your program should allow the user to repeat the activities</li>
<li>You can assume there will be a space between every number or operator</li>
<li>You must put parenthesis '()' around every part of the expression during the postfix to infix conversion. i.e. "4 2 5 + *" = "( 4 *( 2 + 5 ) )"</li>
<li>You must use the stack class pre-defined in the C++ Standard Template Library (STL). i.e. <code>#include &lt;stack&gt;</code></li>
</ul>
<h4>Test Cases</h4>
<ul>
<li>The expressions in the test files will be written with one complete expression on each line. Available below are small test files you may use to test your program for pass off on each part.
This is not a comprehensive set of tests, but it should familiarize you with the format and give you ideas for additional test cases you can add. Your program must display the result of the selected
operation for each of the expressions in the file.
<ul>
<li><a href="http://students.cs.byu.edu/~cs235headta/homework/student_files/part1.txt">Part1.txt</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/homework/student_files/part2.txt">Part2.txt</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/homework/student_files/part3.txt">Part3.txt</a></li>
<li><a href="http://students.cs.byu.edu/~cs235headta/homework/student_files/part4.txt">Part4.txt</a></li>
</ul>
</li>
</ul>
</div> </div>
</div>
</body><link rel="stylesheet" type="text/css" href="data:text/css,"></html>
+13
View File
@@ -0,0 +1,13 @@
form {
position: absolute;
left: 1015px;
top: 85px;
}
pre {
border: 1px solid #666;
background-color: #ddd;
padding: 15px;
}
h3 {
text-decoration: underline;
}
+344
View File
@@ -0,0 +1,344 @@
body {
background: #fff url(../imgs/background.jpg) repeat-y left top;
font-size: 14px;
/*text-align: justify;*/
color: #000000;
}
body, th, td, input, textarea, select, option {
font-family: "Trebuchet MS", Helvetica, Arial, sans-serif;/*, "Times New Roman", Arial, Times, serif;*/
}
h1, h2, h3 {
text-transform: uppercase;
font-family: Arial, Helvetica, sans-serif;
font-weight: normal;
color: #1C1C1C;
}
h1 {
letter-spacing: -2px;
font-size: 3em;
}
h2 {
letter-spacing: -1px;
font-size: 2em;
}
h3 {
font-size: 1.4em;
font-weight: bold;
}
h4 {
font-size: 1.2em;
}
p, ul, ol {
line-height: 150%;
}
blockquote {
padding-left: 1em;
}
blockquote p, blockquote ul, blockquote ol {
line-height: normal;
font-style: italic;
}
a {
color: #030a36;
font-weight: bold;
}
hr {
display: none;
}
/* Header */
#header {
width: 100%;
height: 75px;
margin: 0 left;
margin-bottom: 20px;
text-transform: uppercase;
font-family: Arial, Helvetica, sans-serif;
background-color: #999;
background-image: -webkit-gradient(linear, left top, left bottom, from(#ddd), to(#999));
background-image: -moz-linear-gradient(-90deg, #ddd, #999);
}
#header h1, #header p {
margin: 0;
padding: 0;
}
#header h1 {
float: left;
padding: 5px 0 0 320px;
color: #F79F1A;
font-size: 36px;
text-align: center;
}
#header p {
float: left;
padding: 17px 0 0 5px;
font-size: 12px;
font-weight: bold;
color: #EEEEEE;
}
#header a {
text-decoration: none;
color: #F79F1A;
}
/* Page */
#page {
width: 1100px;
margin: 0 left;
}
/* Content */
#content {
float: right;
width: 800px;
margin: 0;
}
#content img {
float: left;
margin-right: 15px;
}
.post {
padding: 5px 0 0 0;
}
.title {
padding: 0 20px 0 20px;
font-size: 24px;
}
.title a {
text-decoration: none;
}
.pagetitle {
}
.byline {
margin: -30px 20px 0 20px;
color: #646464;
}
.meta {
border-bottom: 10px solid #EEEEEE;
text-align: right;
color: #646464;
padding: 10px 20px 20px 20px;
text-transform: uppercase;
font-family: Arial, Helvetica, sans-serif;
font-size: 10px;
}
.meta .more {
background: #EEEEEE;
padding: 5px 15px;
}
.meta .comments {
background: #EEEEEE;
padding: 5px 15px;
}
.meta a {
}
.alignleft {
float: left;
}
.alignright {
float: right;
}
.posts {
margin: 0;
padding: 0;
list-style: none;
line-height: normal;
}
.posts li {
}
.posts h3 {
margin: 0;
font-weight: bold;
}
.posts p {
margin: 0;
line-height: normal;
}
.posts a {
}
.entry {
margin: 0 20px 0 20px;
}
.last {
border: none;
}
/* Sidebar */
#sidebar {
float: left;
width: 220px;
color: #EEEEEE;
}
#menu {
border-bottom:thin dotted #FFFFFF;
margin: 0 20px 20px 10px;
}
#sidebar ul {
margin: 0 0 0 45px;
padding: 0px 0 20px 0;
list-style: none;
}
#sidebar li {
}
#sidebar li ul {
padding: 0px 0px 16px 0px;
}
#sidebar li li {
border-bottom: 1px dotted #1C1C1C;
padding: 0 0 10px 0px;
}
#sidebar h2 {
margin: 0;
height: 30px;
padding: 0px 0px 0px 20px;
text-transform: uppercase;
font-family: Arial, Helvetica, sans-serif;
font-size: 18px;
color: #FFFFFF;
}
#sidebar a {
color: #FFFFFF;
}
#sidebar a:hover {
text-decoration: none;
}
.infoBox {
position: relative;
border-top: 1px dotted #999;
padding: 15px 0;
overflow: auto;
margin: 0;
}
/* Search */
#search input {
display: none;
}
#search input#s {
display: block;
width: 230px;
padding: 2px 5px;
border: 1px solid #3DD1FF;
background: #EEEEEE
}
#search br {
display: none;
}
/* Calendar */
#calendar {
}
#calendar h2 {
margin-bottom: 15px;
}
#calendar table {
width: 80%;
margin: 0 auto;
text-align: center;
}
#calendar caption {
width: 100%;
text-align: center;
}
#next {
text-align: right;
}
#prev {
text-align: left;
}
/* Footer */
#footer {
clear: both;
width: 900px;
height: 50px;
margin: 0 left;
text-align: right;
font-size: smaller;
font-family: Arial, Helvetica, sans-serif;
}
#footer p {
padding: 50px 60px 20px 0;
text-transform: uppercase;
}
#footer p a {
}
table {
text-align: center;
margin: 15px auto 0 auto;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
}
th {
color: #fff;
background-color: #030a36;
padding: 3px 10px;
}
th:first-child {
-moz-border-radius: 7px 0 0 0;
-webkit-border-radius: 7px 0 0 0;
border-radius: 7px 0 0 0;
}
th:last-child {
-moz-border-radius: 0 7px 0 0;
-webkit-border-radius: 0 7px 0 0;
border-radius: 0 7px 0 0;
}
td {
background-color:#d6d6d6;
padding: 3px 10px;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

+14
View File
@@ -0,0 +1,14 @@
#include <iostream>
#include <cassert>
#include "expman.h"
using namespace std;
int main() {
expman e;
assert(e.isBalanced("{ { [ ( ) ] } ( ) }") == true);
assert(e.isBalanced("{ [ ) }") == false);
assert(e.isBalanced("{ ( [ ] } )") == false);
assert(e.isBalanced("{") == false);
return 0;
}
+5
View File
@@ -0,0 +1,5 @@
#include <unistd.h>
int usleep(useconds_t usec) {
return 0;
}
+11
View File
@@ -0,0 +1,11 @@
from setuptools import setup, find_packages
setup(
name = 'cs235lab04',
version = '0.0dev',
packages = find_packages(),
author = "Stephen M. McQuay",
author_email = "stephen@mcquay.me",
url = "http://bitbucket.org/smcquay/cs235",
license = "WTFPL",
)
+23
View File
@@ -0,0 +1,23 @@
from collections import deque
op_prec = {
'*': 3,
'/': 3,
'%': 3,
'+': 2,
'-': 2,
}
def shunt(tokens):
tokens = deque(tokens)
output = deque()
operators = deque()
while tokens:
token = tokens.pop()
if token.isdigit():
output.append(token)
elif token in op_prec:
operators.append(token)
return output, operators
+10
View File
@@ -0,0 +1,10 @@
import unittest
from shunting import shunt
class ShuntTest(unittest.TestCase):
def test_simple_add(self):
o, s = shunt(['4', '+', '3'])
self.assertEquals(o, ['4', '3', '+'])
+117
View File
@@ -0,0 +1,117 @@
#include <iostream>
#include <stack>
#include <vector>
#include <cassert>
#include <algorithm>
#include <cctype>
#include "expman.h"
ostream & operator<<(ostream & os, stack<string> & s) {
while(not s.empty()) {
os << "'" << s.top() << "', ";
s.pop();
}
return os;
}
int main() {
stringstream oss;
auto r1 = parse_expression(string("1 + 40 + 3"));
oss << r1;
assert(oss.str() == "'3', '+', '40', '+', '1', ");
oss.str("");
auto r2 = parse_expression(string(" 1 + 40 + 3"));
oss << r2;
assert(oss.str() == "'3', '+', '40', '+', '1', ");
oss.str("");
auto r3 = parse_expression(string("1 + 40 + 3 "));
oss << r3;
assert(oss.str() == "'3', '+', '40', '+', '1', ");
oss.str("");
auto r4 = parse_expression(string(" 1 + 40 + 3 "));
oss << r4;
assert(oss.str() == "'3', '+', '40', '+', '1', ");
oss.str("");
auto r5 = parse_expression(string(" "));
oss << r5;
assert(oss.str() == "");
oss.str("");
auto r6 = parse_expression(string(" "));
oss << r6;
assert(oss.str() == "");
oss.str("");
auto r7 = parse_expression(string(""));
oss << r7;
assert(oss.str() == "");
oss.str("");
auto r8 = parse_expression(string("1"));
oss << r8;
assert(oss.str() == "'1', ");
oss.str("");
{
stack<string> s;
s.push("a");
s.push("b");
s.push("c");
auto s2 = reverse_stack(s);
assert(s2.top() == "a");
s2.pop();
assert(s2.top() == "b");
s2.pop();
assert(s2.top() == "c");
s2.pop();
}
assert(precedence("*") == precedence("/"));
assert(precedence("+") == precedence("-"));
assert(precedence("*") > precedence(")"));
assert(precedence("(") < precedence(")"));
assert(precedence(")") < precedence("/"));
assert(is_int("42") == true);
assert(is_int("6y") == false);
assert(is_int("+") == false);
assert(is_int("4 + 2") == false);
assert(is_int("$") == false);
assert(is_int("") == false);
assert(is_valid_token("3") == true);
assert(is_valid_token("3 + 3") == false);
assert(is_valid_token("") == false);
assert(is_valid_token("-") == true);
assert(is_valid_token("*") == true);
assert(is_valid_token("3 + a") == false);
assert(is_valid_token("$") == false);
assert(is_valid_token("ahugegiantstring") == false);
assert(is_valid_expression("3") == true);
assert(is_valid_expression("3 + 3") == true);
assert(is_valid_expression("3 / 4 + 2 * 9") == true);
assert(is_valid_expression("3 - 0") == true);
assert(is_valid_expression("a") == false);
assert(is_valid_expression("3 + a") == false);
assert(is_valid_expression("3 $ 3") == false);
assert(is_valid_expression("suckmygiantballs") == false);
assert(is_valid_expression("40 * ( 2 + 4 - ( 2 + 2 ) ) - 4 / 5 / 6") == true);
assert(is_paren("(") == true);
assert(is_paren("1") == false);
assert(is_paren("a21)") == false);
assert(is_paren("{") == true);
assert(is_paren(")") == true);
assert(is_paren("$") == false);
assert(is_paren("!%#") == false);
expman e;
string b = "3 + 3";
// assert(e.infixToPostfix(b) == "3 3 +");
}
+2
View File
@@ -0,0 +1,2 @@
3 + 4
3 + 4 * 2
+4
View File
@@ -0,0 +1,4 @@
{ { [ ( ) ] } ( ) }
{ [ ) }
{ ( [ ] } )
{
+4
View File
@@ -0,0 +1,4 @@
2 + a
3 $ 3
40 * ( 2 + 4 - ( 2 + 2 ) ) - 4 / 5 / 6
4 * ( 2 + 4 - ( 2 + ) ) - 4 / 5
+3
View File
@@ -0,0 +1,3 @@
3 + 3 /
3 3 4 +
40 2 4 + 1 1 + - * 4 5 / 6 / -
+3
View File
@@ -0,0 +1,3 @@
40 2 4 + 1 1 + - * 4 2 / 1 / - 7 %
+ 3 4 +
4 5 2 + * 2 /
+661
View File
@@ -0,0 +1,661 @@
{
Dynamic Linker Bug
Memcheck:Cond
fun:_dl_relocate_object
fun:dl_main
fun:_dl_sysdep_start
fun:_dl_start
obj:/lib/ld-2.6.so
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_ZNK10LinkedList4FindERKSsP6LLNode
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_ZNK10LinkedList4FindERKSsP6LLNode
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_ZNK10LinkedList4FindERKSsP6LLNode
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_ZSt6__findISt14_List_iteratorISsESsET_S2_S2_RKT0_St18input_iterator_tag
fun:_ZSt4findISt14_List_iteratorISsESsET_S2_S2_RKT0_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_ZNK10LinkedList4FindERKSsP6LLNode
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z7TestBSTb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z7TestBSTb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z7TestBSTb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z7TestBSTb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStltIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStltIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZNK10LinkedList4FindERKSsP6LLNode
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZNK10LinkedList4FindERKSsP6LLNode
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZNK10LinkedList4FindERKSsP6LLNode
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z7TestBSTb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z7TestBSTb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z7TestBSTb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z7TestBSTb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z7TestBSTb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStltIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z12CompareListsRK10LinkedListRSt4listISsSaISsEE
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_ZSt6__findISt14_List_iteratorISsESsET_S2_S2_RKT0_St18input_iterator_tag
fun:_ZSt4findISt14_List_iteratorISsESsET_S2_S2_RKT0_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_Z14TestLinkedListb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:_ZNKSs7compareERKSs
fun:_ZSteqIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z7TestBSTb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z7TestBSTb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:strlen
fun:_ZNSsC1EPKcRKSaIcE
fun:_Z11generateKeyv
fun:_Z7TestBSTb
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:bcmp
fun:_ZNSt11char_traitsIcE7compareEPKcS2_j
fun:_ZSteqIcEN9__gnu_cxx11__enable_ifIXsrSt9__is_charIT_E7__valueEbE6__typeERKSbIS3_St11char_traitsIS3_ESaIS3_EESC_
fun:_ZStneIcSt11char_traitsIcESaIcEEbRKSbIT_T0_T1_ES8_
fun:_ZN3tut12_GLOBAL__N_113ensure_equalsISsSsEEvPKcRKT0_RKT_
fun:_ZN7BSTTest7initBSTER3BST
fun:_ZN3tut11test_objectI7BSTTestE4testILi2EEEvv
fun:_ZN3tut10test_groupI7BSTTestLi50EE13run_test_seh_EMNS_11test_objectIS1_EEFvvERNS2_11safe_holderIS4_EERSs
fun:_ZN3tut10test_groupI7BSTTestLi50EE9run_test_ERKSt17_Rb_tree_iteratorISt4pairIKiMNS_11test_objectIS1_EEFvvEEERNS2_11safe_holderIS7_EE
fun:_ZN3tut10test_groupI7BSTTestLi50EE8run_nextEv
fun:_ZNK3tut11test_runner23run_all_tests_in_group_ESt23_Rb_tree_const_iteratorISt4pairIKSsPNS_10group_baseEEE
fun:_ZNK3tut11test_runner9run_testsEv
}
{
<insert a suppression name here>
Memcheck:Cond
fun:bcmp
fun:_ZNSt11char_traitsIcE7compareEPKcS2_j
fun:_ZSteqIcEN9__gnu_cxx11__enable_ifIXsrSt9__is_charIT_E7__valueEbE6__typeERKSbIS3_St11char_traitsIS3_ESaIS3_EESC_
fun:_ZNK10LinkedList4FindERKSsP6LLNode
fun:_ZN3tut11test_objectI14LinkedListTestE4testILi8EEEvv
fun:_ZN3tut10test_groupI14LinkedListTestLi50EE13run_test_seh_EMNS_11test_objectIS1_EEFvvERNS2_11safe_holderIS4_EERSs
fun:_ZN3tut10test_groupI14LinkedListTestLi50EE9run_test_ERKSt17_Rb_tree_iteratorISt4pairIKiMNS_11test_objectIS1_EEFvvEEERNS2_11safe_holderIS7_EE
fun:_ZN3tut10test_groupI14LinkedListTestLi50EE8run_nextEv
fun:_ZNK3tut11test_runner23run_all_tests_in_group_ESt23_Rb_tree_const_iteratorISt4pairIKSsPNS_10group_baseEEE
fun:_ZNK3tut11test_runner9run_testsEv
fun:_Z3runRKSsi
fun:main
}
{
<insert a suppression name here>
Memcheck:Cond
fun:bcmp
fun:_ZNSt11char_traitsIcE7compareEPKcS2_j
fun:_ZSteqIcEN9__gnu_cxx11__enable_ifIXsrSt9__is_charIT_E7__valueEbE6__typeERKSbIS3_St11char_traitsIS3_ESaIS3_EESC_
fun:_ZSt6__findISt14_List_iteratorISsESsET_S2_S2_RKT0_St18input_iterator_tag
fun:_ZSt4findISt14_List_iteratorISsESsET_S2_S2_RKT0_
fun:_ZN3tut11test_objectI14LinkedListTestE4testILi9EEEvv
fun:_ZN3tut10test_groupI14LinkedListTestLi50EE13run_test_seh_EMNS_11test_objectIS1_EEFvvERNS2_11safe_holderIS4_EERSs
fun:_ZN3tut10test_groupI14LinkedListTestLi50EE9run_test_ERKSt17_Rb_tree_iteratorISt4pairIKiMNS_11test_objectIS1_EEFvvEEERNS2_11safe_holderIS7_EE
fun:_ZN3tut10test_groupI14LinkedListTestLi50EE8run_nextEv
fun:_ZNK3tut11test_runner23run_all_tests_in_group_ESt23_Rb_tree_const_iteratorISt4pairIKSsPNS_10group_baseEEE
fun:_ZNK3tut11test_runner9run_testsEv
fun:_Z3runRKSsi
}
{
<insert a suppression name here>
Memcheck:Cond
fun:bcmp
fun:_ZNSt11char_traitsIcE7compareEPKcS2_j
fun:_ZSteqIcEN9__gnu_cxx11__enable_ifIXsrSt9__is_charIT_E7__valueEbE6__typeERKSbIS3_St11char_traitsIS3_ESaIS3_EESC_
fun:_ZN3tut11test_objectI14LinkedListTestE4testILi9EEEvv
fun:_ZN3tut10test_groupI14LinkedListTestLi50EE13run_test_seh_EMNS_11test_objectIS1_EEFvvERNS2_11safe_holderIS4_EERSs
fun:_ZN3tut10test_groupI14LinkedListTestLi50EE9run_test_ERKSt17_Rb_tree_iteratorISt4pairIKiMNS_11test_objectIS1_EEFvvEEERNS2_11safe_holderIS7_EE
fun:_ZN3tut10test_groupI14LinkedListTestLi50EE8run_nextEv
fun:_ZNK3tut11test_runner23run_all_tests_in_group_ESt23_Rb_tree_const_iteratorISt4pairIKSsPNS_10group_baseEEE
fun:_ZNK3tut11test_runner9run_testsEv
fun:_Z3runRKSsi
fun:main
}