/[svn]/linuxsampler/trunk/src/scriptvm/parser_shared.h
ViewVC logotype

Contents of /linuxsampler/trunk/src/scriptvm/parser_shared.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3729 - (show annotations) (download) (as text)
Fri Jan 31 10:57:53 2020 UTC (4 years, 2 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 3427 byte(s)
NKSP parser: track code locations also by raw byte position and length.

* NKSP VM API: Added member variables 'firstByte' and 'lengthBytes' to
  struct 'CodeBlock'.

* NKSP Editor API: Added methods firstByte() and lengthBytes() to
  class 'VMSourceToken'.

* NKSP VM language parser: track all positions also by raw byte offset
  and length (along to the already existing tracking by line/column).

* NKSP editor syntax highlighting scanner: track all positions also by
  raw byte offset and length (along to the already existing tracking by
  line/column).

* Bumped version (2.1.1.svn45).

1 /*
2 * Copyright (c) 2014-2020 Christian Schoenebeck
3 *
4 * http://www.linuxsampler.org
5 *
6 * This file is part of LinuxSampler and released under the same terms.
7 * See README file for details.
8 */
9
10 // types shared between auto generated lexer and parser ...
11
12 #ifndef LS_INSTRSCRIPTSPARSER_SHARED_H
13 #define LS_INSTRSCRIPTSPARSER_SHARED_H
14
15 #include <stdio.h>
16 #include "tree.h"
17
18 #if AC_APPLE_UNIVERSAL_BUILD
19 # include "parser.tab.h"
20 #else
21 # include "parser.h"
22 #endif
23
24 #include "../common/global_private.h"
25
26 struct _YYSTYPE {
27 union {
28 LinuxSampler::vmint iValue;
29 LinuxSampler::vmfloat fValue;
30 char* sValue;
31 struct {
32 LinuxSampler::vmint iValue;
33 LinuxSampler::MetricPrefix_t prefix[2];
34 LinuxSampler::StdUnit_t unit;
35 } iUnitValue;
36 struct {
37 LinuxSampler::vmfloat fValue;
38 LinuxSampler::MetricPrefix_t prefix[2];
39 LinuxSampler::StdUnit_t unit;
40 } fUnitValue;
41 };
42 LinuxSampler::EventHandlersRef nEventHandlers;
43 LinuxSampler::EventHandlerRef nEventHandler;
44 LinuxSampler::StatementsRef nStatements;
45 LinuxSampler::StatementRef nStatement;
46 LinuxSampler::FunctionCallRef nFunctionCall;
47 LinuxSampler::ArgsRef nArgs;
48 LinuxSampler::ExpressionRef nExpression;
49 LinuxSampler::CaseBranch nCaseBranch;
50 LinuxSampler::CaseBranches nCaseBranches;
51 LinuxSampler::Qualifier_t varQualifier;
52 };
53 #define YYSTYPE _YYSTYPE
54 #define yystype YYSTYPE ///< For backward compatibility.
55 #ifndef YYSTYPE_IS_DECLARED
56 # define YYSTYPE_IS_DECLARED ///< We tell the lexer / parser that we use our own data structure as defined above.
57 #endif
58
59 // custom Bison location type to support raw byte positions
60 struct _YYLTYPE {
61 int first_line;
62 int first_column;
63 int last_line;
64 int last_column;
65 int first_byte;
66 int length_bytes;
67 };
68 #define YYLTYPE _YYLTYPE
69 #define YYLTYPE_IS_DECLARED 1
70
71 // override Bison's default location passing to support raw byte positions
72 #define YYLLOC_DEFAULT(Cur, Rhs, N) \
73 do \
74 if (N) \
75 { \
76 (Cur).first_line = YYRHSLOC(Rhs, 1).first_line; \
77 (Cur).first_column = YYRHSLOC(Rhs, 1).first_column; \
78 (Cur).last_line = YYRHSLOC(Rhs, N).last_line; \
79 (Cur).last_column = YYRHSLOC(Rhs, N).last_column; \
80 (Cur).first_byte = YYRHSLOC(Rhs, 1).first_byte; \
81 (Cur).length_bytes = (YYRHSLOC(Rhs, N).first_byte - \
82 YYRHSLOC(Rhs, 1).first_byte) + \
83 YYRHSLOC(Rhs, N).length_bytes; \
84 } \
85 else \
86 { \
87 (Cur).first_line = (Cur).last_line = \
88 YYRHSLOC(Rhs, 0).last_line; \
89 (Cur).first_column = (Cur).last_column = \
90 YYRHSLOC(Rhs, 0).last_column; \
91 (Cur).first_byte = YYRHSLOC(Rhs, 0).first_byte; \
92 (Cur).length_bytes = YYRHSLOC(Rhs, 0).length_bytes; \
93 } \
94 while (0)
95
96 #endif // LS_INSTRSCRIPTSPARSER_SHARED_H

  ViewVC Help
Powered by ViewVC