/[svn]/linuxsampler/trunk/src/scriptvm/parser.y
ViewVC logotype

Log of /linuxsampler/trunk/src/scriptvm/parser.y

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (download) (annotate)
Sticky Revision:

Revision 3690 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jan 3 10:18:21 2020 UTC (9 months, 2 weeks ago) by schoenebeck
File length: 71995 byte(s)
Diff to previous 3595
NKSP: Added support for RPN and NRPN event handlers:

* NKSP language: Added support for RPN event handler
  ("on rpn ... end on" in instrument scripts).

* NKSP language: Added support for NRPN event handler
  ("on nrpn ... end on" in instrument scripts).

* Added built-in read-only variables "$RPN_ADDRESS" and "$RPN_VALUE" which
  may be read from the new RPN/NRPN script handlers to get the (N)RPN
  parameter that had been changed and its new value.

* Added built-in const variables "$NI_CB_TYPE_RPN" and "$NI_CB_TYPE_NRPN"
  which are identifying the new (N)RPN handlers as such at script runtime.

* Bumped version (2.1.1.svn30).


Revision 3595 - (view) (download) (annotate) - [select for diffs]
Modified Tue Sep 3 11:06:33 2019 UTC (13 months, 2 weeks ago) by schoenebeck
File length: 71515 byte(s)
Diff to previous 3592
* Fixed compiler errors with GCC 8.x.
* Bumped version (2.1.1.svn16).


Revision 3592 - (view) (download) (annotate) - [select for diffs]
Modified Mon Sep 2 09:40:44 2019 UTC (13 months, 2 weeks ago) by schoenebeck
File length: 71031 byte(s)
Diff to previous 3586
* NKSP language: Allow unary '+' operator.

* Test cases: Added NKSP tests for unary '+' operator.

* Bumped version (2.1.1.svn15).


Revision 3586 - (view) (download) (annotate) - [select for diffs]
Modified Fri Aug 30 18:59:21 2019 UTC (13 months, 3 weeks ago) by schoenebeck
File length: 70984 byte(s)
Diff to previous 3585
* NKSP language: Fixed assignment to array variables which was
  broken by floating point support introduction (svn r3573).

* Test cases: Added NKSP int array and real array tests for value
  assignment and initialization of arrays.

* Bumped version (2.1.1.svn11).


Revision 3585 - (view) (download) (annotate) - [select for diffs]
Modified Fri Aug 30 17:51:24 2019 UTC (13 months, 3 weeks ago) by schoenebeck
File length: 70965 byte(s)
Diff to previous 3582
NKSP: Cleanup regarding multiple data types for built-in function args.

* NKSP VM API cleanup: Get rid of legacy method
  VMFunction::argType(vmint iArg) which was already superseded by its new
  replacement VMFunction::acceptsArgType(vmint iArg, ExprType_t type).

* NKSP parser: if wrong argument type was passed to a built-in function and
  that built-in function accepts more than one data type for the argument,
  then show all supported data types as parser error message.

* Bumped version (2.1.1.svn10).


Revision 3582 - (view) (download) (annotate) - [select for diffs]
Modified Fri Aug 30 12:23:40 2019 UTC (13 months, 3 weeks ago) by schoenebeck
File length: 71008 byte(s)
Diff to previous 3581
NKSP VM refactoring: Renamed all methods, functions and
classes matching pattern '*ScalarNumber*' to simply '*Number*':

- Renamed classes VMScalarNumberExpr -> VMNumberExpr,
  ScalarNumberExpr -> NumberExpr, ScalarNumberVariable ->
  NumberVariable, ScalarNumberBinaryOp -> NumberBinaryOp,
  VMScalarNumberResultFunction -> VMNumberResultFunction.

- Renamed method VMExpr::asScalarNumberExpr() -> VMExpr::asNumber().

- Renamed function isScalarNumber() -> isNumber().


Revision 3581 - (view) (download) (annotate) - [select for diffs]
Modified Fri Aug 30 11:40:25 2019 UTC (13 months, 3 weeks ago) by schoenebeck
File length: 72220 byte(s)
Diff to previous 3573
NKSP: Allow more wider support of standard measuring units & 'final'ness.

