Olivier Goffart
d0b44a125d
Support for if expression in the interpreter
...
Dynamic model or expression not yet supported
2020-07-03 17:56:48 +02:00
Olivier Goffart
009addf9b4
Logical operations and comparisons and unary operators
2020-06-29 18:40:37 +02:00
Olivier Goffart
c4b1feeea0
Parse Equality opreration
...
(Code generation still missing)
2020-06-29 18:40:37 +02:00
Simon Hausmann
c653f555ea
Begin parsing Path elements
...
As types they follow the regular syntax convention of elements and
properties, but they are contextually restricted.
2020-06-29 16:48:20 +02:00
Simon Hausmann
ab697ab71d
Parse animation declarations into the object tree
...
So
animate x { ... }
is basically a short-hand for
PropertyAnimation {
...
}
<magically associated that animation with x whenever x is changed>
We could also support a shared animation syntax in the future:
blah := PropertyAnimation { ... }
animate x with blah;
animate y with blah;
This patch also adds a primitive PropertyAnimation struct, which will be
used by the generated code to collect the values specified in the .60
markup.
2020-06-24 17:43:48 +02:00
Olivier Goffart
f744fcccab
Lookup within objects properties
...
Generated code not yet implemented
2020-06-22 17:35:01 +02:00
Olivier Goffart
1bb8d94ab8
Support array for model in rust and in the interpreter
2020-06-19 19:46:59 +02:00
Olivier Goffart
6238d0d14f
Prepare for the ability to access the model
...
Add an expression type for the access of the model variable from a repeater
2020-06-19 13:46:55 +02:00
Olivier Goffart
864e74601d
Add a Model type for
...
I guess in the future we want to make model a type that knows its inside
2020-06-19 13:13:19 +02:00
Olivier Goffart
911d34e777
Use BTreeMap for the object type so that type order is deterministic
2020-06-18 17:48:08 +02:00
Olivier Goffart
be8f127317
Object and array parsing
2020-06-18 15:22:30 +02:00
Olivier Goffart
93dbc3b02d
Parse array
2020-06-18 12:20:04 +02:00
Olivier Goffart
d7fe69ff74
Lookup the index from a repeater expression
2020-06-16 17:23:38 +02:00
Olivier Goffart
56aad7f474
Fix looking up of 'id' so that we can't access inaccessible id
2020-06-16 16:04:38 +02:00
Olivier Goffart
9adc55cd70
Partially revert the refactoring that changed the Element::children list
...
Put the information about RepeatedElement in an Option within the normlal Element
2020-06-15 13:42:11 +02:00
Olivier Goffart
c956fb94f0
Put the RepeatedElement in the object_tree
2020-06-15 10:09:32 +02:00
Olivier Goffart
195a5d0e84
Syntax tests: do not try to generate a document tree if the parser did not succeed
2020-06-15 09:37:56 +02:00
Olivier Goffart
f71b778e76
Syntax tests: Log which file is causing a panic
2020-06-15 09:34:41 +02:00
Olivier Goffart
ef9d3963e4
Fix casting of conditional operator
2020-06-12 10:32:56 +02:00
Olivier Goffart
8713c10d48
Color literals
2020-06-11 19:26:41 +02:00
Olivier Goffart
e95d7da888
Parser: typed syntax node accessor
2020-06-11 17:50:28 +02:00
Olivier Goffart
788137e3d5
Parser: allow to specify an index token in bracket in the for loop
2020-06-11 16:55:22 +02:00
Olivier Goffart
96a372e45d
Grid layout in the interpreter
...
current imploementation is just a prototype
2020-06-10 19:40:47 +02:00
Simon Hausmann
63f81e1991
Add basic support for conditional expressions
...
Todo are automated tests and cleaning up the C++ implementation.
2020-06-10 16:04:15 +02:00
Simon Hausmann
fdbef8c3c4
Add support for parsing conditional expression syntax
2020-06-10 15:40:27 +02:00
Simon Hausmann
f95b31bca4
Fix build
2020-06-09 23:24:38 +02:00
Simon Hausmann
5bae6e01a5
Prepare for the ability to embed image data
...
The Image's source property used to be a string. Now it is a Resource
enum, which can either be None or an absolute file path to the image on
disk. This also replaces the internal Image type.
The compiler internally resolves the img bang expression to a resource
reference, which shall remain just an absolute path. For now the target
generator passes that through, but in the future the target generator
may choose a target specific way of embedding the data and thus
generating a different Resource type in the final code (through
compile_expression in the cpp and rust generator).
The C++ binding is a bit messy as cbindgen doesn't really support
exporting enums that can be constructed on the C++ side. So instead we
use cbindgen to merely export the type internally and only use the tag
from it then. The public API is then a custom Resource type that is
meant to be binary compatible.
2020-06-09 22:54:29 +02:00
Olivier Goffart
0e67a0ecbc
Block comments
2020-06-08 10:40:02 +02:00
Olivier Goffart
3651885d87
Move the compiler binary in tools/
...
And rename sixtyfps_compiler to sixtyfps_compilerlib
2020-06-05 09:23:38 +02:00
Olivier Goffart
95b671c97c
Support for code blocks and signal call
2020-05-28 12:30:08 +02:00
Olivier Goffart
92697ec6b0
Add some code to parse statements in blocks (separated with semicolon)
2020-05-28 07:22:08 +02:00
Olivier Goffart
42cddf2925
Add the conversion test
2020-05-27 16:46:31 +02:00
Olivier Goffart
b3d1a7196c
Compile fix
2020-05-26 12:15:31 +02:00
Olivier Goffart
a39a72b240
Fix the syntax_tests to actually match the regexp
...
The error regexp was not properly matched, being effectively ignoed.
Fixed that and the tests.
Added self tests to syntax_tests.
2020-05-26 11:24:37 +02:00
Olivier Goffart
7ba39f0a1c
Make sure that we cannot override a property from the base
2020-05-26 11:23:54 +02:00
Olivier Goffart
4ea78134d8
Recactor the compiler so there are passes
2020-05-26 09:40:36 +02:00
Olivier Goffart
dee50a6fe8
More fixes to property lookup with components
2020-05-26 08:10:37 +02:00
Olivier Goffart
b12e63de52
Fix lookup of property within component
2020-05-26 07:43:12 +02:00
Olivier Goffart
9e4c355fa1
Lookup of quallified id
2020-05-25 17:24:31 +02:00
Simon Hausmann
1efa80882e
Parse initializers for property declarations
2020-05-25 16:42:09 +02:00
Simon Hausmann
b3ee72b6c5
Permit bindings on declared properties
...
At least syntactically :-)
2020-05-25 16:42:09 +02:00
Simon Hausmann
88faafe305
Fix property declaration storage in the object tree
...
We need to maintain an associated data structure to permit checking for
duplicate property declarations.
2020-05-25 16:42:09 +02:00
Simon Hausmann
a55cad05b9
Allow running specific syntax tests
...
By specifying the relative path as a command line argument, it's easier to
debug a specific case in the IDE.
2020-05-25 16:42:09 +02:00
Simon Hausmann
747cf18fcd
Small typo fix
...
(Unkown -> Unknown)
2020-05-25 16:42:09 +02:00
Olivier Goffart
19eca01dff
Lookup of property within the root component
2020-05-25 16:13:17 +02:00
Olivier Goffart
ce657a5b01
Add test for failled lookup
2020-05-25 15:50:34 +02:00
Simon Hausmann
e6bed90ced
Resolve the type in property declarations
...
... and added int32 as another primitive type.
2020-05-25 14:03:01 +02:00
Simon Hausmann
32b99547f1
Parse property declarations
...
For now this uses the syntax
property<qualified type name> name;
2020-05-25 12:38:29 +02:00
Olivier Goffart
d8601621c0
Use the tool to replace = with :=
2020-05-25 10:44:22 +02:00
Olivier Goffart
4575011293
More work on signal: the C++ part is working
2020-05-20 19:28:58 +02:00