diff options
Diffstat (limited to 'src/libsyntax/parse/mod.rs')
| -rw-r--r-- | src/libsyntax/parse/mod.rs | 106 |
1 files changed, 60 insertions, 46 deletions
diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index b14b60af134..fb5c6250179 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -10,6 +10,8 @@ //! The main parser interface +#[legacy_exports]; + use ast::node_id; use ast; use codemap::{span, CodeMap, FileMap, CharPos, BytePos}; @@ -22,47 +24,70 @@ use parse::token::{ident_interner, mk_ident_interner}; use util::interner; use core::io; -use core::option::{None, Option, Some}; -use core::path::Path; -use core::result::{Err, Ok, Result}; use core::result; +export parser; +export common; +export lexer; +export token; +export comments; +export prec; +export classify; +export attr; +export obsolete; + +export parse_sess; +export new_parse_sess, new_parse_sess_special_handler; +export next_node_id; +export new_parser_from_file, new_parser_etc_from_file; +export new_parser_from_source_str; +export new_parser_from_tts; +export new_sub_parser_from_file; +export parse_crate_from_file, parse_crate_from_crate_file; +export parse_crate_from_source_str; +export parse_expr_from_source_str, parse_item_from_source_str; +export parse_stmt_from_source_str; +export parse_tts_from_source_str; +export parse_from_source_str; + + #[legacy_exports] -pub mod lexer; +mod lexer; #[legacy_exports] -pub mod parser; +mod parser; #[legacy_exports] -pub mod token; +mod token; #[legacy_exports] -pub mod comments; +mod comments; #[legacy_exports] -pub mod attr; +mod attr; #[legacy_exports] /// Common routines shared by parser mods #[legacy_exports] -pub mod common; +mod common; /// Functions dealing with operator precedence #[legacy_exports] -pub mod prec; +mod prec; /// Routines the parser uses to classify AST nodes #[legacy_exports] -pub mod classify; +mod classify; /// Reporting obsolete syntax #[legacy_exports] -pub mod obsolete; +mod obsolete; + -pub type parse_sess = @{ +type parse_sess = @{ cm: @codemap::CodeMap, mut next_id: node_id, span_diagnostic: span_handler, interner: @ident_interner, }; -pub fn new_parse_sess(demitter: Option<emitter>) -> parse_sess { +fn new_parse_sess(demitter: Option<emitter>) -> parse_sess { let cm = @CodeMap::new(); return @{cm: cm, mut next_id: 1, @@ -71,7 +96,7 @@ pub fn new_parse_sess(demitter: Option<emitter>) -> parse_sess { }; } -pub fn new_parse_sess_special_handler(sh: span_handler, cm: @codemap::CodeMap) +fn new_parse_sess_special_handler(sh: span_handler, cm: @codemap::CodeMap) -> parse_sess { return @{cm: cm, mut next_id: 1, @@ -80,17 +105,15 @@ pub fn new_parse_sess_special_handler(sh: span_handler, cm: @codemap::CodeMap) }; } -pub fn parse_crate_from_file(input: &Path, cfg: ast::crate_cfg, +fn parse_crate_from_file(input: &Path, cfg: ast::crate_cfg, sess: parse_sess) -> @ast::crate { let p = new_crate_parser_from_file(sess, cfg, input); let r = p.parse_crate_mod(cfg); return r; } -pub fn parse_crate_from_source_str(name: ~str, - source: @~str, - cfg: ast::crate_cfg, - sess: parse_sess) -> @ast::crate { +fn parse_crate_from_source_str(name: ~str, source: @~str, cfg: ast::crate_cfg, + sess: parse_sess) -> @ast::crate { let p = new_parser_from_source_str(sess, cfg, name, codemap::FssNone, source); let r = p.parse_crate_mod(cfg); @@ -98,10 +121,8 @@ pub fn parse_crate_from_source_str(name: ~str, return r; } -pub fn parse_expr_from_source_str(name: ~str, - source: @~str, - cfg: ast::crate_cfg, - sess: parse_sess) -> @ast::expr { +fn parse_expr_from_source_str(name: ~str, source: @~str, cfg: ast::crate_cfg, + sess: parse_sess) -> @ast::expr { let p = new_parser_from_source_str(sess, cfg, name, codemap::FssNone, source); let r = p.parse_expr(); @@ -109,12 +130,9 @@ pub fn parse_expr_from_source_str(name: ~str, return r; } -pub fn parse_item_from_source_str(name: ~str, - source: @~str, - cfg: ast::crate_cfg, - +attrs: ~[ast::attribute], - sess: parse_sess) - -> Option<@ast::item> { +fn parse_item_from_source_str(name: ~str, source: @~str, cfg: ast::crate_cfg, + +attrs: ~[ast::attribute], + sess: parse_sess) -> Option<@ast::item> { let p = new_parser_from_source_str(sess, cfg, name, codemap::FssNone, source); let r = p.parse_item(attrs); @@ -122,11 +140,9 @@ pub fn parse_item_from_source_str(name: ~str, return r; } -pub fn parse_stmt_from_source_str(name: ~str, - source: @~str, - cfg: ast::crate_cfg, - +attrs: ~[ast::attribute], - sess: parse_sess) -> @ast::stmt { +fn parse_stmt_from_source_str(name: ~str, source: @~str, cfg: ast::crate_cfg, + +attrs: ~[ast::attribute], + sess: parse_sess) -> @ast::stmt { let p = new_parser_from_source_str(sess, cfg, name, codemap::FssNone, source); let r = p.parse_stmt(attrs); @@ -134,10 +150,8 @@ pub fn parse_stmt_from_source_str(name: ~str, return r; } -pub fn parse_tts_from_source_str(name: ~str, - source: @~str, - cfg: ast::crate_cfg, - sess: parse_sess) -> ~[ast::token_tree] { +fn parse_tts_from_source_str(name: ~str, source: @~str, cfg: ast::crate_cfg, + sess: parse_sess) -> ~[ast::token_tree] { let p = new_parser_from_source_str(sess, cfg, name, codemap::FssNone, source); p.quote_depth += 1u; @@ -146,7 +160,7 @@ pub fn parse_tts_from_source_str(name: ~str, return r; } -pub fn parse_from_source_str<T>(f: fn (p: Parser) -> T, +fn parse_from_source_str<T>(f: fn (p: Parser) -> T, name: ~str, ss: codemap::FileSubstr, source: @~str, cfg: ast::crate_cfg, sess: parse_sess) @@ -162,7 +176,7 @@ pub fn parse_from_source_str<T>(f: fn (p: Parser) -> T, move r } -pub fn next_node_id(sess: parse_sess) -> node_id { +fn next_node_id(sess: parse_sess) -> node_id { let rv = sess.next_id; sess.next_id += 1; // ID 0 is reserved for the crate and doesn't actually exist in the AST @@ -170,7 +184,7 @@ pub fn next_node_id(sess: parse_sess) -> node_id { return rv; } -pub fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg, +fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg, +name: ~str, +ss: codemap::FileSubstr, source: @~str) -> Parser { let filemap = sess.cm.new_filemap_w_substr(name, ss, source); @@ -179,7 +193,7 @@ pub fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg, return Parser(sess, cfg, srdr as reader); } -pub fn new_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, +fn new_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, path: &Path) -> Result<Parser, ~str> { match io::read_whole_file_str(path) { result::Ok(move src) => { @@ -197,7 +211,7 @@ pub fn new_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, /// Create a new parser for an entire crate, handling errors as appropriate /// if the file doesn't exist -pub fn new_crate_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, +fn new_crate_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, path: &Path) -> Parser { match new_parser_from_file(sess, cfg, path) { Ok(move parser) => move parser, @@ -209,7 +223,7 @@ pub fn new_crate_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, /// Create a new parser based on a span from an existing parser. Handles /// error messages correctly when the file does not exist. -pub fn new_sub_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, +fn new_sub_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, path: &Path, sp: span) -> Parser { match new_parser_from_file(sess, cfg, path) { Ok(move parser) => move parser, @@ -219,7 +233,7 @@ pub fn new_sub_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, } } -pub fn new_parser_from_tts(sess: parse_sess, cfg: ast::crate_cfg, +fn new_parser_from_tts(sess: parse_sess, cfg: ast::crate_cfg, tts: ~[ast::token_tree]) -> Parser { let trdr = lexer::new_tt_reader(sess.span_diagnostic, sess.interner, None, tts); |
