summaryrefslogtreecommitdiff
path: root/src/ast/script.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast/script.cpp')
-rw-r--r--src/ast/script.cpp14
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