Commit Graph

235 Commits

Author SHA1 Message Date
5a96757942
Always throw an error when an unexpected expression is found in Parser.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-04-21 23:31:10 +02:00
453025b18c
Add an "empty" function to the ParseTree class
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-04-21 23:31:10 +02:00
d059d1e507
Throw the "Unexpected character" error for all unrecognized characters in Parser.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-04-21 23:31:10 +02:00
27c8b642d6
Check if i is equal to zero instead of checking whether it is greater, since i is unsigned in Parser.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-04-21 23:31:09 +02:00
21137f5beb
Add a "--text" argument
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-04-21 23:31:02 +02:00
49dc7d0ebb
main.cpp: Use a map instead of a set and a vector in main.cpp
Target.hpp: make staticMap thread-local to avoid issues with the "--parallel" argument, and don't include dots in the languages array

Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-04-08 19:45:00 +02:00
2b596e691c
Rename the "it" local variable to "closing" in Parser.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-04-08 12:46:56 +02:00
14b71906b7
Add a SEMICOLON token
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-04-08 11:01:16 +02:00
88d0774d30
Fix the precision of StandardComponents::types::Integer
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-22 18:17:58 +01:00
ca3b030fed
Delete the default constructor in Target.hpp and always initialize output
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-22 15:59:32 +01:00
db0ada09f6
Use powl instead of pow in Parser.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-22 15:52:09 +01:00
ce8e21ee25
Include cmath in Parser.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-22 15:37:13 +01:00
8a97def6b2
Add integer parsing
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-22 13:40:18 +01:00
adbe98ec00
Increment i after finding the end iterator when parsing variables
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-22 13:40:03 +01:00
01abadc1fa
Use cmp_less instead of cmp_greater in Parser.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-19 16:28:59 +01:00
3a75531664
Transpile arguments correctly in Target.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-19 13:09:51 +01:00
ba14e95d50
Add a separate_transpileTree overload and transpile function parameters correctly
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-19 12:40:52 +01:00
5f3c8d785d
Use to_address instead of the unique_ptr::get function in ParseTree::findById
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-17 16:44:04 +01:00
bee9917947
Use LPAR instead of a character in a condition of Parser.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-17 15:49:03 +01:00
272323d091
Add two local variables to Parser.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-17 15:47:03 +01:00
1f819bc136
When parsing a function call, invoke parse without specialization since the "=" operator needs a ParseTree
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-13 22:35:18 +01:00
f3d03adead
Add functions, indentation, better variables parsing and more
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-13 15:15:29 +01:00
74c5904d21
Add a character cast operator to tok in lex.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-12 11:16:36 +01:00
2425d19f9f
Add a Parser::parse overload which takes input iterators as arguments
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-09 20:48:57 +01:00
8e7aaadbd0
Rename parseVector to parse in Parser.hpp, and make the parameter a span instead of a vector
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-09 19:31:30 +01:00
cca696b27a
Fix the line number of next in Parser.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-04 19:31:28 +01:00
26d88c2f91
Set line to 1 by default in the tok structure
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-04 19:25:29 +01:00
9d7300ce89
Fix errors by removing the isNotBlank boolean and using hasNext instead
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-04 19:19:13 +01:00
33e29ccb8e
Remove the tok default constructor in lex.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-01 20:16:29 +01:00
6955c5cb4d
Remove tok::type::EOF_ because it is useless, and fix the next local constant reference in Parser.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-03-01 20:14:47 +01:00
ec4121de1c
Fix parsing of parentheses by searching after the current index
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 16:03:34 +01:00
56e1db5fcc
Add a transpileTree function to Target.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
3c130529a4
Make the newLine constructor parameter a reference & add a "separator" member and a "uniqueLineSeparator" virtual method to Target.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
63b24752d6
Make the members of the tok structure non-const to avoid undefined behaviour when the "=" operator is called
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
beb28ef4ad
Rename the Yerbacon::exit function to Yerbacon::fail
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
de2259b6ed
Add a "inverseLCharacter" static function to tok
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
de2d936e19
Use dynamic_cast instead of reinterpret_cast in Target.hpp and ParseComponents.hpp, and extend the ParseComponent class virtually in the ParseTree and NamedIdentifier classes
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
68dc7ea1a1
Make Parser::parseVector a function template
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
c4f75a3b04
Make the constexpr ParseTree constructors inline instead
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
0b3109c989
Add a move assignment operator to ParseTree
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
a45902c9b2
Add an "at" function to ParseTree
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
1a37e35228
Add a component_ptr type definition to ParseComponents.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
ca4e773fca
Add an alternative "make_task_noR" macro to avoid making unused references in Target.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
f33aec687a
Parse Calls/ParseTrees
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
b5ff43e109
Remove a useless constructor in the ParseTree class
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
63b3d727a6
Add a newline to the output in Target.hpp
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2022-02-14 14:12:00 +01:00
ae2a661427
Remove the useless nested structure in StandardComponents::Class 2022-02-14 14:12:00 +01:00
905222f61d
Don't output an extra new line in the stringInterpolation() function 2022-02-14 14:12:00 +01:00
04923f03a5
Revert "Remove a useless #include directive in lex.hpp"
This reverts commit 41e33e30ba5faef9bd841777eae8701718bf8f69.
2022-02-14 14:12:00 +01:00
4f40fdaed7
Add a "=" operator and a default constructor to tok 2022-02-14 14:12:00 +01:00
eb709e60b0
Remove the (now useless) parallel parameter in the getFileContent() function from filefuncs.cpp 2022-02-14 14:12:00 +01:00
96dd67b69a
Remove a useless #include directive in lex.hpp 2022-02-14 14:12:00 +01:00
cf4ea8a1f8
Improve the tok constructors 2022-02-14 14:12:00 +01:00
19f76c405c
Remove a useless constructor in lex.hpp 2022-02-14 14:12:00 +01:00
f90514ba4b
Remove the <optional> include directive in Target.hpp since it is now useless 2022-02-14 14:12:00 +01:00
5580b8f204
Remove redundant optional usage in Target.hpp 2022-02-14 14:12:00 +01:00
106a2f0be9
Remove a useless semicolon in Target.hpp 2022-02-14 14:12:00 +01:00
cb8e818956
Add shared tasks to Target.hpp 2022-02-14 14:12:00 +01:00
eb586a2899
Use generic_category::message() instead of strerror() in filefuncs.cpp 2022-02-14 14:12:00 +01:00
e720ff0f2d
Add an error message when an exception is thrown from the getFileContent() function & --parallel is not in use, and support MSVC 2022-02-14 14:12:00 +01:00
d2c0ef185f
Add the C++ standard to the getBuildInfo() function by adding two new macros: "token_expansion" and "make_string" 2022-02-14 14:12:00 +01:00
f266c35954
Use the size_t type instead of "unsigned long" for variables that hold the result of a find() call 2022-02-14 14:12:00 +01:00
158021cf68
Fix the indentation of a line modified by the previous commit 2022-02-14 14:12:00 +01:00
173ed5d6c3
Add a parsingError() function to Parser.hpp 2022-02-14 14:12:00 +01:00
a098973023
Throw an exception when a final variable is being redefined, and use types instead of auto in the ParseTree::findReferenceByName() method and when calling it in Parser.hpp 2022-02-14 14:12:00 +01:00
3c4586cc70
Add "ASTERISK" and "DIVIDE" token types to lex.hpp, and implement comments 2022-02-14 14:12:00 +01:00
08661d83a3
Add an explicit return type to the nextAre function 2022-02-14 14:12:00 +01:00
70466cdb80
Demangle the name of components when a GNU/Clang compiler is being used 2022-02-14 14:12:00 +01:00
1b9b281dec
Heavily modify Target.hpp, add a pointerAs function, and add an overload to Yerbacon::exit 2022-02-14 14:11:20 +01:00
88d22e6183
Add a "--buildInfo" argument to print the compiler and optimization options used when building 2021-10-20 17:08:41 +02:00
0ce02ea77f
Remove a useless semicolon in ParseComponents.hpp 2021-10-20 13:21:35 +02:00
d9b399881d
Use the derived_from concept in the template of the IS(X) macro 2021-10-20 13:16:54 +02:00
ec2af24be3
Add a [] operator to the ParseTree class 2021-10-20 13:16:40 +02:00
429ed02483
Don't output useless new lines in main.cpp 2021-10-08 13:29:46 +02:00
dc21af192b
Make Yerbacon::exit a static function 2021-10-07 22:01:23 +02:00
8ab826bf68
Move a condition from Target.hpp to main.cpp and add a new Yerbacon::exit function 2021-10-07 21:39:48 +02:00
7b1987f81b
Throw an exception when instead of calling exit when the "--newlinesoff" argument is used with incompatible targets 2021-10-07 21:11:45 +02:00
24d934caf2
Use any_of instead of a range-based loop in the Argument::is function 2021-10-05 08:45:38 +02:00
58f2d9cba7
Remove an extra space in arguments.hpp 2021-10-05 08:43:34 +02:00
014680ec95
Remove a useless "public" keyword use in arguments.hpp 2021-10-03 19:13:48 +02:00
5cea9251bd
Return a string_view instead of a string in the ArgumentAssignable::getValueFor function 2021-10-03 12:20:59 +02:00
57a01e6c32
Remove a redundant public section in Yerbacon::Exception and make the second constructor call the first one 2021-10-02 13:33:50 +02:00
f0aeda7c8a
Check for missing standard library definitions in Yerbacon.hpp 2021-10-02 12:59:33 +02:00
525aa0db88
Make a few members of ParseTree private, and make the internal methods protected 2021-10-01 18:15:59 +02:00
9a27c0c9c7
Don't use the public keyword in NamedIdentifier since it is a structure 2021-09-28 07:10:21 +02:00
c696b440e7
Fix a memory leak caused by the constness of the exceptionCause string in Yerbacon::Exception 2021-09-25 17:37:12 +02:00
659cdf4e80
Make tok::LexerException and Parser::ParserException type definitions instead of extending the Yerbacon::Exception class 2021-09-25 17:33:28 +02:00
c6ee98e76b
Accept the use of "structure" as an alternative to the "class" keyword 2021-09-25 16:11:02 +02:00
471a588d37
Use a goto statement in the Argument::is function 2021-09-23 19:35:55 +02:00
2de8ce3e43
Make sure the "==" operator is inline in arguments.hpp 2021-09-23 19:03:44 +02:00
6af6c04d5f
Remove the unlikely attribute from the '\r' case, and add an EOF token type 2021-09-23 13:21:47 +02:00
6ce13be4ca
Don't append CMAKE_CXX_COMPILER_ARCHITECTURE_ID to CPACK_SYSTEM_NAME + CPACK_TOPLEVEL_TAG, and remove a few newlines in ParseComponents.hpp 2021-09-19 21:37:53 +02:00
1371457a1f
Reserve memory before adding elements to parse trees 2021-09-19 20:48:08 +02:00
beea9bfadf
Make const parse trees actually constant, fix formatting in Target.hpp and classes derived from Target 2021-09-19 20:45:57 +02:00
82d733af54
Edit the use of convertible_to in Parser.hpp 2021-09-18 16:34:01 +02:00
8cb72a9baa
Remove a useless condition in Parser.hpp 2021-09-18 16:26:29 +02:00
fefa7b05c7
Take an initializer_list instead of variadic arguments in the nextAre lambda function 2021-09-18 15:32:31 +02:00
500662f5c5
Add the isFinalDefine boolean to 1 in Parser.hpp 2021-09-15 20:05:23 +02:00
08a038cf82
Set the ParsingException cause to another string when no identifier is given to a class, and pass the component's line to the exception 2021-09-14 20:43:09 +02:00
02bde3b106
Make the "languages" array a constant variable 2021-09-13 18:24:01 +02:00