C/C++ Create a C++ logic calculator (T/F) using a recursive descent parser

AI Thread Summary
The discussion revolves around the development of a logic calculator that adheres to specific requirements, including case insensitivity for 'T' and 'F', immediate evaluation indicators using ';' or '=', and error handling that allows continued input after an error. The program is expected to use a recursive descent parser and return boolean values for grammar rule functions. The provided code snippet demonstrates an attempt to implement the calculator, but the user encounters compilation issues. Key components include a `Token` class for managing token types and values, and a `PTree` class for constructing the parse tree. The `Expr` function is designed to parse expressions but contains errors that prevent compilation. The user is advised to focus on the compiler's error messages, as resolving the first indicated error often resolves subsequent issues. The overall goal is to create a functional logic calculator that can handle various input formats and provide accurate outputs while maintaining robustness against errors.
carl123
Messages
55
Reaction score
0
I'm supposed to make a simple logic calculator based on the following requirements:

1. The user can use either capital or lower case 'T' and 'F' in their expression.
2. Use either a ';' or '=' to indicate the expression should be evaluated immediately.
3. The program should not exit when it encounters an error in the expression. Rather, it should output error information and then accept the next expression.
4. Use either a capital or lowercase 'Q' to indicate you want to exit the program.
5. Functions for the grammar rules will return type bool
6. You must use a recursive descent parser

Program output should look like this:

T&F = F
f|t = T
(T&f)^(t|F) = T
!F = T
q


This is what I have so far but, I can't figure out why my code won't compile

HTML:
#include <iostream>
#include <vector>
using namespace std;class Token {
	Tokentype   type;
	string      value;
	int     linenum;

public:
	Token(Tokentype t, string v = "") {
		type = t;
		value = v;
	}
	Tokentype getType() { return type; }
	string getValue() { return value; }
	int getLinenum() { return linenum; }
};

vector<string> int_list;
vector<string> float_list;

class PTree {
	PTreeNodetype   type;
	PTree *left;
	PTree *right;
public:
	PTree(PTreeNodetype t, PTree *l = 0, PTree *r = 0) {
		type = t;
		left = l;
		right = r;
	}
	PTreeNodetype getType() { return type; }
};

// expr ::= term PLUS expr | term MINUS expr | term 

PTree *
Expr() {

	PTree *term = Term();
	Token *t;

	if (!term)
		return 0;

	t = getToken();

	if (t == NULL) {
		delete t;
		return 0;
	}
	if (t->getType() != T_SC)
	{
		if (t->getType() == T_RPAREN) {
			pushbacktoken(t);
			return new PTree(EXPR, term);
		}

		if (t->getType() != T_PLUS && t->getType() != T_MINUS)
		{
			cout << t->getLinenum() << ":" << "Error:    expected + or -" << endl;
			pushbacktoken(t);
			delete t;
			return 0;
		}

		delete t;
		PTree *expr = Expr();
		if (!expr)
			return 0;

		return new PTree(EXPR, term, expr);
	}
 
Technology news on Phys.org
If code won't compile, the compiler usually indicates which line(s) of code are causing the problem. Often, if you fix the first line that is shown in the list of errors, that can clear up subsequent errors.
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...

Similar threads

Replies
36
Views
3K
Replies
14
Views
34K
Replies
4
Views
5K
Replies
3
Views
3K
Replies
2
Views
3K
Replies
4
Views
4K
Back
Top