You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.0 KiB
58 lines
1.0 KiB
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#include <json-c/json.h>
|
|
#include <unistd.h>
|
|
#include "hashmap.h"
|
|
#include "uthash.h"
|
|
#include "utarray.h"
|
|
|
|
#define INIT_SIZE 100 // Initial size of the dynamic array holding the input
|
|
|
|
typedef struct terminal {
|
|
|
|
int state;
|
|
int trigger_idx;
|
|
size_t symbol_len;
|
|
char * symbol;
|
|
|
|
} terminal;
|
|
|
|
typedef struct trigger {
|
|
|
|
char * id;
|
|
int dest;
|
|
char * term;
|
|
size_t term_len;
|
|
|
|
} trigger;
|
|
|
|
typedef struct state {
|
|
|
|
int state_name; // Integer State name
|
|
int trigger_len; // Number of triggers associated with this state
|
|
trigger *ptr; // Pointer to beginning of the list of triggers
|
|
|
|
} state;
|
|
|
|
typedef struct {
|
|
|
|
size_t used;
|
|
size_t size;
|
|
size_t inputlen;
|
|
terminal *start;
|
|
|
|
} Array;
|
|
|
|
int init_state;
|
|
int curr_state;
|
|
int final_state;
|
|
|
|
state *create_pda(char *);
|
|
Array *gen_input(state *, Array *);
|
|
void print_repr(Array *, char *);
|
|
void initArray(Array *, size_t);
|
|
void insertArray(Array *, int, char *, size_t, int);
|
|
|