<feed xmlns='http://www.w3.org/2005/Atom'>
<title>parscan/lang/golang, branch main</title>
<subtitle>experimental interpreter
</subtitle>
<link rel='alternate' type='text/html' href='https://git.vertes.org/parscan/'/>
<entry>
<title>feat: add support for range clause and iterators</title>
<updated>2026-01-21T18:26:42+00:00</updated>
<author>
<name>Marc Vertes</name>
<email>mvertes@free.fr</email>
</author>
<published>2026-01-21T18:26:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vertes.org/parscan/commit/?id=c922c797204069f42a7abf88500c5708f68a8e43'/>
<id>c922c797204069f42a7abf88500c5708f68a8e43</id>
<content type='text'>
- vm: added Pull, Next and Stop instructions, to implement iterators
- lang: add Range, Next and Stop tokens
- parser: handle range clause. Still naive and incomplete.
- comp: generate iterator instructions from range clause.

Work in progress. Only initial support for slices. Many more tests
and combinations needed, but the main pattern is there now.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- vm: added Pull, Next and Stop instructions, to implement iterators
- lang: add Range, Next and Stop tokens
- parser: handle range clause. Still naive and incomplete.
- comp: generate iterator instructions from range clause.

Work in progress. Only initial support for slices. Many more tests
and combinations needed, but the main pattern is there now.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix: improve handling of indirections</title>
<updated>2026-01-14T17:44:17+00:00</updated>
<author>
<name>Marc Vertes</name>
<email>mvertes@free.fr</email>
</author>
<published>2026-01-14T17:44:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vertes.org/parscan/commit/?id=31e3793202402fda21905027c18ebfa5c8d8c832'/>
<id>31e3793202402fda21905027c18ebfa5c8d8c832</id>
<content type='text'>
Added 2 VM instructions, FnewE variant of Fnew with a dereference,
and FieldE, variant of Field with dereference.
It's now possible to pointers in structs and literal composites.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Added 2 VM instructions, FnewE variant of Fnew with a dereference,
and FieldE, variant of Field with dereference.
It's now possible to pointers in structs and literal composites.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix: set 'HasInit' token property in language definition</title>
<updated>2026-01-07T11:09:20+00:00</updated>
<author>
<name>Marc Vertes</name>
<email>mvertes@free.fr</email>
</author>
<published>2026-01-07T11:09:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vertes.org/parscan/commit/?id=ca80eeaa812b49afea75d3084d0c62770e4a8d18'/>
<id>ca80eeaa812b49afea75d3084d0c62770e4a8d18</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix: correct and simplify parsing of expressions.</title>
<updated>2026-01-06T18:02:29+00:00</updated>
<author>
<name>Marc Vertes</name>
<email>mvertes@free.fr</email>
</author>
<published>2026-01-06T18:02:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vertes.org/parscan/commit/?id=bffc031ea83c7176aac3d3828de0060c6630140c'/>
<id>bffc031ea83c7176aac3d3828de0060c6630140c</id>
<content type='text'>
The expressions were parsed from right to left, and it was incorrect and
cumbersome. Now they are processed from left to right, with a simpler
and correct handling of precedence rules.

The vm function call syntax has been changed to set the function
before the input arguments on the stack, as to follow the declaring
order in languages.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The expressions were parsed from right to left, and it was incorrect and
cumbersome. Now they are processed from left to right, with a simpler
and correct handling of precedence rules.

The vm function call syntax has been changed to set the function
before the input arguments on the stack, as to follow the declaring
order in languages.
</pre>
</div>
</content>
</entry>
<entry>
<title>chore: add linters and some lint fixes (#8)</title>
<updated>2024-04-02T09:27:13+00:00</updated>
<author>
<name>Marc Vertes</name>
<email>mvertes@free.fr</email>
</author>
<published>2024-04-02T09:27:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vertes.org/parscan/commit/?id=1bff92c52b27b9a516599e172fe9852c3d99be38'/>
<id>1bff92c52b27b9a516599e172fe9852c3d99be38</id>
<content type='text'>
* chore: add linters and some lint fixes

Configure some golangci-lint linters to get the code quality right.
Apply the first fixes.

Next step will be to add github actions to run lint and tests in
github CI.

* chore: more lint, fixed comments and variable names. no semantic change.

* chore: add Makefile

This makefile is intended to be used as a local substitute to github
actions.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* chore: add linters and some lint fixes

Configure some golangci-lint linters to get the code quality right.
Apply the first fixes.

Next step will be to add github actions to run lint and tests in
github CI.

* chore: more lint, fixed comments and variable names. no semantic change.

* chore: add Makefile

This makefile is intended to be used as a local substitute to github
actions.</pre>
</div>
</content>
</entry>
<entry>
<title>chore: import from gnolang</title>
<updated>2024-01-15T15:29:41+00:00</updated>
<author>
<name>Marc Vertes</name>
<email>mvertes@free.fr</email>
</author>
<published>2024-01-15T15:29:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vertes.org/parscan/commit/?id=828cfd1c8da5e243fd0f34530fb1a7faab49784e'/>
<id>828cfd1c8da5e243fd0f34530fb1a7faab49784e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>parser: add support for unary operators</title>
<updated>2023-11-20T14:54:52+00:00</updated>
<author>
<name>Marc Vertes</name>
<email>mvertes@free.fr</email>
</author>
<published>2023-11-20T14:54:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vertes.org/parscan/commit/?id=6a0490257bf235d011004bc303306f617ac6ea31'/>
<id>6a0490257bf235d011004bc303306f617ac6ea31</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>parser: parse struct type declarations</title>
<updated>2023-11-15T21:38:46+00:00</updated>
<author>
<name>Marc Vertes</name>
<email>mvertes@free.fr</email>
</author>
<published>2023-11-15T21:38:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vertes.org/parscan/commit/?id=a79e558d825c5b777c95c5e098b01391ee36781e'/>
<id>a79e558d825c5b777c95c5e098b01391ee36781e</id>
<content type='text'>
Recursive structs and embedded structs are not supported yet.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Recursive structs and embedded structs are not supported yet.
</pre>
</div>
</content>
</entry>
<entry>
<title>parser: implement operator precedence rules in expressions</title>
<updated>2023-10-21T15:20:52+00:00</updated>
<author>
<name>Marc Vertes</name>
<email>mvertes@free.fr</email>
</author>
<published>2023-10-21T15:20:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vertes.org/parscan/commit/?id=20d331813cf05f42961f0f6df531c2880f753a07'/>
<id>20d331813cf05f42961f0f6df531c2880f753a07</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>move to a direct byte code compiler (#8)</title>
<updated>2023-10-12T08:51:58+00:00</updated>
<author>
<name>Marc Vertes</name>
<email>marc.vertes@tendermint.com</email>
</author>
<published>2023-10-12T08:51:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vertes.org/parscan/commit/?id=37b9da32d3b911091deb254f6cba2a137c471287'/>
<id>37b9da32d3b911091deb254f6cba2a137c471287</id>
<content type='text'>
* chore: refactor to keep only the new parser and bytecode vm

* scanner: remove Token.value field

* scanner: remove scanner.kind field

* chore: move language specification in lang package

This avoid a cyclic dependency in scanner_test which can now use
the golang/GoSpec language specification for Go.

* clean code

* scanner: export scanner fields

Also parser now generate function calls, including externals.

* chore: fix lint issues

* parser: handle strings

* wip

* parser: implement support for 'if, else, else if' statements

Resolving labels in the compiler still in progress.

* parser: support if statements, improve compiler

* improve handling of functions

* improve support of local variables

* scanner: trim leading and trailing spaces

* fixes to make fibonacci work

* parser: improve README, fix function parameters parsing</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* chore: refactor to keep only the new parser and bytecode vm

* scanner: remove Token.value field

* scanner: remove scanner.kind field

* chore: move language specification in lang package

This avoid a cyclic dependency in scanner_test which can now use
the golang/GoSpec language specification for Go.

* clean code

* scanner: export scanner fields

Also parser now generate function calls, including externals.

* chore: fix lint issues

* parser: handle strings

* wip

* parser: implement support for 'if, else, else if' statements

Resolving labels in the compiler still in progress.

* parser: support if statements, improve compiler

* improve handling of functions

* improve support of local variables

* scanner: trim leading and trailing spaces

* fixes to make fibonacci work

* parser: improve README, fix function parameters parsing</pre>
</div>
</content>
</entry>
</feed>
