Pascal 英语句子语法解析器

本文介绍如何使用Pascal语言实现一个简单的英语句子语法解析器,涵盖语法结构、单词列表和实现方法。通过定义不同的语法元素,如动词、副词、名词等,实现了对基本句子结构的解析。在实现过程中,由于存在函数嵌套,采用forward关键词进行函数声明和实现。
摘要由CSDN通过智能技术生成

一个完整的英语句子,基本的结构包括:主语+谓语+宾语。考虑到主、谓、宾所包含的单词种类比较多,这里只是针对部分单词举例说明实现方法:

语法结构

 <sentence> --> <subject> <verb_phrase> <object>
 <subject> --> <noun_phrase>
 <verb_phrase> --> <verb> | <verb> <adv>
 <object> --> <noun_phrase>
 <verb> --> lifted | saw | found
 <adv> --> quickly | carefully | brilliantly
 <noun_phrase> --> [<adj_phrase>] <noun> [<prep_phrase>]
 <noun> --> cow | alice | book
 <adj_phrase> --> <adj> | <adj> <adj_phrase>
 <adj> --> green | lean | mean
 <prep_phrase> --> <prep> <noun_phrase>
 <prep> --> of | at | with

单词列表

动词: <verb> --> lifted | saw | found
复词:<adv> --> quickly | carefully | brilliantly
名词: <noun> --> cow | alice | book
形容词: <adj> --> green | lean | mean
介词: <prep> --> of | at | with

实现方法

根据语法结构,定义函数/过程 

// online Pascal Compiler : https://www.tutorialspoint.com/compile_pascal_online.php
// share : http://tpcg.io/kZl4QfrI

program HelloWorld(output);

{
 <sentence> --> <subject> <verb_phrase> <object>
 <subject> --> <noun_phrase>
 <verb_phrase> --> <verb> | <verb> <adv>
 <object> --> <noun_phrase>
 <verb> --> lifted | saw | found
 <adv> --> quickly | carefully | brilliantly
 <noun_phrase> --> [<adj_phrase>] <noun> [<prep_phrase>]
 <noun> --> cow | alice | book
 <adj_phrase> --> <adj> | <adj> <adj_phrase>
 <adj> --> green | lean | mean
 <prep_phrase> --> <prep> <noun_phrase>
 <prep> --> of | at | with
}

uses
  SysUtils;

var
  input_text: string;
  next_token: string;
  output_text: string;
  error_message: string;

  token_array: array of string;
  token_capacity: Integer;
  token_number: Integer;
  token_index: Integer;

  function parse_token(input_string: PChar): Boolean; forward;
  function is_invalid_token(token: string): Boolean; forward;

  function is_adj(token: string): Boolean; forward;
  function is_adv(token: string): Boolean; forward;
  function is_prep(token: string): Boolean; forward;
  function is_noun(token: string): Boolean; forward;
  function is_verb(token: string): Boolean; forward;

  function sentence: Boolean; forward;

  function subject: Boolean; forward;

  function verb_phrase: Boolean; forward;
  procedure verb; forward;
  procedure adv; forward
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值