* Raised compiler requirement to be C++14 compliant (due to severe
  restrictions regarding C-style aggregate initializer lists in C++11
  which are now massively used throughout the code base).

* NKSP VM API: Allow units and 'final'ness to be returned as result from
  built-in functions (added methods VMFunction::returnUnitType() and
  VMFunction::returnsFinal() for that purpose which must be implemented by
  built-in function implementations).

* NKSP language: Allow metric unit prefixes of numeric scalar and array
  variables to be changed freely at runtime (unlike unit types like Hz etc.
  which are still sticky parse-time features of variables which cannot be
  changed at runtime for the intentional sake of determinism).

* NKSP language: 'final' values are prohibited for array variables for now
  (attempt causes a parsers error).

* NKSP language: expressions with unit types (e.g. Hz) are prohibited for
  conditions of runtime control structures like if(), while(), select()
  (attempt causes a parser error).

* NKSP VM API: Allow built-in functions to perform their own, individual
  parse time checks of arguments going to be passed to the function at
  runtime (added method VMFunction::checkArgs() for that purpose).

* NKSP language: raise parser warning if only one operand of binary
  operators (like logical 'or' comparison) contain a 'final' value (because
  it would always yield in a 'final' result in such cases).

* NKSP language: Allow comparison (=, #, <, >, <=, >=) of values with
  different metric unit prefixes, which will behave as expected (e.g.
  result of expression '1000us < 2ms' is true).

* NKSP language: Allow adding values with different metric unit prefixes
  (e.g. result of expression '100Hz + 5kHz' is '5100Hz').

* NKSP language: Allow subtracting values with different metric unit
  prefixes (e.g. result of expression '1ms - 20us' is '980us').

* NKSP language: Allow multiplying with any metric unit prefixes
  (e.g. result of expression '2k * 3ms' is '6s'), however multiplications
  with unit types on both sides (e.g. '2s * 2s') is still prohibited since
  we don't have any considerable practical use for a term like '4s^2'
  (hence any attempt multiplying two unit types still causes parser error).

* NKSP language: Allow dividing by any metric unit prefixes and allow
  division of same unit type on both sides (e.g. expression '8kHz / 1000Hz'
  yields in unit free result '8'). So this is now a way to cast units away
  e.g. for passing the result to other expressions, certain function calls
  or variables which are not accepting any units (or that specific unit).

* NKSP language: integer arrays and real number arrays can now be converted
  to strings (e.g. for dumping their content with message() calls for
  script debugging purposes).

* NKSP language: expressions and variables with units are now correctly
  casted to strings (e.g. with message() calls).

* NKSP language: comparing real numbers for equalness (e.g. '~foo = 3.1') or
  unequalness (e.g. '~foo # 3.1') is now less strict and takes the expected
  floating point tolerances into account.

* NKSP VM API: Added methods VMScalarNumberExpr::evalCastInt() and
  VMScalarNumberExpr::evalCastReal().

* NKSP VM API: Added base class 'VMNumberArrayExpr' for classes
  'VMIntArrayExpr' and 'VMRealArrayExpr'.

* NKSP VM API: replaced all unitPrefix() (parse time) methods by
  unitFactor() (runtime) methods.

* Built-in function "exit()" supports now returning units and 'final'ness
  exclusively for test cases.

* The following built-in functions support now units as well: "abs()",
  "random()", "inc()", "dec()", "in_range()", "min()", "max()",
  "real_to_int()", "int()", "int_to_real()" and "real()".

* Built-in functions "array_equal()", "search()" and "sort()" support now
  real number arrays (correctly) as well.

* Added individual parse time checks of arguments to be passed to built-in
  functions "random()", "inc()", "dec()", "in_range()", "min()", "max()",
  "array_equal()" and "search()" specific for their individual purposes.

* Test cases: Added massive amount of NKSP test cases for standard
  measuring units and 'final' operator usage cases.

* Test cases: Added NKSP test cases for (floating point tolerance aware)
  real number equalness / unequalness comparison.

* Bumped version (2.1.1.svn8).


Revision 3573 - (view) (download) (annotate) - [select for diffs]
Modified Tue Aug 27 21:36:53 2019 UTC (13 months, 3 weeks ago) by schoenebeck
File length: 61253 byte(s)
Diff to previous 3564
NKSP: Introducing floating point support.

* NKSP language: Added support for NKSP real number literals and
  arithmetic operations on them (e.g. "(3.9 + 2.9) / 12.3 - 42.0").

* NKSP language: Added support for NKSP real number (floating point)
  script variables (declare ~foo := 3.4).

* NKSP language: Added support for NKSP real number (floating point)
  array script variables (declare ?foo[3] := ( 1.1, 2.7, 49.0 )).

* NKSP built-in script function "message()" accepts now real number
  argument as well.

* Added built-in NKSP script function "real_to_int()" and its short
  hand form "int()" for casting from real number to integer in NKSP
  scripts.

* Added built-in NKSP script function "int_to_real()" and its short
  hand form "real()" for casting from integer to real number in NKSP
  scripts.

* Bumped version (2.1.1.svn6).


Revision 3564 - (view) (download) (annotate) - [select for diffs]
Modified Sat Aug 24 09:18:57 2019 UTC (13 months, 4 weeks ago) by schoenebeck
File length: 53619 byte(s)
Diff to previous 3561
NKSP: Bug fixes regarding new measurement units feature:

* Fix: Engine internal Fade of script synthesis parameters volume, pitch
  and pan were not rendered at all.

* Fix: Backward compatibility of built-in function arguments without a
  metric unit prefix was broken (resulted in incorrect value
  transformation).

* Fix: built-in script function change_play_pos() resolved wrong arguments.

* Bumped version (2.1.1.svn5).


Revision 3561 - (view) (download) (annotate) - [select for diffs]
Modified Fri Aug 23 11:44:00 2019 UTC (13 months, 4 weeks ago) by schoenebeck
File length: 53275 byte(s)
Diff to previous 3557
NKSP: Added standard units support for numbers and final "!" operator:

* NKSP strictness: Variable names, function names and preprocessor condition
  names must start with a regular character (a-z or A-Z); starting them with
  a digit or underscore is no longer allowed.

* NKSP parser fix: equal comparison operator "=" and not equal comparison
  operator "#" must only accept integer operands.

* NKSP language: Implemented support for standard units like Hertz, seconds,
  Bel including support for metric unit prefixes; so one can now e.g.
  conveniently use numbers in scripts like "5us" meaning "5 microseconds",
  or e.g. "12kHz" meaning "12 kilo Hertz", or e.g. "-14mdB" meaning
  "minus 14 Millidecibel", or e.g. "28c" meaning "28 cents" (for tuning).

* NKSP language: Introduced "final" operator "!" which is specifically
  intended for synthesis parameter values to denote that the synthesis
  parameter value is intended to be the "final" value for that synthesis
  parameter that should explicitly be used by the engine and thus causing
  the sampler engine to ignore all other modulation sources for the same
  synthesis parameter (like e.g. LFO, EG); by simply prefixing a value,
  variable or formula with this new "!" operator the expression is marked as
  being "final".

* Bumped version (2.1.1.svn4).


Revision 3557 - (view) (download) (annotate) - [select for diffs]
Modified Sun Aug 18 00:06:04 2019 UTC (14 months ago) by schoenebeck
File length: 38993 byte(s)
Diff to previous 3311
* NKSP: Introducing 64 bit support for NKSP integer scripts
  variables (declare $foo).
* Require C++11 compiler support.
* Autoconf: Added m4/ax_cxx_compile_stdcxx.m4 macro which is used
  for checking in configure for C++11 support (as mandatory
  requirement) and automatically adds compiler argument if required
  (e.g. -std=C++11).
* Bumped version (2.1.1.svn3).


Revision 3311 - (view) (download) (annotate) - [select for diffs]
Modified Sat Jul 15 16:24:59 2017 UTC (3 years, 3 months ago) by schoenebeck
File length: 38977 byte(s)
Diff to previous 3260
* NKSP: Added built-in preprocessor condition NKSP_NO_MESSAGE,
  which can be set to disable all subsequent built-in "message()"
  function calls on preprocessor level.
* Bumped version (2.0.0.svn71).


Revision 3260 - (view) (download) (annotate) - [select for diffs]
Modified Wed May 31 21:07:44 2017 UTC (3 years, 4 months ago) by schoenebeck
File length: 38407 byte(s)
Diff to previous 3259
* NKSP language: Added support for "synchronized .. end synchronized"
  code blocks.
* Bumped version (2.0.0.svn60).


Revision 3259 - (view) (download) (annotate) - [select for diffs]
Modified Wed May 31 14:41:04 2017 UTC (3 years, 4 months ago) by schoenebeck
File length: 38270 byte(s)
Diff to previous 3257
* NKSP language fix: Unknown characters were not handled correctly.
* Bumped version (2.0.0.svn59).


Revision 3257 - (view) (download) (annotate) - [select for diffs]
Modified Tue May 30 17:20:02 2017 UTC (3 years, 4 months ago) by schoenebeck
File length: 38230 byte(s)
Diff to previous 3253
* NKSP language: Added support for user declared const array variables.
* NKSP language: Raise parser warning if array variable is accessed with
  an index that exceeds the array's size.
* Bumped version (2.0.0.svn58).


Revision 3253 - (view) (download) (annotate) - [select for diffs]
Modified Tue May 30 12:08:45 2017 UTC (3 years, 4 months ago) by schoenebeck
File length: 34393 byte(s)
Diff to previous 3054
* NKSP: built-in "play_note()" function now accepts -2 for its fourth
  argument (note duration) which means the life time of the note shall
  be sticked to the requested note number of argument 1.
* NKSP Fix: built-in "play_note()" function now returns 0 as result
  value if -1 was passed for its fourth argument (note duration) and
  the respective parent note is already gone.
* NKSP: Built-in array variable %KEY_DOWN[] is now a read-only
  variable.
* Built-in variable $EVENT_NOTE is now a read-only variable.
* Built-in variable $EVENT_VELOCITY is now a read-only variable.
* Bumped version (2.0.0.svn56).


Revision 3054 - (view) (download) (annotate) - [select for diffs]
Modified Thu Dec 15 12:47:45 2016 UTC (3 years, 10 months ago) by schoenebeck
File length: 34079 byte(s)
Diff to previous 3052
* Fixed numerous compiler warnings.
* Bumped version (2.0.0.svn32).


Revision 3052 - (view) (download) (annotate) - [select for diffs]
Modified Wed Dec 14 17:34:54 2016 UTC (3 years, 10 months ago) by schoenebeck
File length: 34066 byte(s)
Diff to previous 3034
- Preparations for Xcode project update.


Revision 3034 - (view) (download) (annotate) - [select for diffs]
Modified Mon Oct 31 00:05:00 2016 UTC (3 years, 11 months ago) by schoenebeck
File length: 33960 byte(s)
Diff to previous 3013
* Fixed a bunch of minor issues (mostly compiler warnings).
* Bumped version (2.0.0.svn31).


Revision 3013 - (view) (download) (annotate) - [select for diffs]
Modified Sat Oct 15 23:54:27 2016 UTC (4 years ago) by schoenebeck
File length: 33954 byte(s)
Diff to previous 3008
* NKSP: Fixed NKSP parser warning "Not a statement" when assigning an
  initializer list to an array variable.
* Bumped version (2.0.0.svn27).


Revision 3008 - (view) (download) (annotate) - [select for diffs]
Modified Tue Oct 11 18:25:12 2016 UTC (4 years ago) by schoenebeck
File length: 33913 byte(s)
Diff to previous 2951
* NKSP: Provide more user friendly error messages on syntax errors.
* Bumped version (2.0.0.svn26).


Revision 2951 - (view) (download) (annotate) - [select for diffs]
Modified Fri Jul 15 20:07:47 2016 UTC (4 years, 3 months ago) by schoenebeck
File length: 32143 byte(s)
Diff to previous 2947
* NKSP language: Added support for user defined script functions.
* Bumped version (2.0.0.svn18).


Revision 2947 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jul 14 10:37:28 2016 UTC (4 years, 3 months ago) by schoenebeck
File length: 30121 byte(s)
Diff to previous 2945
* NKSP language correction: allow empty statements in entire language
  (i.e. "if end if").
* Bumped version (2.0.0.svn16).


Revision 2945 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jul 14 00:22:26 2016 UTC (4 years, 3 months ago) by schoenebeck
File length: 30037 byte(s)
Diff to previous 2942
* NKSP: Implemented built-in script function "inc()".
* NKSP: Implemented built-in script function "dec()".
* NKSP language fix: division expressions were evaluated too often.
* NKSP language fix: string concatenation operator was right
  associative instead of left (to right).
* Bumped version (2.0.0.svn15).


Revision 2942 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jul 13 15:51:06 2016 UTC (4 years, 3 months ago) by schoenebeck
File length: 29737 byte(s)
Diff to previous 2935
* NKSP: Implemented built-in script variable "$KSP_TIMER".
* NKSP: Implemented built-in script variable "$NKSP_REAL_TIMER".
* NKSP: Implemented built-in script variable "$NKSP_PERF_TIMER".
* NKSP: Implemented built-in script variable "$ENGINE_UPTIME".
* Bumped version (2.0.0.svn14).


Revision 2935 - (view) (download) (annotate) - [select for diffs]
Modified Sun Jul 10 14:24:13 2016 UTC (4 years, 3 months ago) by schoenebeck
File length: 29586 byte(s)
Diff to previous 2911
* NKSP: Added & implemented built-in script function "change_cutoff()".
* NKSP: Added & implemented built-in script function "change_reso()".
* NKSP: Added & implemented built-in script function "event_status()".
* NKSP: Added built-in script constants "$EVENT_STATUS_INACTIVE" and
  "$EVENT_STATUS_NOTE_QUEUE" both for being used as flags for
  built-in "event_status()" script function.
* NKSP language: Added support for bitwise operators ".or.", ".and."
  and ".not.".
* NKSP language scanner: Fixed IDs matching to require at least one
  character (i.e. when matching function names or variable names).
* NKSP language scanner: disabled unusued rules.
* Bumped version (2.0.0.svn12).


Revision 2911 - (view) (download) (annotate) - [select for diffs]
Modified Mon May 16 20:27:33 2016 UTC (4 years, 5 months ago) by schoenebeck
File length: 27611 byte(s)
Diff to previous 2889
* NKSP language grammar correction: allow empty event handler bodies
  like "on note end on".
* Bumped version (2.0.0.svn9).


Revision 2889 - (view) (download) (annotate) - [select for diffs]
Modified Mon Apr 25 17:28:23 2016 UTC (4 years, 5 months ago) by schoenebeck
File length: 27505 byte(s)
Diff to previous 2888
* Added new C++ API class "ScriptVMFactory".
* Instrument Scripts: extended parser issues to provide not only first
  line and first column, but also last line and last column of issue
  (thus marking the precise span of the issue within the source code).
* Bumped version (2.0.0.svn7).


Revision 2888 - (view) (download) (annotate) - [select for diffs]
Modified Sun Apr 24 18:16:10 2016 UTC (4 years, 5 months ago) by schoenebeck
File length: 27429 byte(s)
Diff to previous 2585
* Instrument Scripts: Fixed line numbers on parser error/warning messages.
* Instrument Scripts: Added output of precise column on parser
  error/warning messages.
* Shut up some irrelevant errors of parser generating shell scripts.
* Bumped version (2.0.0.svn6).


Revision 2585 - (view) (download) (annotate) - [select for diffs]
Modified Sat May 31 21:09:25 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 27007 byte(s)
Diff to previous 2581
* Fixed compile error on Windows.


Revision 2581 - (view) (download) (annotate) - [select for diffs]
Added Fri May 30 12:48:05 2014 UTC (6 years, 4 months ago) by schoenebeck
File length: 27005 byte(s)
* (WIP) Implemented parser and VM for upcoming new real-time instrument
  script support. It needs yet to be integrated into the sampler's
  sampler engines. You can toy around for now with the command line tool
  "ls_instr_script" and i.e. examples showing the core language features
  under src/scriptvm/examples/.
* Bumped version (1.0.0.svn41).


This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.

  Diffs between and
  Type of Diff should be a

  ViewVC Help
Powered by ViewVC