Форум программистов, компьютерный форум CyberForum.ru

Разработка интерпретатора языка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ vector memory http://www.cyberforum.ru/cpp-beginners/thread1044655.html
#include "stdafx.h" #include <iostream> using namespace std; template <typename T> class vector { T* m_arr; int m_size;
C++ А) Дан массив а, состоящий из "n" целых чисел (n<=100). Найти номер последнего положительного числа на С++. к кадому заданию свой код. А) Дан массив а, состоящий из "n" целых чисел (n<=100). Найти номер последнего положительного числа Б) Дана матрица целых чисел, из "n" строк и "н" столбцов (n<=100). Найти количество максимальных элементов матрицы, среди элементов лежащих выше главной диагонали. http://www.cyberforum.ru/cpp-beginners/thread1044652.html
УСЛОВНЫЙ ОПЕРАТОР (IF) C++
здравствуйте, подскажите пожалуйста в чем ошибка:Дано 3 числа сколько среди них положительных #include <stdio.h> #include<math.h> using namespace std; int main() { int a,b,c, kol=0; printf("Введите a %d\n"); scanf ("%d", &a);
C++ Кодировка из java в С++
помогите перекодировать из java в с++ import java.util.*; import javax.swing.JOptionPane; public class Time { @Deprecated public static void main(String args) {
C++ Метод Хорд, не могу выяснить ошибку http://www.cyberforum.ru/cpp-beginners/thread1044595.html
Очень прошу откликнуться на эту просьбу. В задании необходимо написать программу для нахождения корня нелинейного уравнение Методом Хорд, соответственно. Код написала, но появляется какая-то неясная ошибка и пара подчеркиваний. Помогите разобраться, пожалуйста! #include <iostream> #include <stdlib.h> #include <conio.h> #include <locale> #include <stdio.h> #include <math.h> using namespace...
C++ Использование inline функций Нам задали написать программу по условию: Написать программу с использованием подставляемых функций и обычных функций, выполняющих одни и те же действия. С помощью системного таймера определить выигрыш во времени при использовании inline -функций. Помогите пожалуйста доделать программу под условие. В литературе нашли такой код, но не работает, видимо неверно написан: #include<stdio.h> int... подробнее

Показать сообщение отдельно
Anerius
0 / 0 / 0
Регистрация: 08.12.2013
Сообщений: 5
16.12.2013, 23:03     Разработка интерпретатора языка
Добрый день! При разработке интерпретатора возникла след проблема: Qt Creator не желает конвертировать чаровские константы в тип token_ireps. Вот код: #include "analizator.h"
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cctype>
#define IF "if"
#define ELSE "else"
#define FOR "for"
#define DO "do"
#define WHILE "while"
#define CHAR "char"
#define INT "int"
#define RETURN "return"
#define SWITCH "switch"
#define BREAK "break"
#define CASE "case"
#define COUT "cout"
#define CIN "cin"
#define END ""
#define call_getchar "getchar"
#define call_putchar "putchar"
#define call_abs "abs"
#define NUL ""


using namespace std;


struct commands{
char command [20];
analizator::token_ireps tok;
}
com_table[]{
"if", IF,
"else", ELSE,
"for", FOR,
"do", DO,
"while", WHILE,
"char", CHAR,
"int", INT,
"return", RETURN
"switch", SWITCH,
"break", BREAK,
"case", CASE,
"cout", COUT,
"cin", CIN,
" ", END
};
В с++ я не спец. Пишу по книге, потому не могу определить, что не так. Синтаксис выдержал в соответствии с источником, только добавил несколько своих ключевых слов... Вот заголовочный файл, где определен token_ireps :
#ifndef ANALIZATOR_H
#define ANALIZATOR_H

class analizator
{
public:
const int MAX_T_LEN = 128;
const int MAX_ID_LEN =31;
const int PROG_SIZE = 10000;
const int NUM_PARAMS = 31;

enum tok_types{UNDEFTT, DELIMITER, IDENTIFIER, NUMBER, KEYWORD, TEMP, STRING, BLOCK};
enum token_ireps {UNDEFTOK, ARG, CHAR, INT, SWITCH, CASE, IF, ELSE, FOR, DO, WHILE, BREAK, RETURN, COUT, CIN,END};
enum double_ops {LT =1, LE, GT,GE, EQ, NE, LS, RS, INC, DEC};
enum error_msg {SYNTAX, NO_EXP, NOT_VAR, DUP_VAR, DUP_FUNC, SEMI_EXPECTED, UNBAL_BRACES, FUNC_UNDEF, TYPE_EXPECTED, RET_NOCALL, PAREN_EXPECTED, WHILE_EXPECTED, QUOTE_EXPECTED, DIV_BY_ZERO, BRACE_EXPECTED, COLON_EXPECTED};

char *prog;
char *p_buf;
char *token;
tok_types token_type;
token_ireps tok;
int ret_value;
bool breakfound;

class InterpExc {
error_msg err;
public:
InterpExc(error_msg e){err = e;}
error_msg get_err() {return err;}
};
//Интерпретатор
void prescan ();
void decl_global();
void call();
void putback();
void decl_local();
void exec_if();
void find_eob();
void exec_for ();
void exec_switch();
void get_params();
void get_args ();
void exec_while();
void exec_do();
void exec_cout();
void exec_cin();
void assign_var(char *var_name, int value);
bool load_program(char *p, char *fname);
int find_var(char *s);
void interp();
void func_ret();
char *find_func (char *name);
bool is_var(char *s);
token_ireps find_var_type(char *s);
int main (int argc, char *argv []);

// Анализатор
void eval_exp(int &value);
void eval_exp0(int &value);
void eval_exp1(int &value);
void eval_exp2(int &value);
void eval_exp3(int &value);
void eval_exp4(int &value);
void eval_exp5(int &value);
void atom(int &value);
void sntx_err(error_msg error);
bool isdelim(char c);
token_ireps look_up(char *s);
tok_types get_token();
int internal_func (char *s);
// Библиотека
int call_getchar();
int call_putchar();
int call_abs();
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru