diff options
author | Ben Longbons <b.r.longbons@gmail.com> | 2014-10-29 14:56:55 -0700 |
---|---|---|
committer | Ben Longbons <b.r.longbons@gmail.com> | 2014-10-29 14:56:55 -0700 |
commit | 1a00fe4ea75924bfe594c4d92073cc95eaa2f32d (patch) | |
tree | a6e8992e0821a998236a4dfb5d6f6194a0b7ce97 /src/ast/script.cpp | |
parent | 469991120bcf550b6e2124203103876b6b7be918 (diff) | |
download | tmwa-1a00fe4ea75924bfe594c4d92073cc95eaa2f32d.tar.gz tmwa-1a00fe4ea75924bfe594c4d92073cc95eaa2f32d.tar.bz2 tmwa-1a00fe4ea75924bfe594c4d92073cc95eaa2f32d.tar.xz tmwa-1a00fe4ea75924bfe594c4d92073cc95eaa2f32d.zip |
Item AST
Diffstat (limited to 'src/ast/script.cpp')
-rw-r--r-- | src/ast/script.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/ast/script.cpp b/src/ast/script.cpp index cc67224..ec958e1 100644 --- a/src/ast/script.cpp +++ b/src/ast/script.cpp @@ -18,16 +18,18 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. +#include "../io/line.hpp" + #include "../poison.hpp" namespace tmwa { -namespace script +namespace ast { -namespace parse +namespace script { - Result<ScriptBody> parse_script_body(io::LineCharReader& lr) + Result<ScriptBody> parse_script_body(io::LineCharReader& lr, ScriptOptions opt) { io::LineSpan span; io::LineChar c; @@ -37,7 +39,7 @@ namespace parse { return Err("error: unexpected EOF before '{' in parse_script_body"_s); } - if (c.ch() == ' ' || c.ch() == '\n') + if (c.ch() == ' ' || (!opt.one_line && c.ch() == '\n')) { lr.adv(); continue; @@ -57,6 +59,8 @@ namespace parse { if (!lr.get(c)) return Err(c.error_str("unexpected EOF before '}' in parse_script_body"_s)); + if (opt.one_line && c.ch() == '\n') + return Err(c.error_str("unexpected EOL before '}' in parse_script_body"_s)); accum += c.ch(); span.end = c; lr.adv(); @@ -66,6 +70,6 @@ namespace parse } } } -} // namespace parse } // namespace script +} // namespace ast } // namespace tmwa |