QBE
Файл parse.c
#include "all.h"
#include <ctype.h>
#include <stdarg.h>
#include "ops.h"
Граф включаемых заголовочных файлов для parse.c:

См. исходные тексты.

Макросы

#define O(op, t, cf)   [O##op]={#op, t, cf},
 
#define X(j)   [J##j] = #j,
 

Перечисления

enum  { Ke = -2, Km = Kl }
 
enum  PState { PXXX, PLbl, PPhi, PIns, PEnd }
 
enum  {
  Txxx = 0, Tloadw = NPubOp, Tloadl, Tloads, Tloadd, Talloc1, Talloc2, Tcall, Tenv, Tphi, Tjmp, Tjnz, Tret, Texport, Tfunc, Ttype, Tdata, Talign, Tl, Tw,
  Th, Tb, Td, Ts, Tz, Tint, Tflts, Tfltd, Ttmp, Tlbl, Tglo, Ttyp, Tstr, Tplus, Teq, Tcomma, Tlparen, Trparen, Tlbrace, Trbrace,
  Tnl, Tdots, Teof, Ntok
}
 
enum  { BMask = 8191, K = 3233235, M = 23 }
 

Функции

void err (char *s,...)
 
void parse (FILE *f, char *path, void(*data)(Dat *), void(*func)(Fn *))
 Парсит файл с программой на QBE IL. Подробнее...
 
void printref (Ref r, Fn *fn, FILE *f)
 
void printfn (Fn *fn, FILE *f)
 

Переменные

Op optab [NOp]
 Массив всех операций. Подробнее...
 

Макросы

◆ O

#define O (   op,
  t,
  cf 
)    [O##op]={#op, t, cf},

◆ X

#define X (   j)    [J##j] = #j,

Перечисления

◆ anonymous enum

anonymous enum
Элементы перечислений
Ke 
Km 

См. определение в файле parse.c строка 5

◆ anonymous enum

anonymous enum
Элементы перечислений
Txxx 
Tloadw 
Tloadl 
Tloads 
Tloadd 
Talloc1 
Talloc2 
Tcall 
Tenv 
Tphi 
Tjmp 
Tjnz 
Tret 
Texport 
Tfunc 
Ttype 
Tdata 
Talign 
Tl 
Tw 
Th 
Tb 
Td 
Ts 
Tz 
Tint 
Tflts 
Tfltd 
Ttmp 
Tlbl 
Tglo 
Ttyp 
Tstr 
Tplus 
Teq 
Tcomma 
Tlparen 
Trparen 
Tlbrace 
Trbrace 
Tnl 
Tdots 
Teof 
Ntok 

См. определение в файле parse.c строка 23

◆ anonymous enum

anonymous enum
Элементы перечислений
BMask 

См. определение в файле parse.c строка 104

◆ PState

enum PState
Элементы перечислений
PXXX 
PLbl 
PPhi 
PIns 
PEnd 

См. определение в файле parse.c строка 15

Функции

◆ err()

void err ( char *  s,
  ... 
)

См. определение в файле parse.c строка 134

Используется в gasemitdat() и ssacheck().

◆ parse()

void parse ( FILE *  f,
char *  path,
void(*)(Dat *)  data,
void(*)(Fn *)  func 
)

Парсит файл с программой на QBE IL.

Центральная функция, входная точка для запуска механизма парсинга программы на QBE IL из вашей программы, управляет процессом парсинга и дёргает коллбэки

Аргументы
fФайл с текстом программы
pathПуть к файлу с текстом программы
dataУказатель на функцию (принимающую на вход указатель на структуру Dat), которой передаётся управление для обработки глобального объекта данных из кода программы
funcУказатель на функцию (принимающую на вход указатель на структуру Fn), которой передаётся управление для обработки функций из кода программы

См. определение в файле parse.c строка 1046

◆ printfn()

void printfn ( Fn fn,
FILE *  f 
)

См. определение в файле parse.c строка 1160

Перекрестные ссылки Phi::arg, Phi::blk, Phi::cls, Fn::export, Blk::ins, JMPS, Phi::link, Blk::link, Blk::name, Fn::name, Phi::narg, Blk::nins, NJmp, Blk::phi, printref(), Fn::start, Phi::to и X.

◆ printref()

void printref ( Ref  r,
Fn fn,
FILE *  f 
)

См. определение в файле parse.c строка 1110

Используется в printfn().

Переменные

◆ chr

char chr

См. определение в файле parse.c строка 116

◆ fltd

double fltd

См. определение в файле parse.c строка 117

◆ flts

float flts

См. определение в файле parse.c строка 118

◆ num

int64_t num

См. определение в файле parse.c строка 119

◆ optab

Op optab[NOp]

Массив всех операций.

См. определение в файле parse.c строка 10

Используется в argcls().

◆ str

char* str

См. определение в файле parse.c строка 120