Форум программистов, компьютерный форум 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

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

16.12.2013, 23:03. Просмотров 567. Ответов 1
Метки (Все метки)

Добрый день! При разработке интерпретатора возникла след проблема: Qt Creator не желает конвертировать чаровские константы в тип token_ireps. Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#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 :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#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();
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru