diff options
author | Aaditya Dhruv <[email protected]> | 2025-08-10 22:10:11 -0500 |
---|---|---|
committer | Aaditya Dhruv <[email protected]> | 2025-08-10 22:10:11 -0500 |
commit | d862b84ce868353e3482b380d0b68495de12eb6b (patch) | |
tree | d114c4b44460b9d1eaf689ea2ffed10c21943ecc /src/main.rs | |
parent | 63dbc54db1c33e341f2e843a6c71807e51a4dd7b (diff) |
Add Parser support
- Parser is able to take Lexer tokens and generate AST with Text
(Paragraph) and Headings
- Scanner has been renamed to Lexer
- main.rs has been updated to use the Lexer and Parser
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index 5d2610d..3ca140c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,11 +3,28 @@ mod parser; use std::fs::File; use std::io::prelude::*; +use parser::lexer::Lexer; +use parser::parser::{Parser, AST}; + use crate::types::elements; use crate::types::elements::Renderable; fn main() { - let doc = elements::HTML::new(); + // let doc = elements::HTML::new(); + // let doc = doc.render(); + // let mut file = File::create("out.html").unwrap(); + // file.write_all(doc.as_bytes()).unwrap(); + let md = "## Title\nText of a paragraph\n\n##### Second heading\nSome more text"; + let mut lexer = Lexer::new(md); + lexer.scan(); + let mut parser = Parser::new(lexer); + parser.parse(); + let root = parser.tree; + let mut doc = elements::HTML::new(); + for child in root.children { + let ast = child.item; + doc.items.push(ast.convert_to_renderable()); + } let doc = doc.render(); let mut file = File::create("out.html").unwrap(); file.write_all(doc.as_bytes()).unwrap(); |