C/C++ :: Recursively Building Cons Cell Structure Via Recursive Descent

Apr 25, 2015

I'm currently working on a Scheme Interpreter written in C. I'm trying to create a cons cell structure via recursive descent parsing, except instead of just having the car and cons, I also have a field that holds the token that I receive from the lexical analyzer (which was provided to us). The struct for what I'm describing is as such:

typdef struct node node;
typedef node* list;
struct node {
char* symbol;
list car;
list cdr;
};

Thus a cons cell would be (with a node represented as [symbol][car][cdr]), [null][car][cdr], while a symbol would be [symbol][null][null].

In the top answer for a similar question on Stack Overflow, one of the suggestions was to put the tokens into a stack as the input is recursively parsed, and then from that stack input it into the cons cell structure.

This is something that I'm working towards now, as it is easier for me to understand and I already have implemented a stack in C before, but I know that I can just build the structure recursively, I'm just not sure how. The following is code that I have:

list s_expression() {
list local;
list temp;
if (strcmp(token, "(") == 0) {
strcpy(token, getToken());

[Code] .....

s_expression is supposed to return a pointer to a recursively built cons cell structure. I'm just having issues figuring out when to call getToken(), as I either call getToken in the wrong spot and unintentionally skip over a token, or I call getToken() when I'm done getting all of the tokens, thus causing my program to continue searching for a token from user input instead of continuing on with the rest of the program.

When should I be calling getToken()?

In addition, what would be better, recursively building the cons cell structure as you go through the user's input, or putting all of the tokens into a stack and then building the cons cell structure using that stack?

If needed, I can post the lexical analyzer that's been provided to us. Also, for S_expression(); showing up as S_exp<b></b>pression();, I'm not sure what happened there. I copied this post from my question on stack overflow.

View 12 Replies


ADVERTISEMENT

C/C++ :: Recursive Descent Parser?

Mar 22, 2014

I am implementing a recursive descent parser that recognizes strings in the language below.

The grammar:
A -> I = E | E
E -> T + E | T - E | T
T -> F * T | F / T | F
F -> P ^ F | P
P -> I | L | UI | UL | (A)
U -> + | - | !
I -> C | CI
C -> a | b | ... | y | z
L -> D | DL
D -> 0 | 1 | ... | 8 | 9

My input file has the following two strings:
a=a+b-c*d
a=a**b++c

The desired output:

String read from file: a=a+b-c*d
The string "a=a+b-c*d" is in the language.
String read from file: a=a**b++c
The string "a=a**b++c" is not in the language.

[Code].....

When I test the code without reading the text file and just write a string in the source code, it appears to parse fine. I believe my main problem is in the int main function and how i am reading the text file and outputting it. I was able to write the same program fine in Java.

View 3 Replies View Related

C++ :: Evaluating Arithmetic Expressions Using Recursive Descent Parser?

Feb 25, 2013

I have the following code to calculate arithmetic expressions :

#include <iostream>
using namespace std;
using namespace std;
const char * expressionToParse = "6.5-2.5*10/5+2*5";
char peek(){
return *expressionToParse;

[code]....

The problem is that it does not work properly with decimal numbers for example it evaluates 6-2*10/5+2*5 = 12 which is correct but for 6.5-2.5*10/5+2*5 it returns 6 instead of 11.5 .

View 3 Replies View Related

C++ :: How To Create Pros And Cons Of Shared Libraries

Aug 18, 2014

I want to know:

1. Pros and cons of shared libraries
2. How to create them(any tutorial link or book will be good)
3. Compare static libraries to dynamic ones

View 1 Replies View Related

C/C++ :: Scan A Directory Recursively

Dec 19, 2014

I'm writing a C++ module that is meant to recursively scan a directory and I'm curious what yall think of my strategy.

The program is a music player and so I'm trying to make the directory scanner as lightweight and efficient as I can. I've decided I want to scan the files in two passes- first I just want to get a list of all music files that are found in a directory/subdirectories and then I want to process the list and search for id3s/other tags.

As I'm a scanning the directory, I've decided to store the temporary list in a linked list where each node is containing an array of 100 strings. I did this because I obviously don't know how long the list will be and I from my understanding of the C++ vector class it basically just makes over sized arrays and moves them when it runs out of space. That sounded rather clunky to me, as did a traditional linked list.. I didn't see the point of allocating memory that many times in a row.

View 3 Replies View Related

C++ :: Deleting A Character Recursively?

Mar 18, 2013

I'm having trouble deleting a character inputted by the user recursively..

1- Should I be doing it this way where it returns the character one by one to the console?

2- Is there a way actually rebuild the string to "delete" these occurances of the key?

//This program deletes a character inputted by the user recursively
#include <iostream>
using namespace std;
char find (char *a, char key)//Function gets passed array (but makes it a pointer) and key

[code]....

View 5 Replies View Related

C/C++ :: How To Get Linked List Size Recursively

Mar 2, 2015

suppose that the class LinkedBag did not have the data member item_count_. Revise the method getCurrentSize so that it counts the number of nodes in the linked chain a. iterartively b. Recursively[

LinkedBag.h
template<class ItemType>
class LinkedBag : public BagInterface<ItemType> {
public:
LinkedBag();
LinkedBag(const LinkedBag<ItemType>& a_bag);
LinkedBag<ItemType>& operator=(const LinkedBag<ItemType>& right_hand_side);
virtual ~LinkedBag();

[code].....

View 6 Replies View Related

C++ :: Deleting Linked List Nodes Recursively

Jun 25, 2014

I am creating a Linear linked list in c++. I've written all the functions for it, but now I want to try and do them using recursion.

I managed to make functions for adding and displaying nodes on the list, but I am stuck on the function for removing nodes. First I want to try and write a function the removes the last item on the list. But for some reason my code isn't working properly.

Here is the code :

void removeLastItem(node * &head) {
if(!head) {
delete head;
head = NULL;

[Code] ....

NODE - My structure name
NEXT - The pointer to next element.
HEAD - The first (head) pointer.

The couts in the if statements are just for testing. In fact after I Run my program it does as it is supposed - enters the second if /b]case as many times as there are elements and then executes the first [b]if statement. But for some reason it does not delete the actual node.

View 2 Replies View Related

C/C++ :: Recursively Displaying Folder And Subfolder Contents

Apr 20, 2014

I'm trying to recursivly display the contents and sub contents of a folder. Here is the function that gets called:

void Ls(string wrkDir, bool recursive) {
DIR *dirStream;
dirStream=opendir(wrkDir.c_str());
if(dirStream==NULL)
return;
dirent *ep;

[Code] ....

what is happening is once it goes through all the sub-directories in the first folder, it goes right back into it. Also when it approaches a file that isn't a directory, it doesn't pop out of the stack, instead it adds the name of the next file to the path and tries to open that. How do i test if the current path is a directory using only standard c/c++ calls. Can't use boost or wxWidgets.

View 14 Replies View Related

C++ :: Check If Binary Search Tree Is Full Or Not Recursively?

Dec 5, 2013

How would I check if a binary search tree is full or not recursively?? ?

View 1 Replies View Related

C/C++ :: Code That Recursively Calls Itself And Prints Given Digits In Ascending Order

Mar 15, 2015

I'm trying to implement a code that recursively calls itself and prints the given digits in ascending order, i.e. if the number is 5, then the function will print 1 2 3 4 5. I cannot use loops in any way!

The problem I have is with keeping my variable i at a set value each time the function calls itself.

void print_ascending(int n){
int i = 1;
if(i < n) {
printf("%d", i);
i++;
print_ascending(n);
}
}

Of course, the problem with this code is it will re-initialize the variable i to 1 every single time and infinitely loop to print 1.

View 11 Replies View Related

C :: Distributing A Cell In Different Regions

Feb 5, 2014

I want to to divide a cell into 4 different regions using x_coordinate, y_coordinate (for outer sectors) and by defining radius (for center region). I tried my best by i couldn't figure out how to do this in C. I am attaching the diagram of the cell for better understanding. URL...

View 1 Replies View Related

C Sharp :: Get Value Cell From Datagridview

May 27, 2013

I am using C# to build up a application. Otherwise, i have two forms, the first form is frmMaterial and the second form is frmMaterialList. frmMaterial has a textbox to get value from datagridview of frmMaterialList. My code doesn't work. How to get value from datagridview of frmMaterialList into textbox of frmMaterial?

Note: frmMaterial has a button to load frmMaterialList

View 2 Replies View Related

C# :: Draw Border Around TableLayoutPanel Cell

Mar 6, 2015

I would like to draw a border arround a cell in a TableLayoutPanel but without also making a connection between the columns. I just want an outer border.

private void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e) {
if (e.Row == 0) {
e.Graphics.DrawLine(Pens.Black, e.CellBounds.Location, new Point(e.CellBounds.Right, e.CellBounds.Top));
e.Graphics.DrawLine(Pens.Black, new Point(e.CellBounds.Left, e.CellBounds.Bottom), new Point(e.CellBounds.Right, e.CellBounds.Bottom));
e.Graphics.DrawLine(Pens.Black, e.CellBounds.Location, new Point(e.CellBounds.Left, e.CellBounds.Bottom));
}
}

This line

e.Graphics.DrawLine(Pens.Black, e.CellBounds.Location, new Point(e.CellBounds.Left, e.CellBounds.Bottom));

also paints connections, where i don't want them. How can i just make a outerb order arround a cell and is there a easier way to do it? Here's also an image of what i want. I don't know if i described it right.

View 2 Replies View Related

C/C++ :: Display Contents Of Point (Cell)

Jan 23, 2014

I want to display the content of point "cell", how can I implement this:

Here is the code:

#include <iostream>
#include <utility>
#include <conio.h> 
#include <stdio.h>
using namespace std;  
int main () {
    typedef pair<int,int> point;

[Code] .....

View 1 Replies View Related

C++ :: How To Change Cell Text Color In QTableView

Jul 24, 2013

I've tried this (without success):

ui->tableView->model()->setData(ui->tableView->model()->index(5, 5, QModelIndex()), QVariant(QColor(Qt::red)), Qt::DecorationRole);

View 6 Replies View Related

C Sharp :: Update Sql Table Using Datagridview Cell?

Mar 26, 2013

how I update sql table using datagridview cell..... I want to edit cell and then press enter it update the sql table ... ??? It possible or not ... ?

View 3 Replies View Related

C/C++ :: How To Put Element In Blank Cell Of Two Dimensional Array

Oct 2, 2013

I have already data in two dimensional matrix but some cell is empty.Now i want to put 0 in blank cell.

View 2 Replies View Related

Visual C++ :: How To Color Background Of Excel Cell

Aug 6, 2013

I am saving my data in Excel File Format.

I am using CDataBase class and its methods like OpenEx ,ExecuteSQL etc. The program is working fine.

Now I need to change back-ground color of some data base records.

How to do this in MFC ?

View 3 Replies View Related

C# :: How To Edit A Cell From Datagridview And Save It To Resx File

Feb 10, 2015

i am working on a resx file. I have read the file and load it on data-gridview. now i wanted to be able to edit from the file and save.I have tried many ways but i didn't come with the solution. yesterday i tried this code below. I don't know how i can edit. here is what i have tried,

private void btnSave_Click(object sender, EventArgs e) {
foreach (DataGridViewRow _row in Gridview_Output.Rows) {
DataRow dt1 = oDataTable.NewRow();
for (int i = 0; i < Gridview_Output.ColumnCount; i++) {
Gridview_Input.SelectedRows[0].Cells[1].Value = oDataSet.Tables["data"].Rows[0][1].ToString();

[Code]...

View 1 Replies View Related

Visual C++ :: Change Back Color Of Cell In ListView

Apr 2, 2013

I know how to change the back color of text in th ListView for all the View, but if I only want to change the back color of one cell i don`t find any way. Is it possible?

View 1 Replies View Related

Visual C++ :: Write Number In Excel Cell - OLE Automation

Sep 23, 2013

I need to make a programm to write in a excel cell a number.

I must use OLE Automation. How i can do it??

Code:
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <ole2.h>
#include <assert.h>
#include <iostream>
void main(void) {
CLSID clsid;
CLSIDFromProgID(L"Excel.Application", &clsid);

[Code] ....

View 1 Replies View Related

C :: Building NFA From Regular Expression

Oct 23, 2013

I am trying to create a NFA from a regular expression. I have a grasp on reading in the regular expression and being able to make a stack from it. The part I am struggling on is mapping the characters in the regular expression to an integer indicating the variables order in the expression. I am just not sure how to go about this.

My code so far...
Code:
#include<stdio.h>
#include<stdlib.h>
#include "stack.h"
int main(void)
{
char expression[80];//array to store regular expression

[Code] .....

View 6 Replies View Related

C++ :: Building A Typeless Container?

Jun 14, 2013

i built a programming language called jade that right now can only print. i want to add variables to it however. I am going to use a modified bajarne stroustrop calculator to handle expressions (ie will now include string manipulations and such), but I want to build a var class into the program to make it easier for the program. i want variables to act like python variabes, and arrays to act like python associative arrays. Ive scoured different containers, but they only work if the variable isnt an array in my language, because it will only have one type. the only thing i can come up with is a union and 4 overloaded = operators (for bool, int, double, and string) is there a better way to do this?

View 2 Replies View Related

C/C++ :: Building QGIS X64 On Windows

Feb 9, 2015

Basically I want to embed the QGIS canvas widget into a custom application. In order to do that, I need to build QGIS from it's source in order to obtain the devel *.lib, *.dll, *.h, etc. files required. To that result, I am trying to build either version 2.6.* or the current nightly build ~2.7 - 2.8 64 bit version. There is very little documentation on the x64 builds. Not to mention that CMake and I are not the best of friends.

My progress so far:
- Successfully built the extremely out of date nightly build readme instructions of version 0.11 x86
- Partial success in creating CMake output to VS2010, but many required headers were not included such as gqsmapcanvas.h, (So even if I got it building I couldn't use the canvas widget in an application)
*Note I updated the external packages to x64 versions, so it is not an architecture mismatch issue.

I have also had issues with QWT looking for QWT Polar header files, but I suspect this is another issue with the missing headers as most of the errors related to files contained in the original source from GIT.

View 1 Replies View Related

C# :: Logic For Building Numbers Pyramid?

Jan 7, 2012

Code:
1
121
12321
1234321
123454321 EDIT:
the above pyramid looks like a doom.i.e 1-5 will be in center.1-4(L)1-3(L)1-2(L)1(L) similarly 1-4(R) 1-3(R) 1-2(R) 1(R)

I'm partly successful in building the requirement of the program.but cant able to think the logic for the other half. how can i proceed.below is the code written in c#.

Code:
for (int i = 1; i <= 5; i++)
{
//int l = 1;

[Code]....

View 3 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved