aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel/src/symop.l
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2019-02-11 18:15:32 +0100
committerThomas White <taw@physics.org>2019-03-11 16:49:36 +0100
commit24ce9e4ac098d7744fb23f535eb97f3375425fd8 (patch)
tree5f8d9a85dd1761e51e0905cbaea0e20a5e299d43 /libcrystfel/src/symop.l
parent9a3ef1de0b661085a26d9be60bcff9e261783acd (diff)
Symmetry operation parser using Flex/Bison
Diffstat (limited to 'libcrystfel/src/symop.l')
-rw-r--r--libcrystfel/src/symop.l51
1 files changed, 51 insertions, 0 deletions
diff --git a/libcrystfel/src/symop.l b/libcrystfel/src/symop.l
new file mode 100644
index 00000000..b00b35b4
--- /dev/null
+++ b/libcrystfel/src/symop.l
@@ -0,0 +1,51 @@
+/*
+ * symop.l
+ *
+ * Lexical scanner for symmetry operations
+ *
+ * Copyright © 2019 Deutsches Elektronen-Synchrotron DESY,
+ * a research centre of the Helmholtz Association.
+ *
+ * Authors:
+ * 2019 Thomas White <taw@physics.org>
+ *
+ * This file is part of CrystFEL.
+ *
+ * CrystFEL is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * CrystFEL is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with CrystFEL. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+%{
+ #define YYDEBUG 1
+ #include "rational.h"
+ #include "symop-parse.h"
+%}
+
+%option prefix="symop"
+%option noyywrap nounput noinput
+
+%%
+
+[,] { return COMMA; }
+[0-9]+ { symoplval.n = atoi(yytext); return NUMBER; }
+[/] { return DIVIDE; }
+[+] { return PLUS; }
+[-] { return MINUS; }
+[ahx] { return H; }
+[bky] { return K; }
+[clz] { return L; }
+[(] { return OPENB; }
+[)] { return CLOSEB; }
+
+%%