From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:700:3204::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id qJi8LypJ4mVVRwAAbAwnHQ (envelope-from ) for ; Fri, 01 Mar 2024 22:31:22 +0100 Received: from aspmx1.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id wFjwKCpJ4mWYRwAAe85BDQ (envelope-from ) for ; Fri, 01 Mar 2024 22:31:22 +0100 X-Envelope-To: patches@johnnyrichard.com Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=lists.sr.ht header.s=20240113 header.b=kf+9Qz+n; dkim=pass header.d=johnnyrichard.com header.s=key1 header.b=CNXDt1Fv; dmarc=pass (policy=quarantine) header.from=johnnyrichard.com; spf=pass (aspmx1.migadu.com: domain of lists@sr.ht designates 46.23.81.152 as permitted sender) smtp.mailfrom=lists@sr.ht ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=johnnyrichard.com; s=key1; t=1709328682; 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=/ibFwwqW9ZrjWVwJfp+p7lUobHc1tI56LgajY/aQLQQ=; b=tk/o933WMI41HqEl6gB/Adbwo57BA0XHrjxS+OZKi0RDD1aCk/YjNnK0+nHLfMK6IPlnn6 kTFNqubdHCAfZwWXIOBt2myjBYslwiSirVFnOsje3xLFTaCYC8CiSkK6UMDgYVuuZ10n6o IQR2G4j+XsiS1WUFGxrhtN+mbdp6JCnczuhem0r2833pyr/i6YMMvVJeDKJwd/Ge0yzfsE Y3n0a/qjqTSunrsGmUCMR9hm0QJUf1aBuHv/ALzoxc1/O6ZBAqtoY3c9zqJNad5OR/Dd1W 3GERNE/XwODIsZleXzihqfPgqOiO5GHZfWkmiXExKprF9mZJcRHBjKzInpp6wg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=lists.sr.ht header.s=20240113 header.b=kf+9Qz+n; dkim=pass header.d=johnnyrichard.com header.s=key1 header.b=CNXDt1Fv; dmarc=pass (policy=quarantine) header.from=johnnyrichard.com; spf=pass (aspmx1.migadu.com: domain of lists@sr.ht designates 46.23.81.152 as permitted sender) smtp.mailfrom=lists@sr.ht ARC-Seal: i=1; s=key1; d=johnnyrichard.com; t=1709328682; a=rsa-sha256; cv=none; b=QrXontHgRm4hQF8xWqvbFJcdSsbQF4sMjVuhZAv4lecNHM6IBuz8ozLWSyH04D7G7ZzJPg gHbTIZzdzIhFBbQ7PH0S8i9P4a2NpbRosgiHjZFnD/tDA6zTT8RKFqqk0c1/RD0JU57ubT 0hcfSiyH/D6Ul7K/sjsTKyZXZ7A1kFumEaKouBghrpQ5H46wQE0sqJK3Mkr240JSZYRHua YOiWcJX0D6/cHjMSofD13UIKj1MCxiYbQcymSL2Ep2Xvop04F40d2SRlxOXgEIDXZYZtSB FGGwPzZQlK2e6/UQ1WrEIE7iOBRW9z12zNeX0kFC8SElB5SuGts1p3uvsw5++g== 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 86F4F5286A for ; Fri, 1 Mar 2024 22:31:22 +0100 (CET) DKIM-Signature: a=rsa-sha256; bh=g+FzAe2id60ou42LtBU7CTRC8j9KBeCLbVLKfbfD/uc=; 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=1709328682; v=1; b=kf+9Qz+nm72xPRZN23zdDVXGzhsECdRD+HU5slrO/ZfKHkEugaiANouz5KfHem1uMTo5D8ih X5l0KH1tmv2hZrmNqoFPHWysdXaqgP6wRwqMMuX87H9Z3xBqXnHtq/dmOoX+Tkg2qnDiuh2wk9Y LuLyBd/R+Q38weatg4VnyjGAUgA6pM8kN5dQVel9X0ITlOTzB7DUDnU01XV28HNZD6b8xLKZTCF 6oZevdgAGyNe5IL03/LIt+sUhJQLsrcoz5Z49WPlMjoucHidbIna0KBJY39FPkzafNb1ExaxmpV srpTZgYshRHZejp9mo0tGcfAZDuEPMngGsQgiRlf+oHIA== Received: from lists.sr.ht (unknown [46.23.81.154]) by mail-a.sr.ht (Postfix) with ESMTPSA id 4A1FD2038E for ; Fri, 1 Mar 2024 21:31:22 +0000 (UTC) Received: from out-177.mta1.migadu.com (out-177.mta1.migadu.com [95.215.58.177]) by mail-a.sr.ht (Postfix) with ESMTPS id 9E23A202B5 for <~johnnyrichard/olang-devel@lists.sr.ht>; Fri, 1 Mar 2024 21:31:21 +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=1709328681; 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=/ibFwwqW9ZrjWVwJfp+p7lUobHc1tI56LgajY/aQLQQ=; b=CNXDt1Fvg1paL9UpfC2CukoZ+m0d+VK9hbYFXZjwqfsz88y6vWa4uNUKptYFFx8H2g2L1N m+K24vn+7VY0/XBaM/L7Ok5Cx9gOiUwkEwwPYoR8Nn6yKkvF692izxbT3Ml/OIi4dcido2 Ef8F1XuMG/gcq5sqxa9ObqWnlpqYtVhqtr9VSV9Tn8mzCsa6F8t0BI9aDYXDSAx3bTefux wyHeCWTJrZbQs/tgCWCTmbPV+1ze4p6DC8IQFp+5uHzhn7C56tF8E/q9NIDd1XAGj0FthH +Cp428RNqLh8zyTxWoQThBXV7kP7EGilNjmlTmYojGnRCqoSyg1B6WeSBj9pSg== From: Johnny Richard To: ~johnnyrichard/olang-devel@lists.sr.ht Cc: Johnny Richard Subject: [PATCH olang v2 0/4] create initial syntax analysis logic Date: Fri, 1 Mar 2024 23:24:05 +0100 Message-ID: <20240301223127.167341-1-johnny@johnnyrichard.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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-Flow: FLOW_IN X-Migadu-Country: NL X-Migadu-Spam-Score: -9.02 X-Spam-Score: -9.02 X-Migadu-Queue-Id: 86F4F5286A X-Migadu-Scanner: mx13.migadu.com X-TUID: WS0Z9gEAo+Oo This patchset implements the initial syntax analysis logic for a small portion of the language. Since the type system contains only a u32 type, the semantic analysis can be postponed. In terms of Abstract Syntax Tree, this patchset also introduces a very basic AST data structure. Johnny Richard (4): string_view: add string view formatter for printf fmt string_view: add string view conversion to uint32_t lexer: add token lookahead capability parser: create simplified parser for tiny AST src/ast.c | 79 +++++++++++++ src/ast.h | 101 +++++++++++++++++ src/lexer.c | 36 ++++++ src/lexer.h | 10 ++ src/parser.c | 202 ++++++++++++++++++++++++++++++++++ src/parser.h | 38 +++++++ src/string_view.c | 11 ++ src/string_view.h | 8 +- tests/unit/parser_test.c | 88 +++++++++++++++ tests/unit/string_view_test.c | 67 +++++++++++ 10 files changed, 639 insertions(+), 1 deletion(-) create mode 100644 src/ast.c create mode 100644 src/ast.h create mode 100644 src/parser.c create mode 100644 src/parser.h create mode 100644 tests/unit/parser_test.c create mode 100644 tests/unit/string_view_test.c -- 2.43.2