Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parser #2

Merged
merged 24 commits into from
Feb 5, 2024
Merged

Parser #2

merged 24 commits into from
Feb 5, 2024

Conversation

TommYDeeee
Copy link
Collaborator

@TommYDeeee TommYDeeee commented Jan 17, 2024

Parser for small subset of YARA language. It takes lexer tokens and converts them into proper SyntaxKind representation. Rowan library is used for underlying red-green tree representation that stores nodes and tokens. This is the first version of syntax. This syntax tree contains error nodes and also whitespace characters that belongs to specific node.

The example of supported rule for given subset is:

//Global comment

//Rule comment
rule test
{
	//Rule block comment

	//String comment
	strings:
		$a = "foo"
		$b = "bar"
	condition:
		$a or
		$b and true
}

Basic operator precedence and parsing is implemented using pratt parsing. So far only AND, OR and NOT operators are supported and variables, plain strings and true/false boolean constants.

Error recovery is present and done by using first set for LL grammar, this might need some tweaks in future

@TommYDeeee TommYDeeee marked this pull request as ready for review January 23, 2024 10:13
@TommYDeeee TommYDeeee merged commit 877f733 into main Feb 5, 2024
7 checks passed
TommYDeeee added a commit that referenced this pull request Feb 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants