Greetings, my name is Danil Andreev, I am 3D graphics programmer from Kyiv, UkraineπΊπ¦.
3D Research Engieneer:
- RHI development & support
- 3D Rendering programming
- Profiling & optimising 3D graphics pipeline
Ray tracing pipelines
Ape-Lang compiler. University project.
Home Page: https://danilandreev.github.io/ape-lang-compiler/
License: MIT License
Greetings, my name is Danil Andreev, I am 3D graphics programmer from Kyiv, UkraineπΊπ¦.
3D Research Engieneer:
Ray tracing pipelines
Add mechanism to validate Abstract Syntax Tree got from Tokenizer::parse()
to ensure that used variables has been declared, etc.
New class or method in Tokenizer
class.
None
Create syntax analyzer module for building an Abstract Syntax Tree.
None
while b β 0
if a > b
a := a β b
else
b := b β a
return a
On error tokenizer does not release allocated memory for nodes.
On error tokenizer must release allocated memory.
Add multi-character operators support for Lexer
.
Example:
<<
==
!=
Token with type OPERATOR and wstring payload.
Analyzing several tokens in syntax analyzer.
Incorrect number reading with Lexer
in scientific notation.
20e+20
to the variable.I expected that 20e+23
is a correct number notation, but Lexer
interprets that like several lexemes.
Add validation errors array to allow compiler throw several errors per one compilation attempt.
A vector of errors. After validation it's length must be checked. If this array has errors - then output them to stderr and throw exception.
Just one error per compilation.
Tokenizer
interprets math expressions wrongly. It must apply operations by operators priority. We can use Reverse polish nonation (RPN) to interpret math expressions correctly.
int test = 2 + 2 * 2 / 4;
ββ[op2] VAR: DeclarationNode | INT | test
ββ[op1] DIVIDE: Node
ββ[op1] MULTIPLY: Node
ββ[op1] ADD: Node
ββ[op1] CONST: IntegerNode | 2
ββ[op2] CONST: IntegerNode | 2
ββ[op2] CONST: IntegerNode | 2
ββ[op2] CONST: IntegerNode | 4
Expected syntax tree:
ββ[op2] VAR: DeclarationNode | INT | test
ββ[op1] ADD: Node
ββ[op1] DIVIDE: Node
ββ[op1] MULTIPLY: Node
ββ[op1] CONST: IntegerNode | 2
ββ[op2] CONST: IntegerNode | 2
ββ[op2] CONST: IntegerNode | 4
ββ[op2] CONST: IntegerNode | 2
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.