Daniel Kolesa
d4031a21bf
eolian: test for constants/globals
...
Also added API to retrieve value of a variable (forgot about that one)
and made it impossible to create extern constants (doesn't make sense)
as well as made it impossible to give extern globals values.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
65332eb3ca
eolian: var parsing (global and constant)
...
This makes the API effectively functional. Also, I added new API
eolian_variable_is_extern to match structs and typedefs.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
cc1988fddd
eolian: expose new variable API
2014-08-21 09:26:04 +01:00
Daniel Kolesa
70bf1eac24
eolian: add infrastructure for globals and constants
...
Nothing parses yet, and no API is exposed. Also, move the remaining instances of file
inside of existing structures to Eolian_Object and parse basename only once.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
a57c729b10
eolian: consume private/protected modifier on events
2014-08-21 09:26:04 +01:00
Daniel Kolesa
1cb8318991
eolian: support for single-line doc comments
2014-08-21 09:26:04 +01:00
Daniel Kolesa
1be7656af6
eolian: expression mode for lexer
...
This way we can only lex expr related tokens (operators etc.) when actually
about to parse an expression. That allows stuff like nested complex types
without the lexer treating the endings as right shift.
2014-08-21 09:26:03 +01:00
Tom Hacohen
a0c419aa4a
Eolian parser: Allow tagging properties with @constructor.
...
Thanks to Quaker for the exact directions.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
d3aedb5506
eolian: consume the comment token in properties
...
This is to add syntax for later combined get/set property docs functionality.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
459638c2b9
eolian: more consistent syntax
...
"legacy foo" is now "legacy: foo" and "return foo" is now "return: foo".
2014-08-21 09:26:03 +01:00
Daniel Kolesa
7ef5c78792
eolian: fix null serialization
2014-08-21 09:26:03 +01:00
Daniel Kolesa
bcf5f1b1dd
eolian: better doc
2014-08-21 09:26:03 +01:00
Daniel Kolesa
788386c86c
eolian: eolian_type_name_get now returns the eo name, not c name
...
so instead of "unsigned int" you get "uint". This is important for handling of
expressions and cross-language interoperability. You can use c_type_get on the
base type to get the C name. Also, append the appropriate suffix to number literals
when calling eolian_expression_value_to_literal.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
eab668bb0f
eolian: expression improvements
...
Character literals now allow escape sequences. Strings created by
eolian_expression_value_to_literal are now fully escaped.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
8c1b9ed3e2
eolian: initial API for expression evaluation
...
This commit also does several side (related) changes. Particularly, it updates
the Eolian C generator to use the new API, it adds missing expr types (null, char)
and masks, updates the API dealing with default return values to use expressions
instead of strings and does several fixes (mainly in lexer) around the place.
It also disallows single quoted strings as those are reserved for characters.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
90e17acd15
eolian: initial eval function with Eina_Value return
2014-08-21 09:26:03 +01:00
Daniel Kolesa
d7ca6dc1c3
eolian: initial support for expression evaluation
...
There are now functions that let you evaluate Eolian_Expression. They're not exposed
yet. Further improvements will come as well as public API.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
96f360a7d1
eolian: lexing of multichar binary operators
2014-08-21 09:26:03 +01:00
Daniel Kolesa
62541ce484
eolian: rename public enum members to a namespaced form
2014-08-21 09:26:03 +01:00
Daniel Kolesa
436a37f0b9
eolian: initial support for expression parsing
2014-08-21 09:26:03 +01:00
Daniel Kolesa
e3192796b6
eolian: actually fill in the line/column info in the handles
2014-08-21 09:26:03 +01:00
Daniel Kolesa
2aa4cbc89c
eolian: provide line info structure in each eolian handle
2014-08-21 09:26:03 +01:00
Daniel Kolesa
bb24b60638
eolian: generate implicit typedef for each class
...
And use these typedefs instead of just Eo in API.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
8d74261a30
eolian: fix a bug that caused wrong comparisons of class and file name
...
This also renames ecore_poll files to ecore_poller so that the class name matches.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
5da69ddbf7
eolian: support for class type in c_type_get
2014-08-21 09:26:02 +01:00
Daniel Kolesa
6aa99c0026
eolian: better error information + fix tests
...
This provides better location info when failing to resolve EOLIAN_TYPE_CLASS.
Also fixes tests I forgot to push before.
2014-08-21 09:26:02 +01:00
Daniel Kolesa
c88c0d9347
eolian: fix tests and fix class name comparison in parser
...
This fixes the Eolian testsuite as well as adds a better way to compare where a class
comes from, allowing us to guess EOLIAN_TYPE_CLASS correctly.
2014-08-21 09:26:02 +01:00
Daniel Kolesa
0e4860f215
eolian: add support for referencing classes as types
...
For this purpose, several other changes were made. There can now only be 1 class per file
and the class name has to match the file name. Also, I replaced the list of classes with
a hash, allowing for fast indexing (crucial for parser performance - otherwise it was
very slow).
This also adds a new API, eolian_type_class_get.
2014-08-21 09:26:02 +01:00
Daniel Kolesa
444b62c51c
eolian: fix: remove unused function
2014-07-30 13:33:52 +01:00
Daniel Kolesa
5a603c00b6
eolian: remove irrelevant comments
...
This functionality was already done previously.
2014-07-29 10:05:06 +01:00
Daniel Kolesa
5cc18bfd5a
eolian: fix: remove leftover keywords
2014-07-28 11:57:37 +01:00
Daniel Kolesa
ae1ff34dd6
eolian: fix type parsing
...
I reorganized what's allowed and what is not a bit, particularly, strictened the
rules for named structs and loosened the rules for anonymous structs, and refined
them for void types. It should be all correct now.
2014-07-25 14:51:13 +01:00
Daniel Kolesa
5bdbf4dbb5
eolian: doc typo fix
2014-07-25 14:31:39 +01:00
Daniel Kolesa
bb7f657f90
eolian: clarify documentation
2014-07-25 14:25:45 +01:00
Daniel Kolesa
e2c51100c7
eolian: add test for class methods/properties
...
This also fixes a bug in the Eolian parser that handles class properties.
2014-07-24 14:02:46 +01:00
Daniel Kolesa
94404b403c
eolian: parser support for constructor qualifier
...
This will be needed when the constructors {} section goes away.
2014-07-24 13:01:47 +01:00
Daniel Kolesa
214cfac378
eolian: protected ctors
2014-07-24 12:58:29 +01:00
Daniel Kolesa
a5ad792780
eolian: add support for class functions
2014-07-24 12:05:12 +01:00
Daniel Kolesa
a3182948ad
eolian: use libgen.h basename
2014-07-23 19:37:03 +01:00
Daniel Kolesa
315d5de11d
eolian: use just filename (not path) for eolian_class_get_by_file
2014-07-23 17:15:00 +01:00
Daniel Kolesa
572b7aa92f
eolian: eolian_function_parameter_get -> eolian_function_parameter_get_by_name
2014-07-23 14:22:25 +01:00
Daniel Kolesa
88cc1167e9
eolian: eolian_parameters_get -> eolian_function_parameters_get
2014-07-23 14:17:19 +01:00
Daniel Kolesa
fd0210f30e
eolian: list_get -> get, find_by -> get_by
2014-07-23 14:13:21 +01:00
Daniel Kolesa
e26be1aca6
eolian: fix NULL checks in APIs that return iterators + fix tests
2014-07-23 13:45:25 +01:00
Daniel Zaoui
0efeeaf1c0
Eolian: modify APIs to return iterators instead of lists.
...
The change affects the C and the C++ generators.
2014-07-23 13:45:25 +01:00
Daniel Kolesa
a8c0504ce2
eolian: add comment parsing for typedefs
2014-07-23 10:57:23 +01:00
Daniel Kolesa
77ad5e3297
eolian: fix coverity defects
...
Fixes CID 1228630 and 1228631.
2014-07-23 00:48:27 +01:00
Daniel Kolesa
d8e54e2636
eolian: use new syntax for const methods as per wiki
2014-07-22 17:13:24 +01:00
Daniel Kolesa
ab8fe63afa
eolian: use @protected syntax as per wiki
2014-07-22 16:35:54 +01:00
Daniel Kolesa
4f1f182a89
eolian: lexer line context push/pop/restore/clear
2014-07-22 15:44:23 +01:00
Daniel Kolesa
cbd54f4de0
eolian: include file info in redef errors when different file
2014-07-22 15:01:09 +01:00
Daniel Kolesa
f487d44011
eolian: structs and aliases now contain line/column info for better error messages
2014-07-22 14:48:08 +01:00
Daniel Kolesa
89ca97aceb
eolian: new API: eolian_type_structs/aliases_get_by_file
2014-07-22 13:14:44 +01:00
Daniel Kolesa
b0788a546b
eolian: support for typedefs in c_type_get
2014-07-22 12:11:45 +01:00
Daniel Kolesa
ccf157aa57
eolian: prevent freeing of full named structures that are inside of typedefs and fix a memory leak
2014-07-22 10:39:54 +01:00
Daniel Kolesa
71ae2f2c2e
eolian: another leak fix
2014-07-22 10:22:21 +01:00
Daniel Kolesa
c03a0a2a39
eolian: memory leak fix
2014-07-22 10:15:56 +01:00
Daniel Kolesa
b81e05def5
eolian: new API: eolian_type_alias_find_by_name, remove the old APIs that take an alias name, update tests
2014-07-21 17:12:35 +01:00
Daniel Kolesa
058a3c314c
eolian: rename _types to _aliases
2014-07-21 16:58:12 +01:00
Daniel Kolesa
e797e40478
eolian: remove Eolian_Typedef, use Eolian_Type instead; allow eolian_type_base_type_get on aliases
2014-07-21 16:53:25 +01:00
Daniel Kolesa
6079270c96
eolian: database_type_to_str now respects namespaces (and thus the to-C-type conversion API does too)
2014-07-21 16:08:06 +01:00
Daniel Kolesa
ac7f5d0f79
eolian: fill in full_name and namespaces properly, and allow parsing dots in type names
2014-07-21 15:17:59 +01:00
Daniel Kolesa
460cfd9e34
eolian: type_struct_description, type_struct_file -> type_description, type_file
2014-07-21 14:39:14 +01:00
Daniel Kolesa
7117aad879
eolian: new APIs: eolian_type_full_name_get, eolian_type_naespaces_list_get
2014-07-21 14:27:23 +01:00
Daniel Kolesa
197034bfd7
eolian: type_struct_is_extern -> type_is_extern
2014-07-21 14:14:22 +01:00
Daniel Kolesa
6f9c8779c0
eolian: initial code and struct layout for revamped alias API
2014-07-21 14:10:42 +01:00
Daniel Kolesa
d4a0e41724
eolian: typo fix
2014-07-21 12:28:25 +01:00
Daniel Kolesa
c4fd68f08a
eolian: add API to retrieve filename for each typedef and struct
2014-07-21 12:26:44 +01:00
Daniel Kolesa
6caf41e288
eolian: only check redef on actual named structs
2014-07-21 11:47:35 +01:00
Daniel Kolesa
5d1cd61c92
eolian: put structs and typedefs right in the respective hashmaps without going through nodes
2014-07-21 11:42:05 +01:00
Daniel Kolesa
6f805a9998
eolian: check redefinitions in the parser instead (provides line info)
2014-07-21 11:34:14 +01:00
Daniel Kolesa
9262a82ed3
eolian: check for typedef and struct redefinitions
2014-07-21 11:22:49 +01:00
q66
9f0bcdf707
eolian: ouch... fix a major bug, *spanks self*
2014-07-19 13:00:44 +01:00
Daniel Kolesa
fa3e433f6e
eolian: disallow the data field in interfaces; it's always null
2014-07-18 17:29:35 +01:00
Daniel Kolesa
6c268d98e5
eolian: lexing of string literals (including support for escape sequences etc.)
2014-07-17 14:17:19 +01:00
Daniel Kolesa
e9e38b553b
eolian: lexing of number literals (integer and floating point, decimal and hex, no octal)
2014-07-17 13:07:39 +01:00
Daniel Kolesa
80165034ed
eolian: preliminary number constant stuff in eo_lexer
2014-07-16 16:18:13 +01:00
Daniel Kolesa
c636882158
eolian: remove TOK_EOF, replace with -1
2014-07-16 16:06:04 +01:00
Daniel Kolesa
226f417005
eolian: remove eo_lexer_get_until and allow just single-word value in the data: field of a class
2014-07-16 15:33:11 +01:00
Daniel Kolesa
9b2680ad6f
eolian: simplify the lexer (remove custom ident chars)
2014-07-16 14:46:38 +01:00
Daniel Kolesa
e2bab9ed2c
eolian: parse events without get_ident
2014-07-16 14:43:40 +01:00
Daniel Kolesa
198a61c37d
eolian: fix memory leak
2014-07-16 00:30:48 +01:00
Daniel Kolesa
ae3eb2b942
eolian: make event type syntax consistent
2014-07-15 23:50:34 +01:00
Daniel Kolesa
8716112a43
eolian: warning fix
2014-07-15 20:00:59 +01:00
Daniel Kolesa
d0e0576f0b
eolian: parser cleanup - structs no longer have to lookahead, making our grammar effectively LL(1)
2014-07-15 17:06:47 +01:00
Daniel Kolesa
0d0f6e3743
eolian: support for extern structs and typedefs (including API)
2014-07-15 15:33:22 +01:00
Daniel Kolesa
5c3cc82bdd
eolian: comment eo_lexer.h
2014-07-15 10:10:12 +01:00
Daniel Kolesa
831ade54fa
eolian: also make time_t a builtin
2014-07-14 17:02:58 +01:00
Daniel Kolesa
3be0dce99d
eolian: builtin types size, ssize, intptr, uintptr, ptrdiff
2014-07-14 16:51:38 +01:00
Daniel Kolesa
f510b6de72
eolian: schar and uchar are now called byte and ubyte, char stays
...
Here, 'char' represents an actual character and is meant to be treated as so by generators.
The byte types represent a numerical value and should be treated numerically.
2014-07-14 16:25:26 +01:00
Daniel Kolesa
17a6bb122b
eolian: add tests for struct types plus fix a double free and name storage on the way
2014-07-14 12:11:48 +01:00
Daniel Kolesa
c9744596de
eolian: builtin bool type, and change the eo files to use that
2014-07-11 14:40:49 +01:00
Daniel Kolesa
5d4cc031f9
eolian: s/dflt/default/g
2014-07-11 14:30:22 +01:00
Daniel Kolesa
888dc3b6fe
eolian: remove eolian_show and replace it with variants for class/struct/typedef/all.
2014-07-11 13:10:04 +01:00
Daniel Kolesa
9e3417aad8
eolian: fix type print
2014-07-11 12:26:33 +01:00
Daniel Kolesa
35ada5afff
eolian: update print code (it made some obsolete assumptions before)
2014-07-11 12:22:36 +01:00
Daniel Kolesa
a13d8a6020
eolian: fix a segfault
2014-07-11 12:02:02 +01:00
Daniel Kolesa
883c4ca7df
eolian: events now use Eolian_Type* instead of stringshare
2014-07-11 11:47:37 +01:00
Daniel Kolesa
a9171a89f9
eolian: remove parser dump for now (doesn't include all info, when it's needed again it can be re-added)
2014-07-11 11:33:26 +01:00
Daniel Kolesa
d7ce4332fe
eolian: separate database fill stuff from the parser
2014-07-11 11:31:48 +01:00
Daniel Kolesa
8bbd79badc
eolian: split db fill func into multiple funcs
2014-07-11 10:57:28 +01:00
Daniel Kolesa
4b427d6c16
eolian: remove redundant enum
2014-07-10 15:40:58 +01:00
Daniel Kolesa
78bc58813e
eolian: remove unused enum and field
2014-07-10 15:36:18 +01:00
Daniel Kolesa
144fd1e2ae
eolian: refactoring: get rid of Eo_Event_Def
2014-07-10 15:31:01 +01:00
Daniel Kolesa
239e7524dc
eolian: refactoring: get rid of Eo_Implement_Def
2014-07-10 15:23:06 +01:00
Daniel Kolesa
7b9438e76e
eolian: refactoring: remove Eo_Type_Def
2014-07-10 15:10:24 +01:00
Daniel Kolesa
a03bef4734
eolian: get rid of Eo_Type_Def
2014-07-10 14:44:17 +01:00
Daniel Kolesa
7cff1fda3e
eolian: refactoring: refactor eolian_database.h
2014-07-10 14:30:34 +01:00
Daniel Kolesa
441455259e
eolian: refactoring: more consistent naming
2014-07-10 14:19:06 +01:00
Daniel Kolesa
1293dce967
eolian: API refactoring
2014-07-10 14:04:13 +01:00
Daniel Kolesa
1772ab8a1c
eolian: separate database API and internals into different source files
2014-07-10 13:13:46 +01:00
Daniel Kolesa
37bc20298c
eolian: refactoring: split up eolian_database into individual files
2014-07-10 12:15:29 +01:00
Daniel Kolesa
2ababe8a89
eolian: const fixes
2014-07-10 11:06:20 +01:00
Daniel Kolesa
a26546bc6b
eolian: the entire API is now const correct
2014-07-09 21:31:03 +01:00
Daniel Kolesa
133607936d
eolian: const correctness
2014-07-09 21:07:15 +01:00
Daniel Kolesa
580aea04cd
eolian: refactoring step six
...
Move Eolian_Function as well, plus fix const correctness of several API funcs.
2014-07-09 20:59:31 +01:00
Daniel Kolesa
accdd50f50
eolian: refactoring step five
...
Move from all instances of Eolian_Type to Eolian_Type*.
2014-07-09 17:18:02 +01:00
Daniel Kolesa
1a4f87d365
eolian: refactoring step four
...
Move from all isntances of Eolian_Function_Parameter to Eolian_Function_Parameter* plus const fixes.
2014-07-09 17:01:19 +01:00
Daniel Kolesa
c9119b0c88
eolian: refactoring step three
...
Move from all instances of Eolian_Event and Eolian_Implement to Eolian_Event* and Eolian_Implement*.
2014-07-09 16:45:58 +01:00
Daniel Kolesa
96eaaaf074
eolian: refactoring step two
...
Move from all instances of Eolian_Class to Eolian_Class*.
2014-07-09 16:33:19 +01:00
Daniel Kolesa
ca82befa8a
eolian: refactoring step one
...
Rename the public Eolian types to use a consistent naing scheme.
2014-07-09 16:33:19 +01:00
Daniel Kolesa
8f14930d68
eolian: function dump now uses the actual syntax
2014-07-09 13:49:21 +01:00
Daniel Kolesa
60bf9fcaef
eolian: reduce code duplication
2014-07-09 13:26:20 +01:00
Daniel Kolesa
7b4f4af873
eolian: support for structs in eolian_show
2014-07-09 13:06:46 +01:00
Daniel Kolesa
3bffb5fa1d
eolian: support for structs in eo_parser_dump
2014-07-09 13:01:53 +01:00
Daniel Kolesa
881a8754ab
eolian: new API: eolian_type_struct_description_get
2014-07-09 12:48:16 +01:00
Daniel Kolesa
295f1f4847
eolian: new API: eolian_type_struct_field_description_get
2014-07-09 12:05:56 +01:00
Daniel Kolesa
dda93f467e
eolian: proper resource management for types/structs
...
Because types can have other types in each other, we need a stack of a sort to keep track of
the types for error handling. Doing it otherwise would result in potential resource leaks.
2014-07-09 11:18:21 +01:00
Daniel Kolesa
cc387bd621
eolian: add EOLIAN_TYPE_REGULAR_STRUCT rather than including the struct keyword in name field
2014-07-09 10:49:52 +01:00
Daniel Kolesa
892c5cba5f
eolian: fix coverity defects
2014-07-09 10:19:42 +01:00
Jean-Philippe Andre
5933d9d4a3
Eolian: Add missing break in switch
...
Fixes CID 1224763.
2014-07-09 09:31:49 +09:00
Daniel Kolesa
f6c7242609
eolian: fix base_type_get (only allow for pointers)
2014-07-08 16:56:13 +01:00
Daniel Kolesa
16da25bca2
eolian: support for structs in c_type_get
2014-07-08 16:54:22 +01:00
Daniel Kolesa
6bd0e0ab7f
eolian: better struct support including an API for by-name lookup
2014-07-08 16:42:33 +01:00
Daniel Kolesa
b2db8d3ffa
eolian: new API for struct types
...
This commit adds new Eolian API and proper parsing support for struct types.
Structs can be named (allowed in global context, like typedefs, and in typedefs)
and unnamed (allowed as fields of other structs). This extends the existing type
API to support structs. This is incomplete for now - I still gotta add a way to
query global structs besides other things.
@feature
2014-07-08 16:17:44 +01:00
Daniel Kolesa
46827bf022
eolian: initial struct parsing
2014-07-08 15:44:42 +01:00
Daniel Kolesa
d60a47e2dd
eolian: check struct name properly
2014-07-08 15:11:46 +01:00
Daniel Kolesa
ee97c4cf58
eolian: preparation for struct support
2014-07-08 15:02:36 +01:00
Daniel Kolesa
826f85675c
eolian: @own -> own
2014-07-08 13:34:25 +01:00
Daniel Kolesa
5168297fdb
eolian: new API: eolian_system_directory_scan, use it
2014-07-07 16:48:54 +01:00
Daniel Kolesa
58a6895e41
eolian: do not use string for attrs
2014-07-07 15:14:21 +01:00
Daniel Kolesa
8e8dbc322e
eolian: scan directories recursively
2014-07-07 14:25:57 +01:00
Daniel Kolesa
9f17b08dfb
eolian: warning fix
2014-07-04 14:51:05 +01:00
Daniel Kolesa
84451db638
eolian: have eolian_all_classes_list_get instead of eolian_class_names_list_get
2014-07-03 22:12:31 +01:00
Daniel Kolesa
8c80b1a7f4
eolian: rename the log domain
2014-07-03 01:50:47 +01:00
Daniel Kolesa
a621692fdd
eolian: use eina logging for error messages
2014-07-03 01:48:00 +01:00
Daniel Kolesa
61da74bc42
eolian: print error line with a caret
2014-07-03 00:30:39 +01:00
Daniel Kolesa
8d902a4820
eolian: keep track of column better
2014-07-03 00:14:28 +01:00
Daniel Kolesa
55e5e71593
eolian: use eina API
2014-07-03 00:05:16 +01:00
Daniel Kolesa
08a669f08b
eolian: show column information when matching balanced braces
2014-07-03 00:05:16 +01:00
Daniel Kolesa
7d46c921cb
eolian: column information in error messages
2014-07-02 23:39:44 +01:00
Daniel Kolesa
f12b36e1c1
eolian: some dirty janitoring
2014-07-01 18:25:17 +01:00
Daniel Kolesa
8c44810525
eolian: keep the struct keyword in the regular type name
2014-07-01 18:03:20 +01:00
Daniel Kolesa
0cc319a5b2
eolian: restrict own() for pointers only
2014-07-01 17:55:34 +01:00
Daniel Kolesa
e5e6d8f1f2
eolian: also allow void in @out params
2014-06-30 23:21:36 +01:00
Daniel Kolesa
8d0649ef0b
eolian: remove superfluous macros
2014-06-30 23:17:05 +01:00
Daniel Kolesa
154a407bf2
eolian: allow void return in getter accessors (to force the return to be an out param)
2014-06-30 23:13:04 +01:00
Daniel Kolesa
39aad55991
eolian: support for void as separate type type
2014-06-30 23:07:32 +01:00
Daniel Kolesa
d5f4af5e61
eolian: different syntax for functions (func ret_type (arg_types))
2014-06-30 22:07:13 +01:00
Daniel Kolesa
d2fb3c5cb0
eolian: function type parsing
2014-06-30 21:52:57 +01:00
Daniel Kolesa
c8e2e8d48a
eolian: @own -> own
2014-06-30 18:10:29 +01:00
Daniel Kolesa
e84275cc37
eolian: make tests pass
2014-06-30 17:20:39 +01:00
Daniel Kolesa
7b54a0101c
eolian: new type API
...
This new API supports function pointer types, multiple type subtypes, const attribute without parsing
the name string, own attribute for any partial type and more. This commit also updates the C and C++
generators so that they compile and generate correct code.
@feature
2014-06-30 17:20:39 +01:00
Daniel Kolesa
70347cb7d7
eolian: preparation for new type API
2014-06-30 17:20:39 +01:00
Daniel Kolesa
2bdba6c850
eolian: type -> typedef
2014-06-30 17:20:39 +01:00
Daniel Kolesa
74d0cbf29b
eolian: allow multiple subtypes by reorganizing the type structure - preparation for new API
2014-06-30 17:20:39 +01:00
Daniel Kolesa
275103e1b0
eolian/lexer: new keyword (func) plus new token (->) - for function pointer types
2014-06-30 17:20:39 +01:00
Daniel Kolesa
ec057a089a
eolian: builtin fixed size integer types, floating point types and void
2014-06-30 17:20:39 +01:00
Daniel Kolesa
4f4eba4fe4
eolian: support for C type translation in eo lexer
2014-06-30 17:20:39 +01:00
Daniel Kolesa
4e79b27977
eolian: handle new type syntax in parser
2014-06-30 17:20:39 +01:00
Daniel Kolesa
c0576cee73
eolian: new API: eolian_function_full_c_name_get - reduces duplication of code
2014-06-30 17:20:06 +01:00
Daniel Kolesa
1674d967d2
eolian: free the iterator
2014-06-30 17:20:06 +01:00
Daniel Kolesa
7a8ef6d02a
eolian: introducing support for .eot files
...
.eot files are similar to .eo, but they can't contain classes; all .eot files found in include paths
are parsed and information is added into the database. They're there for typedefs and eventually also
enums, structs and constants.
@feature
2014-06-30 17:20:06 +01:00
Daniel Kolesa
18c6f486f6
eolian: process classes and typedefs in order
2014-06-30 17:20:06 +01:00
Daniel Kolesa
0f4bb89492
Revert "eolian: process classes and typedefs in order (preparation for later potential extension)"
...
This reverts commit 7c28de0616
.
2014-06-23 18:44:11 +01:00
Daniel Kolesa
af9b338dee
Revert "eolian: generalized node append"
...
This reverts commit 98d25243aa
.
Reason: accidentally got into master... I'm tired.
2014-06-23 18:43:23 +01:00
Daniel Kolesa
98d25243aa
eolian: generalized node append
2014-06-23 15:38:23 +01:00
Daniel Kolesa
7c28de0616
eolian: process classes and typedefs in order (preparation for later potential extension)
2014-06-23 15:32:17 +01:00
Daniel Kolesa
4dcd45b010
eolian: less code repeating
2014-06-20 15:46:00 +01:00
Daniel Kolesa
efcdfec94f
eolian: more cleanups
2014-06-20 15:31:45 +01:00
Daniel Kolesa
eb3a7cf6d0
eolian: some less repeated code
2014-06-20 15:07:25 +01:00
Daniel Kolesa
15704a7454
eolian: small cleanup
2014-06-20 14:38:57 +01:00
Daniel Kolesa
3acbdaa8c7
eolian: mark all methods/properties in interfaces as virtual by default and disallow everything but class.(con|de)structor in their implements
2014-06-20 12:24:10 +01:00
Daniel Kolesa
ded5623c86
eolian: simplify the parser a bit (unify 3 funcs into one)
2014-06-20 11:33:25 +01:00
Daniel Kolesa
e9f4890747
eolian: fix end-of-file checking, move namespaces from :: to .
2014-06-20 10:46:04 +01:00
Daniel Kolesa
ee24425ab5
eolian: remove semicolon termination of classes
2014-06-20 00:01:56 +01:00
Daniel Kolesa
4ef61a1c29
eolian: fix a few casts
2014-06-19 17:28:19 +01:00
Daniel Kolesa
fc72ca590d
eolian: allow omitting of () in class with no inherits, fix up tests
2014-06-19 16:30:18 +01:00
Daniel Kolesa
78c1e92722
eolian: stricten the allowed characters in values, and values starting with @ must be keywords - we no longer need all the arbitrary characters beacuse of lex_balanced and lex_until
2014-06-19 16:04:08 +01:00
Daniel Kolesa
ee053aa840
eolian: fix double free
2014-06-19 16:04:08 +01:00
Daniel Kolesa
9c2fcf5d4e
eolian: lex_until and lex_balanced
2014-06-19 16:04:08 +01:00
Daniel Kolesa
74181192ad
eolian: fix error handling and memory leaks
2014-06-19 16:04:08 +01:00
Daniel Kolesa
07dcaadb97
eolian: simpler type parsing
2014-06-19 16:04:08 +01:00
Daniel Kolesa
b39b37d732
eolian: cleanup
2014-06-19 16:04:08 +01:00
Daniel Kolesa
9d48e256dc
eolian: remove the ugly old type extractor, instead build the inlist during parsing
2014-06-19 16:04:08 +01:00
Daniel Kolesa
3c621045cd
eolian: complex non-pointer types
2014-06-19 16:04:08 +01:00
Daniel Kolesa
077e9bc46c
eolian: strip leading whitespace from doc comments + trim the resulting buffer
2014-06-19 16:04:08 +01:00
Daniel Kolesa
9b833f1dbd
eolian: introducing a new lexer/parser
...
This handwritten lexer/parser is more strict and cleaner than the previous Ragel based one,
as well as faster and doesn't leak memory (or shouldn't). It's a recursive descent style
parser with separate lexer part (unlike the previous effort) which is run at the same
stage as the parser (so it doesn't pre-lex).
@feature
2014-06-19 16:04:08 +01:00
Daniel Kolesa
2056b99e85
eolian: add some stuff into eo_definitions needed for the new parser and temporarily adjust the lexer for it
2014-06-19 16:04:08 +01:00
Daniel Kolesa
0d417e6ebf
eolian: remove the ragel file plus support for ragel from the build system
2014-06-19 16:04:07 +01:00