Parser

From ENIGMA

Jump to: navigation, search

In the design of ENIGMA's compiler, the parser is the collection of sources responsible for translating EDL into C++. For efficiency reasons, the parser is divided into four segments that are unidirectionally dependent.

Modules

C Parser Reads C headers to determine available functions, types, and macros. This parser has no dependencies.
Type resolver A stack-based parser meant to determine the type of a given expression based on the results of the C parser.
Syntax checker A lexless pass that reads over code to find simple syntax errors. It cannot determine errors in types due to ENIGMA's lax typing system, but by using results from the C parser, it can determine which statements are declarations and which functions are passed the correct number of parameters.
Formatter A parser/lexer designed to add missing marks of punctuation, including parentheses around control statements, missing semicolons, missing colons (after case labels and in ternary operators), and in some cases, spacing.

Abstract Syntax Tree

Personal tools
Namespaces
Variants
Actions
Navigation
ENIGMA
Other
Toolbox