projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
generated headers
[m6w6/ext-psi]
/
idl
/
main.c
diff --git
a/idl/main.c
b/idl/main.c
index 6732b7dbac8b1a2b46b6e5f0861a35d1243b54cd..c4664be36b45d426523d69d9487a0bfb0f0520ea 100644
(file)
--- a/
idl/main.c
+++ b/
idl/main.c
@@
-1,10
+1,10
@@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include "lexer.h"
-#include "parser.h"
-static volatile int TRACE;
+#include "main.h"
+
+static int TRACE;
static void loop(PSI_Lexer *L, void *P)
{
static void loop(PSI_Lexer *L, void *P)
{
@@
-16,12
+16,14
@@
static void loop(PSI_Lexer *L, void *P)
}
while (-1 != (t = PSI_LexerScan(L))) {
}
while (-1 != (t = PSI_LexerScan(L))) {
- T = PSI_TokenAlloc(L, t);
+ if (!(T = PSI_TokenAlloc(L, t))) {
+ break;
+ }
if (TRACE) {
printf("# Token: <%s>(%d)\n", T->text, t);
}
if (TRACE) {
printf("# Token: <%s>(%d)\n", T->text, t);
}
-
+
PSI_Parser(P, t, T, L);
}
PSI_Parser(P, 0, T, L);
PSI_Parser(P, t, T, L);
}
PSI_Parser(P, 0, T, L);
@@
-30,6
+32,7
@@
static void loop(PSI_Lexer *L, void *P)
int main(int argc, char *argv[])
{
PSI_Lexer L;
int main(int argc, char *argv[])
{
PSI_Lexer L;
+ PSI_Validator V;
void *P = PSI_ParserAlloc(malloc);
TRACE = !!getenv("TRACE");
void *P = PSI_ParserAlloc(malloc);
TRACE = !!getenv("TRACE");
@@
-42,7
+45,18
@@
int main(int argc, char *argv[])
loop(&L, P);
PSI_ParserFree(P, free);
loop(&L, P);
PSI_ParserFree(P, free);
+
+ if (!PSI_ValidatorInit(&V, &L)) {
+ perror("Failed to init validator");
+ return 2;
+ }
+
PSI_LexerDtor(&L);
PSI_LexerDtor(&L);
+ if (PSI_ValidatorValidate(&V)) {
+ printf("Whoa! VALID.\n");
+ }
+ PSI_ValidatorDtor(&V);
+
return 0;
}
return 0;
}