Derleyici Tasarımı
Yüklüyor...
Arıyor...
Eşleşme Yok
Makrolar | Enümerasyonlar | Fonksiyonlar | Değişkenler
bc-grammar.h Dosya Referansı

bc Grameri Ayrıntılar...

#include "tokenizer.h"
#include <rdesc/grammar.h>
bc-grammar.h için içerme bağımlılık grafiği:

Bu dosyanın kaynak koduna git.

Makrolar

#define BC_NT_COUNT   22
 [Gramer declaration]
 
#define BC_MAX_ALT_COUNT   13
 
#define BC_MAX_ALT_SIZE   10
 

Enümerasyonlar

enum  bc_tk_id {
  TK_PLUS , TK_MINUS , TK_STAR , TK_SLASH ,
  TK_PERCENT , TK_CARET , TK_PLUSEQ , TK_MINUSEQ ,
  TK_STAREQ , TK_SLASHEQ , TK_PERCENTEQ , TK_CARETEQ ,
  TK_EQ , TK_PLUSPLUS , TK_MINUSMINUS , TK_LT ,
  TK_GT , TK_EQEQ , TK_EXCLEQ , TK_LTEQ ,
  TK_GTEQ , TK_LPAREN , TK_RPAREN , TK_LCURLY ,
  TK_RCURLY , TK_SEMI , TK_COMMA , TK_DEFINE ,
  TK_BREAK , TK_QUIT , TK_PRINT , TK_RETURN ,
  TK_FOR , TK_IF , TK_WHILE , TK_CST
}
 Token ID. Ayrıntılar...
 
enum  bc_nt_id {
  NT_STMT , NT_STMTS , NT_ADD_OP , NT_MUL_OP ,
  NT_ASGN_OP , NT_REL_OP , NT_UNARY_OP , NT_INCR_DECR_OP ,
  NT_OPT_INCR_DECR_OP , NT_ADD_EXPR , NT_ADD_EXPR_REST , NT_MUL_EXPR ,
  NT_MUL_EXPR_REST , NT_EXP_EXPR , NT_EXP_EXPR_REST , NT_FACTOR ,
  NT_ATOM , NT_ASGN_EXPR , NT_REL_EXPR , NT_REL_EXPR_OPT_REL ,
  NT_OPT_EXPR , NT_EXPR
}
 Nonterminal ID. Ayrıntılar...
 

Fonksiyonlar

void bc_tokenizer_init (struct tokenizer *tokenizer)
 [Gramer declaration]
 

Değişkenler

const char * bc_tk_names []
 
const char * bc_nt_names []
 
struct rdesc_grammar_symbol bc_production_rules [BC_NT_COUNT][BC_MAX_ALT_COUNT+1][BC_MAX_ALT_SIZE+1]
 [Token/nonterminal ID]
 

Ayrıntılı tanımlama

bc Grameri

bc-grammar.h dosyasında tanımlanmıştır.

Makro Dokümantasyonu

◆ BC_MAX_ALT_COUNT

#define BC_MAX_ALT_COUNT   13

_

bc-grammar.h dosyasının 18 numaralı satırında tanımlanmıştır.

◆ BC_MAX_ALT_SIZE

#define BC_MAX_ALT_SIZE   10

_

bc-grammar.h dosyasının 20 numaralı satırında tanımlanmıştır.

◆ BC_NT_COUNT

#define BC_NT_COUNT   22

[Gramer declaration]

_

bc-grammar.h dosyasının 16 numaralı satırında tanımlanmıştır.

Enümerasyon Tipi Dokümantasyonu

◆ bc_nt_id

enum bc_nt_id

Nonterminal ID.

bc-grammar.h dosyasının 36 numaralı satırında tanımlanmıştır.

◆ bc_tk_id

enum bc_tk_id

Token ID.

[Token/nonterminal ID]

bc-grammar.h dosyasının 24 numaralı satırında tanımlanmıştır.

Fonksiyon Dokümantasyonu

◆ bc_tokenizer_init()

void bc_tokenizer_init ( struct tokenizer tokenizer)

[Gramer declaration]

Tokenizer oluşturur ve pucntuation'larla keyword'leri ekler.

Değişken Dokümantasyonu

◆ bc_nt_names

const char* bc_nt_names[]
İlk değer:
= {
"stmt", "stmts",
"add_op", "mul_op",
"asgn_op", "rel_op",
"unary_op", "incr_decr_op", "opt_incr_decr_op",
"add_expr", "add_expr_rest",
"mul_expr", "mul_expr_rest",
"exp_expr", "exp_expr_rest",
"factor", "atom",
"asgn_expr", "rel_expr", "rel_expr_opt_rel",
"opt_expr",
"expr",
}

_

bc-grammar.h dosyasının 73 numaralı satırında tanımlanmıştır.

◆ bc_production_rules

struct rdesc_grammar_symbol bc_production_rules[BC_NT_COUNT][BC_MAX_ALT_COUNT+1][BC_MAX_ALT_SIZE+1]
extern

[Token/nonterminal ID]

_

◆ bc_tk_names

const char* bc_tk_names[]
İlk değer:
= {
"+", "-", "*", "/", "%", "^",
"+=", "-=", "*=", "/=", "%=", "^=", "=",
"++", "--",
"<", ">", "==", "!=", "<=", ">=",
"(", ")", "{", "}", ";", ",",
"define", "break", "quit", "print",
"return", "for", "if", "while", "cst",
[TK_INT] = "@int", [TK_FLOAT] = "@float", [TK_IDENT] = "@ident",
}
#define TK_IDENT
Identifier token ID'si.
Definition tokenizer.h:28
#define TK_INT
Tam sayı token ID'si.
Definition tokenizer.h:22
#define TK_FLOAT
Ondalık sayı token ID'si.
Definition tokenizer.h:25

_

bc-grammar.h dosyasının 56 numaralı satırında tanımlanmıştır.