-
Notifications
You must be signed in to change notification settings - Fork 10
Loyc.Syntax
qwertie edited this page Aug 10, 2014
·
1 revision
A core part of Loyc is the concept of the "Loyc tree". If you are not familiar with Loyc trees, read this article: http://loyc-etc.blogspot.ca/2013/04/the-loyc-tree-and-prefix-notation-in-ec.html
Loyc.Syntax contains
- CodeSymbols, a static class that defines the names of most built-in features of Enhanced C#. In the future, I hope we will define some kind of "standard imperative language" that will use many of the same symbol names as EC#. In that case, perhaps CodeSymbols will just contain the standard (lower-level) symbols and EC# will have its own class for EC#-specific features.
- My Loyc tree implementation (Nodes folder).
- LNode class represents a subtree of source code. Currently, all nodes are immutable.
- Typically one uses LNodeFactory to create LNodes in C#.
- Facilities for representing source code and source code locations (SourceFiles folder)
- The design of this portion is unstable. You might see "leftover code" that isn't being used.
- The ISourceFile interface and its subinterfaces represent a source file of characters (.NET chars).
- EmptySourceFile, a dummy object that can be used as the "source file" for synthetic nodes
- SourceRange, a structure that holds an ISourceFile reference and a range of indexes (two integers)
- SourcePos, a position represented as a file name string, a line number, and a column number
- The SourceRange.Begin and SourceRange.End properties create SourcePos objects on-the-fly
- Facilities for implementing lexers a.k.a. scanners/tokenizers (Lexing folder):
- Again, I'm not confident about the design and may change it.
- ILexer, a suggested interface for lexers to implement
-
BaseLexer<TSource>
, a suggested base class for implementing lexers using LLLPG - Token, a universal 4-word structure (3 ints and an object reference) for tokens in any language
- TokenTree, a list of tokens plus an ISourceFile that is common to all the tokens
- TokensToTree: a class that arranges tokens into a tree, grouping tokens by (), {} and [].
-
BaseParser<Token>
, a base class designed for parsers generated by LLLPG - IntSet, a class for holding a collection of integers or characters, expressed as a series of integer ranges.
- LES (Loyc Expression Syntax) support (Les folder, Loyc.Syntax.Les namespace)
- LesLexer class - Tokenizes LES code
- LesParser class - Parses LES code
- TokenType enum - Types of tokens in LES
- LesNodePrinter class - prints arbitrary syntax trees (currently very rudimentary)
- LesPrecedence - contains documentation for the operators and the precedence rules