Browse Source

Add debugging native compilation option

main
raffitz 5 years ago
parent
commit
73a238d4fc
Signed by: raffitz
GPG Key ID: 0224483A6E6AC710
  1. 3
      Makefile
  2. 55
      native-test.c

3
Makefile

@ -19,6 +19,9 @@ parser.tab.c parser.tab.h: parser.y expression.h @@ -19,6 +19,9 @@ parser.tab.c parser.tab.h: parser.y expression.h
%.o: %.c
$(CC) $(CFLAGS) -c $<
native-test: native-test.c lex.yy.c parser.tab.c expression.c
gcc -std=gnu99 -Wall -pedantic $^ -o $@ $(LFLAGS)
.PHONY: clean
clean:
rm -rf *.o {lex.yy,parser.tab}.{c,h} webdice.js

55
native-test.c

@ -0,0 +1,55 @@ @@ -0,0 +1,55 @@
#include <string.h>
#include <math.h>
#include "expression.h"
#include "parser.tab.h"
#include "lex.yy.h"
void console_print (const char* str){
fprintf(stderr,"%s\n",str);
}
void output_print (const char* str){
printf("%s\n",str);
}
int yyerror(void* scanner, void* lvalp, char* str){
console_print(str);
return 0;
}
void webdice(char* str){
union expression* root;
struct expression_result result;
int length;
char* out_block;
console_print("A");
yyscan_t scanner;
console_print("B");
yylex_init(&scanner);
console_print("C");
yy_scan_string (str, scanner);
console_print("D");
if(yyparse((void*) scanner, &root) == 0){
result = resolve(root);
length = strlen(result.text) + 4 * ceill(log10l(result.max)) + 100;
out_block = (char*) malloc(length * sizeof(char));
sprintf(out_block,"<p>%s = <span title=\"min: %Lf, expected: %Lf, max: %Lf\">%Lf</span></p>", result.text, result.min, result.expected, result.max, result.actual);
output_print(out_block);
free(out_block);
}else{
output_print("<p>Error!</p>");
}
yylex_destroy(scanner);
}
int main(){
webdice("cenas");
webdice("1d4");
webdice("5");
return 0;
}
Loading…
Cancel
Save