Return-Path: Delivered-To: rainer Received: from h2774747.stratoserver.net (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) by h2774747.stratoserver.net (Dovecot) with LMTP id IvZsDrUbTV5ZcQAA4+3H6A for ; Wed, 19 Feb 2020 12:27:49 +0100 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by h2774747.stratoserver.net (8.15.2/8.15.2/Debian-3) with ESMTP id 01JBRlfu029015 for ; Wed, 19 Feb 2020 12:27:49 +0100 Received: from relay2.uni-heidelberg.de ([129.206.119.212]) by mx-ha.gmx.net (mxgmx017 [212.227.15.9]) with ESMTP (Nemesis) id 1MANeD-1jBH7u3591-00Bv8e for ; Wed, 19 Feb 2020 12:27:41 +0100 Received: from listserv.uni-heidelberg.de ([129.206.100.94]) by relay2.uni-heidelberg.de with ESMTP; 19 Feb 2020 12:27:42 +0100 Received: from listserv (localhost [127.0.0.1]) by listserv.uni-heidelberg.de (Postfix) with ESMTP id 82A5C126585; Wed, 19 Feb 2020 12:27:34 +0100 (CET) Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 17.0) with spool id 42045376 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Wed, 19 Feb 2020 12:27:34 +0100 Delivered-To: LATEX-L@listserv.uni-heidelberg.de Received: from relay2.uni-heidelberg.de (relay2.uni-heidelberg.de [129.206.119.212]) by listserv.uni-heidelberg.de (Postfix) with ESMTP id 61468124A08 for ; Wed, 19 Feb 2020 12:27:34 +0100 (CET) X-IronPort-MID: 53448262 X-IronPort-RemoteIP: 209.85.221.54 X-IronPort-SenderGroup: UNKNOWNLIST X-IronPort-MailFlowPolicy: $ACCEPTED X-IronPort-Reputation: 2.8 IronPort-PHdr: =?us-ascii?q?9a23=3A5yVaRRLuzBiKHg7W5tmcpTVXNAE6p7X5OBIU4Z?= =?us-ascii?q?M7irVIN56u5InmIFeGu60/llLNVJSBre9Ciq/WvqHsVGgK7IyO9nwPI9RXTx?= =?us-ascii?q?FQr8IQkkQ7BdKdT1XhJavgayI+FdhPRHdq+ni6NQ5eH8OtL0bKrCiK5CUJUg?= =?us-ascii?q?76KRIzI+30HoDIiMHi3eS8/5TPbhVgiz+0YLc0JxKz/k3KrsdDp4xkJ+4qzw?= =?us-ascii?q?fR5HtFf+MD3WRzOVeahArx/O+19Z9ntjtK4rcvqpIGXqL9cKA1C7dfCW18YV?= =?us-ascii?q?o478DqqxTPCDC3yCFNDTcwlRxFS0jf4RXzT823ry378+pw2SWXOcf7V79yVT?= =?us-ascii?q?nwp6FsAATljisKLVtbuCnel9BwgaRHoRmguw03wojaZ5uQPeZ/eaWVdM0TRG?= =?us-ascii?q?5IVMJcHyJbBYb0Y4wKBusHdeFWyuu171EKox+3GQS8LOzqwz5MwHTx2Oxy0u?= =?us-ascii?q?gsFx3HwB11B8gH4zzfqNT4MrtXUPjglvGZi2WeKakMgHGgtNutEFhpu/yHUL?= =?us-ascii?q?NufNCE00QrHhKfyEiWqMnlMjKZ2+AHvnKUqeZtBofNwyYqrR98pj+3y4IikI?= =?us-ascii?q?7M08gfzl7A/Dl00K46INS5TAhwZtvuQ/4y/2mKcpB7RM8vWTQisiI0zrQatI?= =?us-ascii?q?6Tcy0DyZBhzBnaIa/PY82D5RTtU/yUKDFziSd+eb6xsB219FCp1uz2UsTtig?= =?us-ascii?q?RwoyFIk8fBujU27zKOtZfVcvJm5Q/hwzuL3hGJrPxCIAU0mKvXJporz6Q/0J?= =?us-ascii?q?Ye4wzPGSr/mUO+i6HzFA1s8Oym7+37b6XOqZqVNosygQb7eqgjgc2wB+0kPx?= =?us-ascii?q?NGBTDKv7Thkue5pAukHP1DlbUun7PcsYzGKMh+xObxGAJT3os5ql6+AzqgzN?= =?us-ascii?q?UEjCwCJVNBdgiAituhMFXPLfbkSPan1g70wXE7mracZOSnX8meSxqL2K3sdr?= =?us-ascii?q?t89UNGnRA+ydlOvdRJDLBEIP/yVkL1vtHCAVk1Pl/Roa6vBdNj24cZQW/KDL?= =?us-ascii?q?WeNfaYu1uG4uszLvmka4ocuTK7IP8gra2L7zdxiRoGcK+l0IFCInq8EPBvP0?= =?us-ascii?q?iJSXXpi9YFV2wNu0BtBPyvg1qEXzlJYn+0VK9p/TA3BrWtCoLbT5ysiriMj0?= =?us-ascii?q?LZVtVGI3pLAVeWHTL0Zp2JDr0SPTmKLJYrwXQUEKKsQIg72VSyuR/mnvB5e/?= =?us-ascii?q?HM9HR919qr1cAptbaO00hjrXouU5vbiybXEyl1hj9aGWNwhvsk5xUjkhHblv?= =?us-ascii?q?Epy/1ASY4NubUQCl18bdiEiLYibrK6EgPZIoXXFhD8HoTgUWl3FpVrm5cPex?= =?us-ascii?q?ovRI/k10yFhnvwRedSzuzDBYRooP2AmSGreoAljS6BjfdE7RFuQ9MTZzT+1u?= =?us-ascii?q?gmqFeVV8iR1B/A36eyKfZFg3WLrTbfizLI5AYBDkZxSfmXByhOIBuL642jtg?= =?us-ascii?q?WaCObxbNZvegpZlZzYc/UMN42v1AQcAq+kYYWWYnrtyT3pW1DSneLKN9CsIy?= =?us-ascii?q?JEjW3LAUwA2VlJr0yLPgU/GCqt5lnmImc1TgDJZEXhualkpXeyXxVy0geLKk?= =?us-ascii?q?1s1ra4/hQYn/PaR/5BlrQD8DwsrTl5BjPfl5rfFsaAqgx9fa5dfcJ14VFJ0n?= =?us-ascii?q?jcvhB8OZroJr5rh1oXeQB690300BA/BoJFmMks5HQkqWg6Ybqfy09EfiiE0I?= =?us-ascii?q?rYP7TWLizt5knqZfOKnF7Z19mS9+EE7/F541TvsQe1F1YzpnVq194GthnUrp?= =?us-ascii?q?7ODQcUTdfwShNtr0k89+ycOHNkod6IhjV2PKK5syHPwYczCe8s20zmYtFeda?= =?us-ascii?q?OJFQP/F8cXHcfoJOF5/jrhJh8CIu1W87Y5es28cP7TkqSvMuJpgD+2pWtC6Y?= =?us-ascii?q?F5lEmL8mAvL4yAl4ZA2Pye0gadAn3ki0y9t8nshY1eTTQbH2761jK9QYAMOu?= =?us-ascii?q?t9eoEEDWroKMqyjIYb5dalSztT81itAEkD0cmidE+JblDz6gZX0FwevX2tnS?= =?us-ascii?q?bhnm5E1goxp6/a5xTghuHrdR4JIGlOHTAwglLlIIzyhNcfDhHxM1oZ0SC97E?= =?us-ascii?q?O//JB14bxlJjCKE0hNdinyaWplV/no7+fQU4t08Jot9B5vfqG8bFSdEOOvph?= =?us-ascii?q?Ib12b8BTIbym1nMT6tvZr9klpxj2fPdHs=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0B+CQCFGk1egDbdVdFmHQEBAQkBEQU?= =?us-ascii?q?FAYF7gVRQZIEFBDWEFIN6iw5RAQEBBoE3g26GBXWFCYtJCQEBAQEBAQEBAQc?= =?us-ascii?q?BLQIEAQGEQAKCAxwHAQQ0EwIDAQELAQEFAQEBAgECAwQUAQEJDQkIJ4VADIV?= =?us-ascii?q?nAQEBAwEBEBEdARseAwwGBQsNAgImAgIjEQEFARwFAQ0IAQEegwSCSgEDCSU?= =?us-ascii?q?BoGaBBD2LKIEVBQEXgwAFhH4KGScNYgOBMgIHCQEIfCqMJBQGeYEHgTiCbD6?= =?us-ascii?q?EYIJ7gl4El1WYOEeBfpZWBhyOdw2MJqowAgoHBg8jgUaBek0jFWyCO1AYDY4?= =?us-ascii?q?dg3OKVEAzgSmNbQEB?= X-IronPort-AV: E=Sophos;i="5.70,459,1574118000"; d="scan'208";a="53448262" X-MGA-submission: =?us-ascii?q?MDGeKrhZoI38of7ra/9+CxO/BuLEQbhQwB7i36?= =?us-ascii?q?2Y0Kyuy/5JacXVZmm3GmVXUIVS7QlByGYgh26vSGt2q8UeWSle3sfnpw?= =?us-ascii?q?Wra3b2yh1tJl+L36YWg1XaTFwvlbxObWTaSfRFn6IzA1zjUv4XaMim16?= =?us-ascii?q?4xYHLGggAUUZ29OwMUmv33tA=3D=3D?= Received: from mail-wr1-f54.google.com ([209.85.221.54]) by relay2.uni-heidelberg.de with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 19 Feb 2020 12:27:35 +0100 Received: by mail-wr1-f54.google.com with SMTP id e8so83000wrm.5 for ; Wed, 19 Feb 2020 03:27:34 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:to:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=sMMayfro+D7pKgzEpt2sReELXa5atnkeaVgGix4SzCk=; b=TezFjB68MPN5KtyVqBNdxkT7wojY2B/6NPeiQF42qh2s7azdFqY7jfgEh8XwxtgLFO 4zU2ZNza4SAFGyyZ6PTT6BuGR/esY1QaESyulfnehx7tfYY19JWhVG6BxdbaMRhVVcl8 cK4m5ueKbWrZupNWWwYUZ8GgzP2EXtEWtEhy7A2aiBCZOPS5FVBfLjpb+OoVlDt4aZXx 4afNZXzux6FlWvOOMWoxtj1HoBwf8KNpy5GXYb5z+0luaHK2tCs+HTpCEMb2/xuac3OX VerCTVOVgnhXkeZ5kSmHp4OiPYuA4u8X485JyLjxCEk9CEKr9rJ/AFT5zZMd1tmn0B2y hdtw== X-Gm-Message-State: APjAAAWlT2l2Gd0RiaWydQWMUu0nTSelC9YpLt74fA9wCbtXsvkAEI3w nWk5JpVtmplSlT71tjDzaeAXa4Ap X-Google-Smtp-Source: APXvYqwuPfrcHVqYfxOONyy4JGx/lhlPS0zr0cByfVX9vhHGhi/D+ShII3fKBQfvcjMBQq+D5dVcYw== X-Received: by 2002:adf:f44a:: with SMTP id f10mr36782253wrp.16.1582111653263; Wed, 19 Feb 2020 03:27:33 -0800 (PST) Received: from ?IPv6:2a01:e34:ec45:750:882f:8161:31af:cdc8? ([2a01:e34:ec45:750:882f:8161:31af:cdc8]) by smtp.gmail.com with ESMTPSA id a6sm2675603wrm.69.2020.02.19.03.27.31 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 19 Feb 2020 03:27:31 -0800 (PST) References: <3007331580715961.WA.kellysmith12.21gmail.com@listserv.uni-heidelberg.de> <20200219092511.GG10540@thinkarch> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Message-ID: Date: Wed, 19 Feb 2020 12:27:31 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Bruno Le Floch Subject: Re: Discussion: Specialized Syntax To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <20200219092511.GG10540@thinkarch> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: Envelope-To: X-GMX-Antispam: 0 (Mail was not recognized as spam); Detail=V3; X-Spam-Flag: NO X-UI-Filterresults: notjunk:1;V03:K0:9jm1y3QaWN4=:Uk+KEPDkb8BP36xdA/7GS4tEnO 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 Gubs= X-UI-Loop:V01:7wrp06JAdPw=:IDCdPmqexq8FX45iD5dvgPnNNYWCA34nco92ALZrUSY= X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:6LqJKon/g+c=:5xsH2K6iEbgYDt+PhGOcch SR/cBz2fkwiNEjhiKBKU3Ye6tAKclwE9DOu7ckWq4tCd9asPBWzc/tVGWsGd5ErjkrPvQ55dI weV7orFuP3rXVoq8zSEopFaFvdCSZRB+FkWAKoePMlzo6bRmCNvsP1QaAVM9isf8jvcVbd6b5 dWOGPxqxGV/+EBbH6FPPGFcfTiIslJ9kI0LzANzWOkio+MsDwgLEJLIeM/X2WVUP0+hLe3vzO YEUfKlFBP6ZvD6slbD4EpMQcpbawXgrvc1Q8Sq2qMbrR7ouuuDiYJy+6M61V17ozSGqaPLga0 F0+S+GwOsoRgEy5clDcLKKb2tdDXNdjoUNXUWouxAAzLU2XQvy9x08fF6wfVVxOqdb+l4j7vH lgGro4IduRLrMd3yWbwTA77I4k87zv3oj6eilz/CNF/Rn/31EveC3va8wh5bHwOyPwNXA7mIH T76BL8t6lSjYnuA4+rY35SkoZRVMEK8= X-Scanned-By: MIMEDefang 2.78 on 81.169.212.23 Status: R X-Status: X-Keywords: X-UID: 8196 On 2/19/20 10:25 AM, Jonathan Spratte wrote: > Hi, > >> - Defining an environment that sets up active characters to emulate >> traditional BNF syntax is very concise, but comes at the cost of >> delimited arguments and catcode madness. > > You could as well use a letter-by-letter parser that doesn't need altered > category codes. Take a look at the pgf module `parser`. That's not `expl3` > but could give you an idea on what's possible. > > Best, > Jonathan > I've been *toying* for a long time (haven't gone very far) with the idea of writing a parser generator, but I couldn't decide how powerful to make it. One option would be to support "parsing expression grammars" (PEGs), which can be parsed in linear time using a packrat parser (but use a lot of memory, possibly problematic). Another option would be to stick with more traditional things like LL or LR parser. To be honest, I don't know enough about parsers and what useful languages they cover to decide. Thoughts welcome. Best, Bruno