From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0.migadu.com ([2001:41d0:303:5f26::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id oBDkFcFs62VIEwEAbAwnHQ (envelope-from ) for ; Fri, 08 Mar 2024 20:53:37 +0100 Received: from aspmx1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0.migadu.com with LMTPS id aJUYEsFs62U5uwAAqHPOHw (envelope-from ) for ; Fri, 08 Mar 2024 20:53:37 +0100 X-Envelope-To: patches@johnnyrichard.com Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=lists.sr.ht header.s=20240113 header.b=KUDgPP1r; dkim=pass header.d=johnnyrichard.com header.s=key1 header.b=eVeQuv1n; spf=pass (aspmx1.migadu.com: domain of lists@sr.ht designates 46.23.81.152 as permitted sender) smtp.mailfrom=lists@sr.ht; dmarc=pass (policy=quarantine) header.from=johnnyrichard.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=johnnyrichard.com; s=key1; t=1709927617; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:list-id: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=kPwG/lmM5CwGm0hZPAjzxQVSFv4B0wYHFMOox0Vsmlo=; b=xH2YmI5VAE3qgmaeScCj5FWUEN1tFin5h5MkkT7LdDBKSXzoBA4Af+AsWtp7/F+70BNldV BuShj9FFFRTaR09nbapWsBgaV1u8u+2K/VKFwr+z0Hdam8OAaJJb6pPxx3C3jBxDkG1anV 5jpq5H/DbZv164huBEHLS+Bp4dRqTuffu14e/8XqeLaSFYbUgVZh3ehHSf7HJ2JXcscloK TauWpXN+sxa6LU+lEeNl6QBQjhHSaimKIZPmcYpbMiqEfVkGOmcxgZrC2tmNwHqgO/TqBM rxDLzZjTrBxbdlIMSLUNRo8yqIb97/nNVrTHmMV7LgON21WuHjCTx2UvjezegQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=lists.sr.ht header.s=20240113 header.b=KUDgPP1r; dkim=pass header.d=johnnyrichard.com header.s=key1 header.b=eVeQuv1n; spf=pass (aspmx1.migadu.com: domain of lists@sr.ht designates 46.23.81.152 as permitted sender) smtp.mailfrom=lists@sr.ht; dmarc=pass (policy=quarantine) header.from=johnnyrichard.com ARC-Seal: i=1; s=key1; d=johnnyrichard.com; t=1709927617; a=rsa-sha256; cv=none; b=UA95laSxmnw3PzxSyOtBo1F9Bw290l9lIgU0StHzLdHxswbnOOkcRBDgWz5RLVUbPpki+q fkHKuIGeCLZ7VHFY++cAkm8l2kCT5ZWf7hOvUZH1qOVrLu79Wa+IT/+d8tOUITdk16ULLp q6qEdBBkuD95TGhOoHrDkuX2qHAX07+AYNuhGPqlSBQ9y5Hw/PX3/kuEFbeh1D2CvZI/SO uC/zUOzSgURUMKEtYu+b81I6+LVYpewR9u5Yys0a+n4DfZuwAiqICXIK61DNReC275cuAL PXpsd7cgRa6HDKYqMYLHdzA4iLHzXwkjHjjmgyy5YyN7jSFZHT2SURLLmqDniA== Received: from mail-a.sr.ht (mail-a.sr.ht [46.23.81.152]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id B58A21D849 for ; Fri, 8 Mar 2024 20:53:36 +0100 (CET) DKIM-Signature: a=rsa-sha256; bh=JgXvM4pbSJufSMgiQu+70k94D2X+dKIHFm3I63xKDfI=; c=simple/simple; d=lists.sr.ht; h=From:To:Cc:Subject:Date:List-Unsubscribe:List-Subscribe:List-Archive:List-Post:List-ID; q=dns/txt; s=20240113; t=1709927616; v=1; b=KUDgPP1rTQA4iKQMYkFASmeRhHusnONPKVTpcNoWh0cL7whiG/4DnzTIs5ZKfcJ9frr5qV4i JN3bkma8iw1XKhnUed8nhQA8LO1ZCeFpzRZNO5hphj+mSTkJBSsNUOJ9osuRA267mme9GWGUIhn pelspYxmen7TMGurJ9plJgX12BBl+PAIiGDs6kBVVYgU6uXiZ9Aw6cadPWUNOJPDwej7tFCyoFa Xm1Ax7TJitJ5t7a6CKkKwY5G8A0KVld3YPDGOIcjHFo3aLRG3wmRTArqkj1zFsafEZgmrkW4PEJ RjRuN3EmUNbsrx2a1kpeCMcI1WleMjKUQORAuSI/NIOkQ== Received: from lists.sr.ht (unknown [46.23.81.154]) by mail-a.sr.ht (Postfix) with ESMTPSA id 64A252026B for ; Fri, 8 Mar 2024 19:53:36 +0000 (UTC) Received: from out-187.mta0.migadu.com (out-187.mta0.migadu.com [91.218.175.187]) by mail-a.sr.ht (Postfix) with ESMTPS id A6F0620222 for <~johnnyrichard/olang-devel@lists.sr.ht>; Fri, 8 Mar 2024 19:53:35 +0000 (UTC) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=johnnyrichard.com; s=key1; t=1709927614; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=kPwG/lmM5CwGm0hZPAjzxQVSFv4B0wYHFMOox0Vsmlo=; b=eVeQuv1n/BaHrMcY5LUx4+ghGxioD0Obx4hWSpXi64IGchkDLixx0lLzYh8icmGQF48WNN TlUFiMDiGjFAV06MAY54450NB09HenD7utiwlbztcb7dT3RY52mqIgM+jjWhq8NvVNAMxy YtvFKnqWYfBwf09U2aFI2XFxO6dG0L1QfQKQDWVdtmyDRyBF1Lmcd4Uet6bB+jYPzj6PXw tFETd+PlEKtug54B8jO3dosnHaxPlDaU4sn/QIDtz2+T2gR90GSkcq833XIsPWPFVJCiD0 0omIYDJ3EXqxEBY+mdbuu4sMUsFgFr8ckKMuIFKre/KgbaCvn7jYFj+BgXJ1Lw== From: Johnny Richard To: ~johnnyrichard/olang-devel@lists.sr.ht Cc: Johnny Richard Subject: [PATCH olang] parser: abort when parser identifies a syntax error Date: Fri, 8 Mar 2024 21:52:22 +0100 Message-ID: <20240308205358.1046108-1-johnny@johnnyrichard.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Sourcehut-Patchset-Status: PROPOSED List-Unsubscribe: List-Subscribe: List-Archive: Archived-At: List-Post: List-ID: ~johnnyrichard/olang-devel <~johnnyrichard/olang-devel.lists.sr.ht> Sender: ~johnnyrichard/olang-devel <~johnnyrichard/olang-devel@lists.sr.ht> X-Migadu-Country: NL X-Migadu-Flow: FLOW_IN X-Migadu-Scanner: mx12.migadu.com X-Migadu-Spam-Score: -9.05 X-Spam-Score: -9.05 X-Migadu-Queue-Id: B58A21D849 X-TUID: h3RrJ65Q1mQY The current implementation fails with segfault when the parser finds a syntax error. We are not prepared to recover from errors at this moment. This patch aborts when found an expected token and it also improves the error output by showing the wrong token string value. Signed-off-by: Johnny Richard --- Let's postpone syntax error recovery. I want to keep things simple right now. src/parser.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/parser.c b/src/parser.c index a9699be..cfea9ef 100644 --- a/src/parser.c +++ b/src/parser.c @@ -173,18 +173,18 @@ expected_token(parser_t *parser, token_t *token, token_kind_t expected_kind) if (token->kind != expected_kind) { fprintf(stderr, - "%s:%lu:%lu: error: got <%s> token but expect <%s>\n", + "%s:%lu:%lu: error: got '"SV_FMT"' token but expect <%s>\n", parser->file_path, token->location.row + 1, (token->location.offset - token->location.bol) + 1, - token_kind_to_cstr(token->kind), + SV_ARG(token->value), token_kind_to_cstr(expected_kind)); string_view_t line = lexer_get_token_line(parser->lexer, token); fprintf(stderr, "" SV_FMT "\n", SV_ARG(line)); fprintf(stderr, "%*s\n", (int)(token->location.offset - token->location.bol + 1), "^"); - return false; + exit(EXIT_FAILURE); } return true; } base-commit: 35f594370443a2b9f73d2d2ebe573b4cab472be6 -- 2.44.0