summaryrefslogtreecommitdiff
path: root/src/intersim2/config.y
diff options
context:
space:
mode:
Diffstat (limited to 'src/intersim2/config.y')
-rw-r--r--src/intersim2/config.y37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/intersim2/config.y b/src/intersim2/config.y
new file mode 100644
index 0000000..377d467
--- /dev/null
+++ b/src/intersim2/config.y
@@ -0,0 +1,37 @@
+%{
+
+int yylex(void);
+void yyerror(char * msg);
+void config_assign_string( char const * field, char const * value );
+void config_assign_int( char const * field, int value );
+void config_assign_float( char const * field, double value );
+
+#ifdef _WIN32
+#pragma warning ( disable : 4102 )
+#pragma warning ( disable : 4244 )
+#endif
+
+%}
+
+%union {
+ char *name;
+ int num;
+ double fnum;
+}
+
+%token <name> STR
+%token <num> NUM
+%token <fnum> FNUM
+
+%%
+
+commands : commands command
+ | command
+;
+
+command : STR '=' STR ';' { config_assign_string( $1, $3 ); free( $1 ); free( $3 ); }
+ | STR '=' NUM ';' { config_assign_int( $1, $3 ); free( $1 ); }
+ | STR '=' FNUM ';' { config_assign_float( $1, $3 ); free( $1 ); }
+;
+
+%%