From 31c9cf6548bab685a6d22c169218432bb99c658f Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Wed, 13 Jul 2011 14:21:26 +0200 Subject: [PATCH] Going to use Ragel (not lex/yacc) --- dns.l | 98 ------------------------------------------------------- dns.y | 54 ------------------------------ kparse.rl | 0 zparse.rl | 0 4 files changed, 152 deletions(-) delete mode 100644 dns.l delete mode 100644 dns.y create mode 100644 kparse.rl create mode 100644 zparse.rl diff --git a/dns.l b/dns.l deleted file mode 100644 index 67d96e28..00000000 --- a/dns.l +++ /dev/null @@ -1,98 +0,0 @@ - package main - import "fmt" - - var debug = true - var lastOwner string - -CHAR [A-Za-z0-9/+=a.{}] -BLANK [ \t] - -%s classttl rest -%% -<*>;.*\n { - // Comments aren't interesting - YOUT("NL\n") - BEGIN(INITIAL) - } -<*>%$ { - // Empty lines - YOUT("\n") - BEGIN(INITIAL) - } - -^{CHAR}+ { - YOUT("qname") - yylval.val = yytext - lastOwner = yylval.val - BEGIN(classttl) - return QNAME - } -^{BLANK}+ { - YOUT("qname.") - // Return qname TOK, and fix yytext - yylval.val = lastOwner - BEGIN(classttl) - return QNAME - } - -{CHAR}+ { - yylval.val = yytext - switch yycheckit(yytext) { - case 0: - YOUT("{qtype:" + yytext + "}") - BEGIN(rest) - return QTYPE - case 1: - YOUT("qclass") - return QCLASS - case 2: - YOUT("ttl") - return TTL - } - } -{BLANK}+ { - YOUT(".") - } - -{CHAR}+ { - YOUT("str") - yylval.val = yytext - return STR - } -{BLANK}+ { - YOUT(".") - } -\n { - YOUT("NL\n") - BEGIN(INITIAL) - return NL - } - -%% - -func yycheckit(s string) int { - if s == "IN" { - return 1 - } - if s[0] >= '0' && s[0] <= '9' { - return 2 - } - return 0 -} - - -func YOUT(s string) { - if debug { - fmt.Printf("%s", s) - } -} - -type yyLex int - -func (yyLex) Lex(yylval *yySymType) int { - return yylex() -} - -func (yyLex) Error(s string) { - println(s) -} diff --git a/dns.y b/dns.y deleted file mode 100644 index 4591eac4..00000000 --- a/dns.y +++ /dev/null @@ -1,54 +0,0 @@ -%{ - -package main - -import ( - "fmt" - "os" -) - -var yylval *yySymType - -%} - -%union -{ - val string; - -} - - -%type rr rdata - -%token QNAME TTL QCLASS QTYPE STR NL - -%% -rr: - QNAME TTL QCLASS QTYPE rdata - { - fmt.Fprintf(os.Stderr, "{%v}\n", $$) - } -| QNAME QCLASS TTL QTYPE rdata -| QNAME TTL QTYPE rdata -| QNAME QCLASS QTYPE rdata -| QNAME QTYPE rdata - { - fmt.Fprintf(os.Stderr, "%v\n", $1) - } - -rdata: - rdata STR -| rdata NL -| STR -| NL - { - fmt.Fprintf(os.Stderr, "%v\n", $1) - } - -%% - -func main() { - yylval = new(yySymType) - yyin = os.Stdin - yyParse(yyLex(0)) -} diff --git a/kparse.rl b/kparse.rl new file mode 100644 index 00000000..e69de29b diff --git a/zparse.rl b/zparse.rl new file mode 100644 index 00000000..e69de29b