File: matrix.y

package info (click to toggle)
dynare 4.4.3-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 41,312 kB
  • ctags: 15,840
  • sloc: cpp: 77,029; ansic: 29,056; pascal: 13,241; sh: 4,811; objc: 3,061; yacc: 3,013; makefile: 1,476; lex: 1,258; python: 162; lisp: 54; xml: 8
file content (68 lines) | stat: -rw-r--r-- 1,313 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Copyright (C) 2006-2011, Ondra Kamenik

%{
#include "location.h"
#include "matrix_parser.h" 
#include "matrix_tab.hh"

	void matrix_error(const char*);
	int matrix_lex(void);
	extern int matrix_lineno;
	extern ogp::MatrixParser* mparser;
	extern YYLTYPE matrix_lloc;

//	static void print_token_value (FILE *, int, YYSTYPE);
//#define YYPRINT(file, type, value) print_token_value (file, type, value)

%}

%union {
	double val;
	int integer;
}

%token NEW_ROW
%token <val> DNUMBER

%name-prefix="matrix_";

%locations
%error-verbose

%%

matrix : first_row other_rows
    | first_row other_rows empty_rows
    | first_row empty_rows other_rows empty_rows
    | first_row empty_rows other_rows
    | empty_rows first_row other_rows
    | empty_rows first_row other_rows empty_rows
    | empty_rows first_row empty_rows other_rows empty_rows
    | empty_rows first_row empty_rows
    | first_row empty_rows
    | empty_rows first_row
    | first_row
    | empty_rows
    ;

empty_rows : empty_rows NEW_ROW | NEW_ROW;

lod : DNUMBER {mparser->add_item($1);}
    | lod DNUMBER {mparser->add_item($2);}
    ;

first_row : lod;

other_rows : other_rows one_row | other_rows empty_rows one_row |one_row ;

one_row : NEW_ROW {mparser->start_row();} lod;


%%

void matrix_error(const char* s)
{
	mparser->error(s);
}