⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gc_to_bin.c

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 C
字号:
#include "../../grammar/grammar_crt.h"#include "../../grammar/grammar_crt.c"#include <stdlib.h>#include <stdio.h>static const char *slang_shader_syn =#include "slang_shader_syn.h";static int gc_to_bin (grammar id, const char *in, const char *out){	FILE *f;	byte *source, *prod;	unsigned int size, i, line = 0;	printf ("Precompiling %s\n", in);	f = fopen (in, "r");	if (f == NULL)		return 1;	fseek (f, 0, SEEK_END);	size = ftell (f);	fseek (f, 0, SEEK_SET);	source = (byte *) grammar_alloc_malloc (size + 1);	source[fread (source, 1, size, f)] = '\0';	fclose (f);	if (!grammar_fast_check (id, source, &prod, &size, 65536))	{		grammar_alloc_free (source);		return 1;	}	f = fopen (out, "w");	fprintf (f, "\n");	fprintf (f, "/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */\n");	fprintf (f, "/* %s */\n", in);	fprintf (f, "\n");	for (i = 0; i < size; i++)	{		unsigned int a;		if (prod[i] < 10)			a = 1;		else if (prod[i] < 100)			a = 2;		else			a = 3;		if (i < size - 1)			a++;		if (line + a >= 100)		{			fprintf (f, "\n");			line = 0;		}		line += a;		fprintf (f, "%d", prod[i]);		if (i < size - 1)			fprintf (f, ",");	}	fprintf (f, "\n");	fclose (f);	grammar_alloc_free (prod);   return 0;}int main (int argc, char *argv[]){   grammar id;   id = grammar_load_from_text ((const byte *) slang_shader_syn);   if (id == 0) {      fprintf(stderr, "Error loading grammar from text\n");      return 1;   }   grammar_set_reg8 (id, (const byte *) "parsing_builtin", 1);   grammar_set_reg8 (id, (const byte *) "shader_type", atoi (argv[1]));   if (gc_to_bin (id, argv[2], argv[3])) {      fprintf(stderr, "Error in gc_to_bin %s %s\n", argv[2], argv[3]);      grammar_destroy (id);      return 1;   }   grammar_destroy (id);   return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -