summaryrefslogtreecommitdiff
path: root/src/genjsbind-lexer.l
diff options
context:
space:
mode:
Diffstat (limited to 'src/genjsbind-lexer.l')
-rw-r--r--src/genjsbind-lexer.l52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/genjsbind-lexer.l b/src/genjsbind-lexer.l
new file mode 100644
index 0000000..e976a8f
--- /dev/null
+++ b/src/genjsbind-lexer.l
@@ -0,0 +1,52 @@
+/*
+ * binding generator lexer
+ */
+
+/* lexer options */
+%option never-interactive
+%option bison-bridge
+%option nodefault
+%option warn
+%option prefix="genjsbind_"
+%option nounput
+
+/* header block */
+%{
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "genjsbind-parser.h"
+
+%}
+
+ /* other Unicode “space separator” */
+USP (\xe1\x9a\x80)|(\xe1\xa0\x8e)|(\xe2\x80[\x80-\x8a])|(\xe2\x80\xaf)|(\xe2\x81\x9f)|(\xe3\x80\x80)
+
+/* non breaking space \u00A0 */
+NBSP (\xc2\xa0)
+
+whitespace ([ \t\v\f\n]|{NBSP}|{USP})
+
+multicomment \/\*(([^*])|(\*[^/]))*\*\/
+
+quotedstring [^\"\\\n\r]
+
+other [^\t\n\r 0-9A-Z_a-z]
+
+%%
+
+{whitespace} /* nothing */
+
+webidlfile return TOK_IDLFILE;
+
+\"{quotedstring}*\" yylval->text = strndup(yytext + 1,strlen(yytext+1) - 1 ); return TOK_STRING_LITERAL;
+
+{multicomment} /* nothing */
+
+{other} return (int) yytext[0];
+
+. /* nothing */
+
+%%